Auto Release #39
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Auto Release" | |
# Only a single job with this concurrency can run at any given time | |
concurrency: release | |
on: | |
# This runs on a schedule by default: | |
schedule: | |
# https://crontab.guru/#6_17_*_*_2 | |
# Every Tuesday at 5:06pm UTC & 9:06am US West Coast. | |
# GitHub Actions defaults to UTC: | |
- cron: '6 17 * * 2' | |
# There is high load on GitHub Actions at the top of the hour: | |
# | |
# Note: The schedule event can be delayed during periods of high loads of | |
# GitHub Actions workflow runs. High load times include the start of every | |
# hour. To decrease the chance of delay, schedule your workflow to run at a | |
# different time of the hour. | |
# | |
# So we run these at a special time, 9:06. Ask @gerhard about it. | |
# And it also supports manual triggering: | |
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatchinputs | |
workflow_dispatch: | |
inputs: | |
release_type: | |
description: 'major|minor|patch|release|prerel' | |
default: 'patch' | |
required: true | |
release_version: | |
description: 'Optional release version, e.g. 0.2.0' | |
required: false | |
jobs: | |
bump_version-tag-release: | |
# ⚠️ If this changes, remember to update the running-workflow-name property | |
name: "Bump version, tag & release" | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Check out" | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: "Ensure that all other checks have succeeded" | |
# https://github.com/lewagon/wait-on-check-action | |
uses: lewagon/[email protected] | |
with: | |
ref: ${{ github.ref }} | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
wait-interval: 10 # polls the GitHub API every 10 every seconds | |
running-workflow-name: "Bump version, tag & release" | |
allowed-conclusions: success | |
- name: "Create next release tag" | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SEMVER_BUMP: ${{ github.event.inputs.release_type }} | |
run: | | |
if [[ -n "${{ github.event.inputs.release_version }}" ]] | |
then | |
next_release_version="v${{ github.event.inputs.release_version }}" | |
else | |
previous_release_version="$(gh api /repos/:owner/:repo/releases --jq '.[0].tag_name')" | |
echo "PREVIOUS RELEASE VERSION: $previous_release_version" | |
# Rather than installing it on every run, we commit it locally so that we have everything we need locally | |
# wget https://raw.githubusercontent.com/fsaintjacques/semver-tool/3.3.0/src/semver | |
# https://github.com/fsaintjacques/semver-tool | |
next_release_version="v$(./semver bump ${SEMVER_BUMP:=patch} $previous_release_version)" | |
fi | |
echo "NEXT RELEASE VERSION: $next_release_version" | |
gh api -X POST /repos/:owner/:repo/git/refs \ | |
--field ref="refs/tags/$next_release_version" \ | |
--field sha="$GITHUB_SHA" | |
- name: "Fetch new tag" | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: "Install Go" | |
uses: actions/setup-go@v2 | |
with: | |
go-version: 1.16 | |
- name: "Release" | |
uses: goreleaser/goreleaser-action@v2 | |
with: | |
args: release --rm-dist --debug | |
env: | |
GITHUB_TOKEN: ${{ secrets.DAGGERCI_TOKEN }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_REGION: us-east-1 |