rapid7/metasploit-framework

View on GitHub
.github/workflows/weekly-dependencies-pr.yml

Summary

Maintainability
Test Coverage
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
permissions:
  actions: none
  checks: none
  contents: none
  deployments: none
  id-token: none
  # This action can update/close issues
  issues: write
  discussions: none
  packages: none
  pages: none
  pull-requests: write
  repository-projects: none
  security-events: none
  statuses: none

on:
  push:
    branches:
    - weekly-dependency-updates
    paths:
    - 'Gemfile.lock'

name: Weekly dependency PR workflow

jobs:
  create-pull-request:
    runs-on: ubuntu-latest
    steps:
      - name: Create Pull Request
        uses: actions/github-script@v6
        with:
          script: |
            const { repo, owner } = context.repo;
            console.log('repo:');
            console.log(JSON.stringify(repo, null, 4));
            console.log('owner:');
            console.log(JSON.stringify(owner, null, 4));
            const hasPR = await github.rest.pulls.list({
              owner,
              repo,
              head: owner + ':' + '${{ github.ref_name }}'
            });
            console.log('hasPR:');
            console.log(JSON.stringify({ data: hasPR.data, status: hasPR.status }, null, 4));
            if (Array.isArray(hasPR.data) && !hasPR.data.length) {
              const result = await github.rest.pulls.create({
                title: 'Weekly dependency updates',
                owner,
                repo,
                head: '${{ github.ref_name }}',
                base: 'master',
                body: [
                  'This PR is auto-generated by [actions/github-script](https://github.com/actions/github-script).  ',
                  '`bundle update` revealed the following gems have new version to be evaluated for update.'
                ].join('\n')
              });
              console.log('result:');
              console.log(JSON.stringify({ data: result.data, status: result.status }, null, 4));
              const labelResult = await github.rest.issues.addLabels({
                owner,
                repo,
                issue_number: result.data.number,
                labels: ['automation', 'rn-no-release-notes']
              });
              console.log('labelResult:');
              console.log(JSON.stringify({ data: labelResult.data, status: labelResult.status }, null, 4));
            }