weekly-dependencies-pr.yml 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
  2. permissions:
  3. actions: none
  4. checks: none
  5. contents: none
  6. deployments: none
  7. id-token: none
  8. # This action can update/close issues
  9. issues: write
  10. discussions: none
  11. packages: none
  12. pages: none
  13. pull-requests: write
  14. repository-projects: none
  15. security-events: none
  16. statuses: none
  17. on:
  18. push:
  19. branches:
  20. - weekly-dependency-updates
  21. paths:
  22. - 'Gemfile.lock'
  23. name: Weekly dependency PR workflow
  24. jobs:
  25. create-pull-request:
  26. runs-on: ubuntu-latest
  27. steps:
  28. - name: Create Pull Request
  29. uses: actions/github-script@v6
  30. with:
  31. script: |
  32. const { repo, owner } = context.repo;
  33. console.log('repo:');
  34. console.log(JSON.stringify(repo, null, 4));
  35. console.log('owner:');
  36. console.log(JSON.stringify(owner, null, 4));
  37. const hasPR = await github.rest.pulls.list({
  38. owner,
  39. repo,
  40. head: owner + ':' + '${{ github.ref_name }}'
  41. });
  42. console.log('hasPR:');
  43. console.log(JSON.stringify({ data: hasPR.data, status: hasPR.status }, null, 4));
  44. if (Array.isArray(hasPR.data) && !hasPR.data.length) {
  45. const result = await github.rest.pulls.create({
  46. title: 'Weekly dependency updates',
  47. owner,
  48. repo,
  49. head: '${{ github.ref_name }}',
  50. base: 'master',
  51. body: [
  52. 'This PR is auto-generated by [actions/github-script](https://github.com/actions/github-script). ',
  53. '`bundle update` revealed the following gems have new version to be evaluated for update.'
  54. ].join('\n')
  55. });
  56. console.log('result:');
  57. console.log(JSON.stringify({ data: result.data, status: result.status }, null, 4));
  58. const labelResult = await github.rest.issues.addLabels({
  59. owner,
  60. repo,
  61. issue_number: result.data.number,
  62. labels: ['automation', 'rn-no-release-notes']
  63. });
  64. console.log('labelResult:');
  65. console.log(JSON.stringify({ data: labelResult.data, status: labelResult.status }, null, 4));
  66. }