Check for Community Package Updates #1128
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Check for Community Package Updates | |
on: | |
workflow_dispatch: | |
schedule: | |
# Every day at 5:30 and 17:30 UTC. | |
- cron: '30 5,17 * * *' | |
env: | |
GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} | |
jobs: | |
generate-packages-list: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- id: set-matrix | |
run: echo "matrix=$(python generate_package_list.py)" >> $GITHUB_OUTPUT | |
working-directory: community-packages | |
- name: List open pull requests | |
id: list | |
run: source ./scripts/common.sh && echo "titles=$(list_pull_requests)" >> $GITHUB_OUTPUT | |
env: | |
GITHUB_TOKEN: ${{ secrets.PULUMI_BOT_TOKEN }} | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
prs: ${{ steps.list.outputs.titles }} | |
check-for-package-update: | |
name: ${{ matrix.repoSlug }} | |
needs: generate-packages-list | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
# GitHub recommends only issuing 1 API request per second, and never | |
# concurrently. For more information, see: | |
# https://docs.github.com/en/rest/guides/best-practices-for-integrators#dealing-with-secondary-rate-limits | |
max-parallel: 1 | |
matrix: ${{fromJson(needs.generate-packages-list.outputs.matrix)}} | |
steps: | |
- name: Get provider short name | |
id: regex-prov | |
run: | | |
if [[ "$REPO_SLUG" =~ (\/[^-]*-)(.*?$) ]]; then | |
echo "group2=${BASH_REMATCH[2]}" >> $GITHUB_OUTPUT | |
else | |
echo "Regex pattern match error." | |
exit 1 | |
fi | |
env: | |
REPO_SLUG: ${{ matrix.repoSlug }} | |
- name: Check if there is already an open PR | |
if: contains(needs.generate-packages-list.outputs.prs, steps.regex-prov.outputs.group2 ) | |
id: skip-run | |
run: echo "skip=1" >> $GITHUB_OUTPUT | |
- name: Check out registry repo | |
if: steps.skip-run.outputs.skip != 1 | |
uses: actions/checkout@v2 | |
- name: Sleep to prevent hitting secondary rate limits | |
if: steps.skip-run.outputs.skip != 1 | |
run: sleep 1 | |
- name: Install Registrygen CLI | |
if: steps.skip-run.outputs.skip != 1 | |
uses: jaxxstorm/[email protected] | |
with: | |
repo: pulumi/registrygen | |
- name: Check for a new version | |
if: steps.skip-run.outputs.skip != 1 | |
id: version | |
run: | | |
echo 'PROVIDER_VERSION<<EOF' >> $GITHUB_ENV | |
registrygen pkgversion --repoSlug ${{ matrix.repoSlug }} \ | |
>> $GITHUB_ENV | |
echo 'EOF' >> $GITHUB_ENV | |
# This will only be populated if the registry version does not match the latest provider version. | |
- name: Display new version | |
if: env.PROVIDER_VERSION | |
run: echo ${{ env.PROVIDER_VERSION}} | |
# We only need to run the following steps if registrygen found a newer version of the community provider. | |
- name: Generate Package Metadata | |
if: env.PROVIDER_VERSION | |
run: | | |
registrygen metadata --repoSlug ${{ matrix.repoSlug }} --schemaFile ${{ matrix.schemaFile }} \ | |
--version ${{ env.PROVIDER_VERSION }} | |
- name: Create registry PR | |
if: env.PROVIDER_VERSION | |
uses: peter-evans/create-pull-request@v5 | |
env: | |
PROVIDER_SHORT_NAME: ${{ steps.regex-prov.outputs.group2 }} | |
with: | |
token: ${{ secrets.PULUMI_BOT_TOKEN }} | |
committer: Pulumi Bot <[email protected]> | |
author: Pulumi Bot <[email protected]> | |
commit-message: "Publish Package Metadata for ${{ env.PROVIDER_SHORT_NAME }}@${{ env.PROVIDER_VERSION }}" | |
title: "Publish Package Metadata ${{ env.PROVIDER_SHORT_NAME }}@${{ env.PROVIDER_VERSION }}" | |
body: "" | |
branch: "${{ env.PROVIDER_SHORT_NAME }}/${{ github.run_id }}-${{ github.run_number }}" | |
notify: | |
if: failure() | |
name: Send slack notification | |
runs-on: ubuntu-latest | |
needs: [check-for-package-update, generate-packages-list] | |
steps: | |
- name: Slack Notification | |
uses: docker://sholung/action-slack-notify:v2.3.0 | |
env: | |
SLACK_CHANNEL: docs-ops | |
SLACK_COLOR: "#F54242" | |
SLACK_MESSAGE: "generate package metadata failure in pulumi/registry repo :meow_sad:" | |
SLACK_USERNAME: registrybot | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
SLACK_ICON: https://www.pulumi.com/logos/brand/avatar-on-white.png |