Skip to content

Commit 072970a

Browse files
authored
[devbox] Improve release process (#2556)
## Summary Change release process workflow to support both "snapshot" releases (i.e. nightlies, manual development versions) and full releases (done by tagging a commit with a new version). ## How was it tested? I'll test by running the workflow manually. ## Is this change backwards-compatible? Yes.
1 parent bd266b9 commit 072970a

File tree

1 file changed

+41
-18
lines changed

1 file changed

+41
-18
lines changed

.github/workflows/release.yml

Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,77 @@
11
name: release
22

33
on:
4-
# Release on demand
4+
# Build/Release on demand
55
workflow_dispatch:
6-
releaseType:
7-
description: "Release Type"
6+
is_snapshot_release:
7+
description: "Release Snapshot?"
88
required: true
9-
default: "snapshot"
10-
type: choice
11-
options:
12-
- snapshot
9+
default: false
10+
type: boolean
1311
# Nightly releases
1412
schedule:
1513
- cron: "45 8 * * 1-5"
14+
push:
15+
tags:
16+
- "*" # Tags that trigger a new release version
1617

1718
permissions:
1819
contents: write
1920

2021
jobs:
21-
release:
22+
build:
2223
runs-on: ubuntu-latest
2324
steps:
24-
- name: Checkout
25+
- name: Checkout source code
2526
uses: actions/checkout@v3
2627
with:
2728
fetch-depth: 0 # Needed by goreleaser to browse history.
28-
- name: Set up Go
29-
uses: actions/setup-go@v2
29+
- name: Set up go
30+
uses: actions/setup-go@v3
3031
with:
31-
go-version: 1.19
32-
- name: Run tests
32+
go-version-file: ./go.mod
33+
cache: true
34+
- name: Build the module
35+
run: go build -v ./...
36+
- name: Run all tests
3337
run: go test -v ./...
34-
- name: Build with goreleaser
38+
release-snapshot:
39+
runs-on: ubuntu-latest
40+
needs: build
41+
if: ${{ inputs.is_snapshot_release || github.event.schedule }}
42+
steps:
43+
- name: Build snapshot with goreleaser
3544
uses: goreleaser/goreleaser-action@v3
3645
with:
3746
distribution: goreleaser
3847
version: latest
3948
args: release --rm-dist --skip-publish --snapshot
4049
env:
4150
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
42-
- name: Determine release tag
51+
- name: Determine snapshot tag
4352
run: |
44-
TAG=$(ls dist/*_checksums.txt | cut -d '_' -f 2 | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+-dev')
53+
TAG=$(ls dist/*_linux_386.tar.gz | cut -d '_' -f 2 | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+-dev')
4554
echo "release_tag=$TAG" >> $GITHUB_ENV
46-
- name: Publish release to GitHub
55+
- name: Publish snapshot release to GitHub
4756
uses: softprops/action-gh-release@v1
4857
with:
4958
prerelease: true
5059
fail_on_unmatched_files: true
5160
tag_name: ${{ env.release_tag }}
5261
files: |
53-
dist/*_checksums.txt
62+
dist/checksums.txt
5463
dist/*.tar.gz
64+
release:
65+
runs-on: ubuntu-latest
66+
needs: build
67+
# Only release when there's a tag for the release.
68+
if: startsWith(github.ref, 'refs/tags/')
69+
steps:
70+
- name: Release with goreleaser
71+
uses: goreleaser/goreleaser-action@v3
72+
with:
73+
distribution: goreleaser
74+
version: latest
75+
args: release --rm-dist
76+
env:
77+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)