Update release process (#92)

This commit is contained in:
Seth Vargo 2021-12-22 10:34:57 -05:00 committed by GitHub
parent 1b8ec4e237
commit 5975d7549d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 96 additions and 63 deletions

94
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,94 @@
name: 'release'
on:
push:
branches:
- 'main'
workflow_dispatch:
jobs:
# build compiles the code and creates a pull request of the compiled result if
# there is a diff.
build:
runs-on: 'ubuntu-latest'
steps:
- uses: 'actions/checkout@v2'
- uses: 'actions/setup-node@v2'
with:
node-version: '12.x'
- name: 'npm build'
run: 'npm ci && npm run build'
- name: 'Create pull request'
uses: 'peter-evans/create-pull-request@dcd5fd746d53dd8de555c0f10bca6c35628be47a'
with:
token: '${{ secrets.ACTIONS_BOT_TOKEN }}'
add-paths: 'dist/'
committer: 'google-github-actions-bot <github-actions-bot@google.com>'
author: 'google-github-actions-bot <github-actions-bot@google.com>'
signoff: 'google-github-actions-bot <github-actions-bot@google.com>'
commit-message: 'Build dist'
title: 'chore: build dist'
body: 'Build compiled Typescript'
base: 'main'
branch: 'actions/build'
push-to-fork: 'google-github-actions-bot/auth'
delete-branch: true
# create-pull-request creates a release pull request if there are any
# convential commit changes since the last release.
create-pull-request:
runs-on: 'ubuntu-latest'
steps:
- uses: 'google-github-actions/release-please-action@v2'
with:
token: '${{ secrets.ACTIONS_BOT_TOKEN }}'
release-type: 'node'
bump-minor-pre-major: true
command: 'release-pr'
fork: true
# release does a release on the merge of the release pull request. It also
# updates the floating tag alias for the major version.
release:
runs-on: 'ubuntu-latest'
steps:
- id: 'release'
uses: 'google-github-actions/release-please-action@v2'
with:
release-type: 'node'
bump-minor-pre-major: true
command: 'github-release'
- name: 'Update floating tag'
if: '${{ steps.release.outputs.release_created }}'
uses: 'actions/github-script@v5'
with:
script: |-
const sha = '${{ steps.release.outputs.sha }}'
const major = 'v${{ steps.release.outputs.major }}';
// Try to update the ref first. If that fails, it probably does not
// exist yet, and we should create it.
try {
await github.rest.git.updateRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: `tags/${major}`,
sha: sha,
force: true,
});
core.info(`Updated ${major} to ${sha}`);
} catch(err) {
core.warning(`Failed to create ${major}: ${err}`);
await github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: `refs/tags/${major}`,
sha: sha,
});
core.info(`Created ${major} at ${sha}`);
}

View File

@ -1,58 +0,0 @@
name: 'tag'
on:
push:
tags:
# match vx.y and v x.y.z.w... but not vx
- 'v[0-9]+.*'
jobs:
# pointer parses the incoming tag value and updates the "vX" pointer to the
# same SHA as this tag.
pointer:
name: 'pointer'
runs-on: 'ubuntu-latest'
steps:
- uses: 'actions/github-script@v5'
with:
script: |-
const tag = process.env.GITHUB_REF_NAME;
if(!tag) {
core.setFailed(`Missing tag!`)
return
}
core.info(`Using tag "${tag}"`)
const matches = tag.match(/(v[0-9]+).*/)
if(!matches || matches.length < 2) {
core.setFailed(`Invalid tag "${tag}"`)
return
}
const major = matches[1];
core.info(`Matched to major tag "${major}"`)
// Try to update the ref first. If that fails, it probably does not
// exist yet, and we should create it.
try {
await github.rest.git.updateRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: `tags/${major}`,
sha: context.sha,
force: true,
})
core.info(`Updated "${major}" to "${tag}" (${context.sha})`)
} catch {
core.warning(`Failed to update "${major}" tag (it may not `+
`exist). Trying to create "${major}" now.`)
await github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: `refs/tags/${major}`,
sha: context.sha,
})
core.info(`Created "${major}" at "${tag}" (${context.sha})`)
}

View File

@ -10,7 +10,7 @@ on:
workflow_dispatch: workflow_dispatch:
concurrency: concurrency:
group: '${{github.workflow}}-${{ github.head_ref || github.ref }}' group: '${{ github.workflow }}-${{ github.head_ref || github.ref }}'
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
@ -24,11 +24,8 @@ jobs:
with: with:
node-version: '12.x' node-version: '12.x'
- name: 'npm ci'
run: 'npm ci'
- name: 'npm build' - name: 'npm build'
run: 'npm run build' run: 'npm ci && npm run build'
- name: 'verify compiled' - name: 'verify compiled'
shell: 'bash' shell: 'bash'