70 lines
2.3 KiB
YAML
70 lines
2.3 KiB
YAML
# 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));
|
|
}
|