Skip to content
This repository was archived by the owner on Jun 4, 2026. It is now read-only.

Commit e94d4e1

Browse files
committed
build: add release job
1 parent eaef759 commit e94d4e1

1 file changed

Lines changed: 157 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
# generated-from:b0eb0200c898092f9f1bfd3f12f4c62c9f93bf2aff2d1b553c7d2f2700b1d499 DO NOT REMOVE, DO UPDATE
2+
3+
name: Create Release
4+
5+
on:
6+
push:
7+
tags: [ "v*.*.*" ]
8+
9+
jobs:
10+
testing:
11+
name: Testing
12+
runs-on: ${{ matrix.os }}
13+
strategy:
14+
matrix:
15+
os: [ubuntu-latest, macos-latest, windows-latest]
16+
steps:
17+
- name: Set up Go 1.x
18+
uses: actions/setup-go@v5
19+
with:
20+
go-version: stable
21+
id: go
22+
23+
- name: Check out code into the Go module directory
24+
uses: actions/checkout@v4
25+
with:
26+
fetch-depth: 0
27+
28+
- name: Install
29+
run: make install
30+
31+
- name: Check
32+
run: make check
33+
34+
create_release:
35+
name: Create Release
36+
needs: [testing]
37+
runs-on: ubuntu-latest
38+
steps:
39+
- name: Create Release
40+
id: create_release
41+
uses: actions/create-release@v1
42+
env:
43+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
44+
with:
45+
tag_name: ${{ github.ref }}
46+
release_name: Release ${{ github.ref }}
47+
prerelease: true
48+
49+
- name: Output Release URL File
50+
run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
51+
52+
- name: Save Release URL File for publish
53+
uses: actions/upload-artifact@v4
54+
with:
55+
name: release_url
56+
path: release_url.txt
57+
retention-days: 1
58+
59+
publish:
60+
name: Publish
61+
needs: [testing, create_release]
62+
runs-on: ${{ matrix.os }}
63+
strategy:
64+
matrix:
65+
os: [ubuntu-latest, macos-latest, windows-latest]
66+
steps:
67+
- name: Set up Go 1.x
68+
uses: actions/setup-go@v5
69+
with:
70+
go-version: stable
71+
id: go
72+
73+
- name: Check out code into the Go module directory
74+
uses: actions/checkout@v4
75+
76+
- name: Load Release URL File from release job
77+
uses: actions/download-artifact@v4
78+
with:
79+
name: release_url
80+
path: release_url
81+
82+
- name: Install
83+
run: make install
84+
85+
- name: Distribute
86+
run: make dist
87+
88+
- name: Get Release File Name & Upload URL
89+
id: get_release_info
90+
shell: bash
91+
run: |
92+
value=`cat release_url/release_url.txt`
93+
echo ::set-output name=upload_url::$value
94+
env:
95+
TAG_REF_NAME: ${{ github.ref }}
96+
REPOSITORY_NAME: ${{ github.repository }}
97+
98+
- name: Upload Linux Binary
99+
if: runner.os == 'Linux'
100+
uses: actions/upload-release-asset@v1
101+
env:
102+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
103+
with:
104+
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
105+
asset_path: ./bin/rail-msg-sql-linux-amd64
106+
asset_name: rail-msg-sql-linux-amd64
107+
asset_content_type: application/octet-stream
108+
109+
- name: Upload macOS Binary
110+
if: runner.os == 'macOS'
111+
uses: actions/upload-release-asset@v1
112+
env:
113+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
114+
with:
115+
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
116+
asset_path: ./bin/rail-msg-sql-darwin-amd64
117+
asset_name: rail-msg-sql-darwin-amd64
118+
asset_content_type: application/octet-stream
119+
120+
- name: Upload Windows Binary
121+
if: runner.os == 'Windows'
122+
uses: actions/upload-release-asset@v1
123+
env:
124+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
125+
with:
126+
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
127+
asset_path: ./bin/rail-msg-sql.exe
128+
asset_name: rail-msg-sql.exe
129+
asset_content_type: application/octet-stream
130+
131+
docker:
132+
name: Docker
133+
needs: [testing, create_release]
134+
runs-on: ubuntu-latest
135+
steps:
136+
- name: Set up Go 1.x
137+
uses: actions/setup-go@v5
138+
with:
139+
go-version: stable
140+
id: go
141+
142+
- name: Check out code into the Go module directory
143+
uses: actions/checkout@v4
144+
145+
- name: Install
146+
run: make install
147+
148+
- name: Docker
149+
run: make docker
150+
151+
- name: Docker Push
152+
run: |+
153+
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
154+
make docker-push
155+
env:
156+
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
157+
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}

0 commit comments

Comments
 (0)