1
+ name : teamsacs release
2
+
3
+ on :
4
+ push :
5
+ tags :
6
+ - ' v*'
7
+
8
+ jobs :
9
+ build :
10
+ name : Build and Release
11
+ runs-on : ubuntu-latest
12
+ steps :
13
+ - name : Set up Go
14
+ uses : actions/setup-go@v3
15
+ with :
16
+ go-version : ' 1.21'
17
+
18
+ - name : Check out code
19
+ uses : actions/checkout@v3
20
+
21
+ # Build for ARM64
22
+ - name : Build for ARM64
23
+ run : |
24
+ mkdir -p ./release
25
+ CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -a -ldflags '-s -w -extldflags "-static"' -o ./release/teamsacs_arm64 main.go
26
+
27
+ # Build for AMD64
28
+ - name : Build for AMD64
29
+ run : |
30
+ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -ldflags '-s -w -extldflags "-static"' -o ./release/teamsacs_amd64 main.go
31
+
32
+ - name : Create Release
33
+ id : create_release
34
+ uses : actions/create-release@v1
35
+ env :
36
+ GITHUB_TOKEN : ${{ secrets.MY_GITHUB_TOKEN }}
37
+ with :
38
+ tag_name : ${{ github.ref }}
39
+ release_name : ${{ github.ref }}
40
+ draft : false
41
+ prerelease : false
42
+
43
+ # Upload ARM64 Asset
44
+ - name : Upload Release Asset for ARM64
45
+ uses : actions/upload-release-asset@v1
46
+ env :
47
+ GITHUB_TOKEN : ${{ secrets.MY_GITHUB_TOKEN }}
48
+ with :
49
+ upload_url : ${{ steps.create_release.outputs.upload_url }}
50
+ asset_path : ./release/teamsacs_arm64
51
+ asset_name : teamsacs_arm64
52
+ asset_content_type : application/octet-stream
53
+
54
+ # Upload AMD64 Asset
55
+ - name : Upload Release Asset for AMD64
56
+ uses : actions/upload-release-asset@v1
57
+ env :
58
+ GITHUB_TOKEN : ${{ secrets.MY_GITHUB_TOKEN }}
59
+ with :
60
+ upload_url : ${{ steps.create_release.outputs.upload_url }}
61
+ asset_path : ./release/teamsacs_amd64
62
+ asset_name : teamsacs_amd64
63
+ asset_content_type : application/octet-stream
64
+
65
+ # define job to build and publish docker image
66
+ build-and-push-docker-image :
67
+ name : Build Docker image and push to repositories
68
+ # run only when code is compiling and tests are passing
69
+ runs-on : ubuntu-latest
70
+
71
+ # steps to perform in job
72
+ steps :
73
+ - name : Checkout code
74
+ uses : actions/checkout@v3
75
+
76
+ # setup Docker buld action
77
+ - name : Set up Docker Buildx
78
+ id : buildx
79
+ uses : docker/setup-buildx-action@v2
80
+
81
+ - name : Login to DockerHub
82
+ uses : docker/login-action@v2
83
+ with :
84
+ username : ${{ secrets.DOCKERHUB_USERNAME }}
85
+ password : ${{ secrets.DOCKERHUB_TOKEN }}
86
+
87
+ - name : Login to Github Packages
88
+ uses : docker/login-action@v2
89
+ with :
90
+ registry : ghcr.io
91
+ username : ${{ github.actor }}
92
+ password : ${{ secrets.MY_GITHUB_TOKEN }}
93
+
94
+ - name : Build image and push to Docker Hub and GitHub Container Registry
95
+ uses : docker/build-push-action@v2
96
+ with :
97
+ # 指向带有 Dockerfile 的源代码所在位置的相对路径
98
+ context : ./
99
+ # Note: tags has to be all lower-case
100
+ tags : |
101
+ ca17/teamsacs:${{ github.ref_name }}
102
+ ghcr.io/ca17/teamsacs:${{ github.ref_name }}
103
+ # build on feature branches, push only on main branch
104
+ push : ${{ startsWith(github.ref, 'refs/tags/') }}
105
+
106
+ - name : Image digest
107
+ run : echo ${{ steps.docker_build.outputs.digest }}
0 commit comments