@@ -9,95 +9,26 @@ permissions:
99 contents : write
1010
1111jobs :
12- build-and-release :
13- name : Build and attach binaries
12+ goreleaser :
1413 runs-on : ubuntu-latest
15-
16- strategy :
17- fail-fast : false
18- matrix :
19- include :
20- - goos : linux
21- goarch : amd64
22- - goos : linux
23- goarch : arm64
24- - goos : darwin
25- goarch : amd64
26- - goos : darwin
27- goarch : arm64
28- - goos : windows
29- goarch : amd64
30- - goos : windows
31- goarch : arm64
32-
3314 steps :
34- - name : Check out repository
35- uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
15+ - name : Checkout
16+ uses : actions/checkout@v4
17+ with :
18+ fetch-depth : 0
3619
3720 - name : Set up Go
38- uses : actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6
21+ uses : actions/setup-go@v5
3922 with :
40- go-version : " 1.25.x"
41-
42- - name : Verify build
43- run : |
44- go version
45- go mod download
46- go build ./...
47-
48- - name : Build binary
49- env :
50- CGO_ENABLED : " 0"
51- GOOS : ${{ matrix.goos }}
52- GOARCH : ${{ matrix.goarch }}
53- run : |
54- BIN_NAME=cloudctl
55- OUT_DIR=dist
56- mkdir -p "${OUT_DIR}"
57- if [ "${GOOS}" = "windows" ]; then
58- OUT_BIN="${OUT_DIR}/${BIN_NAME}_${GOOS}_${GOARCH}.exe"
59- else
60- OUT_BIN="${OUT_DIR}/${BIN_NAME}_${GOOS}_${GOARCH}"
61- fi
62- echo "Building ${OUT_BIN}"
63- go build -trimpath -ldflags="-s -w" -o "${OUT_BIN}" .
64- # Mark executable on unix
65- if [ "${GOOS}" != "windows" ]; then
66- chmod +x "${OUT_BIN}"
67- fi
68- echo "OUT_BIN=${OUT_BIN}" >> $GITHUB_ENV
69-
70- - name : Package artifact
71- run : |
72- set -euo pipefail
73- BIN_NAME=cloudctl
74- OUT_DIR=dist
75- ARCHIVE_DIR=pkg
76- mkdir -p "${ARCHIVE_DIR}"
77-
78- FILE_BASE="${BIN_NAME}_${{ matrix.goos }}_${{ matrix.goarch }}"
79- if [ "${{ matrix.goos }}" = "windows" ]; then
80- BIN_PATH="${OUT_DIR}/${FILE_BASE}.exe"
81- ARCHIVE_PATH="${ARCHIVE_DIR}/${FILE_BASE}.zip"
82- (cd "${OUT_DIR}" && zip -9 "../${ARCHIVE_PATH}" "${FILE_BASE}.exe")
83- else
84- BIN_PATH="${OUT_DIR}/${FILE_BASE}"
85- ARCHIVE_PATH="${ARCHIVE_DIR}/${FILE_BASE}.tar.gz"
86- (cd "${OUT_DIR}" && tar -czf "../${ARCHIVE_PATH}" "${FILE_BASE}")
87- fi
88-
89- echo "ARCHIVE_PATH=${ARCHIVE_PATH}" >> $GITHUB_ENV
90- echo "BIN_PATH=${BIN_PATH}" >> $GITHUB_ENV
23+ go-version : " 1.25"
9124
92- - name : Upload artifact to release
93- uses : softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2
25+ - name : Run GoReleaser
26+ uses : goreleaser/goreleaser-action@v6
9427 with :
95- tag_name : ${{ github.ref_name }}
96- files : |
97- ${{ env.ARCHIVE_PATH }}
98- ${{ env.BIN_PATH }}
28+ # either 'goreleaser' (default) or 'goreleaser-pro'
29+ distribution : goreleaser
30+ # 'latest', 'v1.4.4' or a SemVer constraint
31+ version : " ~> v2"
32+ args : release --clean
9933 env :
10034 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
101- draft : false
102- prerelease : ${{ contains(github.ref_name, '-rc') || contains(github.ref_name, '-beta') || contains(github.ref_name, '-alpha') }}
103- continue-on-error : true
0 commit comments