name: PR to update CPE dictionary index on: schedule: - cron: "0 1 * * 1" # every monday at 1 AM workflow_dispatch: permissions: contents: read env: SLACK_NOTIFICATIONS: true jobs: upgrade-cpe-dictionary-index: runs-on: ubuntu-latest permissions: contents: read packages: write if: github.repository == 'anchore/syft' # only run for main repo steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1 with: persist-credentials: false - name: Bootstrap environment uses: ./.github/actions/bootstrap id: bootstrap - name: Login to GitHub Container Registry run: echo "${{ secrets.GITHUB_TOKEN }}" | .tool/oras login ghcr.io -u "$ACTOR" --password-stdin env: ACTOR: ${{ github.actor }} - name: Pull CPE cache from registry run: make generate:cpe-index:cache:pull - name: Update CPE cache from NVD API run: make generate:cpe-index:cache:update env: NVD_API_KEY: ${{ secrets.NVD_API_KEY }} - name: Generate CPE dictionary index run: make generate:cpe-index:build - name: Push updated CPE cache to registry run: make generate:cpe-index:cache:push - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf #v2.2.1 id: generate-token with: app-id: ${{ secrets.TOKEN_APP_ID }} private-key: ${{ secrets.TOKEN_APP_PRIVATE_KEY }} - uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725 #v8.0.0 with: signoff: true delete-branch: true branch: auto/latest-cpe-dictionary-index labels: dependencies commit-message: "chore(deps): update CPE dictionary index" title: "chore(deps): update CPE dictionary index" body: | Update CPE dictionary index based on the latest available CPE dictionary token: ${{ steps.generate-token.outputs.token }} - name: Notify Slack on failure uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a #v2.1.1 with: webhook: ${{ secrets.SLACK_TOOLBOX_WEBHOOK_URL }} webhook-type: incoming-webhook payload: | text: "Syft CPE dictionary index update failed" blocks: - type: section text: type: mrkdwn text: | *Syft CPE dictionary index update failed* • Workflow: `${{ github.workflow }}` • Event: `${{ github.event_name }}` • Job Status: `${{ job.status }}` • <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Run> if: ${{ failure() && env.SLACK_NOTIFICATIONS == 'true' }}