-
Notifications
You must be signed in to change notification settings - Fork 794
137 lines (119 loc) · 4.83 KB
/
build_release.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: release
on:
release:
types: [published]
jobs:
build-binaries:
name: build binaries
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.23.x
uses: actions/setup-go@v4
with:
go-version: 1.23.x
id: go
- name: Pull source
uses: actions/checkout@v1
- name: Install gox
run: go install github.com/mitchellh/gox@master
- name: Build release
run: >
gox -output="{{.OS}}/{{.Arch}}/{{.Dir}}" \
-osarch='darwin/arm64 windows/arm64 windows/amd64 linux/arm64 linux/amd64' -ldflags="
-X 'github.com/zhenghaoz/gorse/cmd/version.Version=$(git describe --tags $(git rev-parse HEAD))'
-X 'github.com/zhenghaoz/gorse/cmd/version.GitCommit=$(git rev-parse HEAD)'
-X 'github.com/zhenghaoz/gorse/cmd/version.BuildTime=$(date)'" ./...
env:
CGO_ENABLED: 0
- name: Install zip
uses: montudor/[email protected]
- name: Zip binaries
run: |
zip -j gorse_linux_amd64.zip linux/amd64/gorse-*
zip -j gorse_linux_arm64.zip linux/arm64/gorse-*
zip -j gorse_windows_amd64.zip windows/amd64/gorse-*
zip -j gorse_windows_arm64.zip windows/arm64/gorse-*
zip -j gorse_darwin_arm64.zip darwin/arm64/gorse-*
- name: Upload release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: gorse_*_*.zip
tag: ${{ github.ref }}
overwrite: true
file_glob: true
build-docker-images:
name: build docker images
runs-on: ubuntu-latest
strategy:
matrix:
image: [gorse-master, gorse-server, gorse-worker, gorse-in-one]
steps:
- name: Pull source
uses: actions/checkout@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- id: get_version
uses: battila7/get-version-action@v2
- name: Build docker image
if: github.event.release.prerelease == false
uses: docker/build-push-action@v2
with:
context: .
platforms: linux/amd64,linux/arm64
file: cmd/${{ matrix.image }}/Dockerfile
push: true
tags: |
zhenghaoz/${{ matrix.image }}:latest
zhenghaoz/${{ matrix.image }}:${{ steps.get_version.outputs.major }}.${{ steps.get_version.outputs.minor }}
zhenghaoz/${{ matrix.image }}:${{ steps.get_version.outputs.version-without-v }}
- name: Build prerelease docker image
if: github.event.release.prerelease == true
uses: docker/build-push-action@v2
with:
context: .
platforms: linux/amd64,linux/arm64
file: cmd/${{ matrix.image }}/Dockerfile
push: true
tags: |
zhenghaoz/${{ matrix.image }}:${{ steps.get_version.outputs.version-without-v }}
build-windows-images:
name: build windows images
runs-on: windows-latest
strategy:
matrix:
image: [gorse-master, gorse-server, gorse-worker, gorse-in-one]
steps:
- name: Pull source
uses: actions/checkout@v1
- id: get_version
uses: battila7/get-version-action@v2
- name: Build docker image
if: github.event.release.prerelease == false
run: |
docker login -u $env:DOCKERHUB_USERNAME -p $env:DOCKERHUB_TOKEN
docker build -f cmd/${{ matrix.image }}/Dockerfile.windows `
-t zhenghaoz/${{ matrix.image }}:windowsservercore `
-t zhenghaoz/${{ matrix.image }}:${{ steps.get_version.outputs.major }}.${{ steps.get_version.outputs.minor }}-windowsservercore `
-t zhenghaoz/${{ matrix.image }}:${{ steps.get_version.outputs.version-without-v }}-windowsservercore .
docker image push --all-tags zhenghaoz/${{ matrix.image }}
docker logout
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build prerelease docker image
if: github.event.release.prerelease == true
run: |
docker login -u $env:DOCKERHUB_USERNAME -p $env:DOCKERHUB_TOKEN
docker build -f cmd/${{ matrix.image }}/Dockerfile.windows `
-t zhenghaoz/${{ matrix.image }}:${{ steps.get_version.outputs.version-without-v }}-windowsservercore .
docker image push --all-tags zhenghaoz/${{ matrix.image }}
docker logout
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}