go.yml RawHistoryFolder
1name: Release
2
3on:
4 push:
5 tags:
6 - '*'
7
8jobs:
9 release:
10 runs-on: ubuntu-latest
11 steps:
12 - uses: actions/checkout@v3
13
14 - name: Set up Go
15 uses: actions/setup-go@v3
16 with:
17 go-version: 1.21
18
19 - name: Build
20 run: |
21 go mod tidy
22 mkdir -p bin
23 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -X main.build=${{ github.ref_name }} -X main.commit=${{ github.sha }} -X main.date=$(date +'%Y-%m-%dT%H:%M:%SZ')" -o bin/gordon-linux-amd64 ./cmd/cli/main.go
24 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w -X main.build=${{ github.ref_name }} -X main.commit=${{ github.sha }} -X main.date=$(date +'%Y-%m-%dT%H:%M:%SZ')" -o bin/gordon-windows-amd64.exe ./cmd/cli/main.go
25 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w -X main.build=${{ github.ref_name }} -X main.commit=${{ github.sha }} -X main.date=$(date +'%Y-%m-%dT%H:%M:%SZ')" -o bin/gordon-darwin-amd64 ./cmd/cli/main.go
26 CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "-s -w -X main.build=${{ github.ref_name }} -X main.commit=${{ github.sha }} -X main.date=$(date +'%Y-%m-%dT%H:%M:%SZ')" -o bin/gordon-linux-arm64 ./cmd/cli/main.go
27 CGO_ENABLED=0 GOOS=windows GOARCH=arm64 go build -ldflags "-s -w -X main.build=${{ github.ref_name }} -X main.commit=${{ github.sha }} -X main.date=$(date +'%Y-%m-%dT%H:%M:%SZ')" -o bin/gordon-windows-arm64.exe ./cmd/cli/main.go
28 CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w -X main.build=${{ github.ref_name }} -X main.commit=${{ github.sha }} -X main.date=$(date +'%Y-%m-%dT%H:%M:%SZ')" -o bin/gordon-darwin-arm64 ./cmd/cli/main.go
29
30 - name: Build Docker Images
31 run: |
32 docker buildx build --platform linux/amd64 --tag ghcr.io/bnema/gordon:${{ github.ref_name }}-amd64 --label org.opencontainers.image.created=$(date +'%Y-%m-%dT%H:%M:%SZ') --label org.opencontainers.image.title=gordon --label org.opencontainers.image.revision=${{ github.sha }} --label org.opencontainers.image.version=${{ github.ref_name }} --label org.opencontainers.image.source=https://github.com/bnema/gordon --build-arg BINARY=bin/gordon-linux-amd64 --push .
33 docker buildx build --platform linux/arm64 --tag ghcr.io/bnema/gordon:${{ github.ref_name }}-arm64 --label org.opencontainers.image.created=$(date +'%Y-%m-%dT%H:%M:%SZ') --label org.opencontainers.image.title=gordon --label org.opencontainers.image.revision=${{ github.sha }} --label org.opencontainers.image.version=${{ github.ref_name }} --label org.opencontainers.image.source=https://github.com/bnema/gordon --build-arg BINARY=bin/gordon-linux-arm64 --push .
34 env:
35 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36
37 - name: Create Docker Manifest
38 run: |
39 docker manifest create ghcr.io/bnema/gordon:latest ghcr.io/bnema/gordon:${{ github.ref_name }}-amd64 ghcr.io/bnema/gordon:${{ github.ref_name }}-arm64 --amend
40 docker manifest push ghcr.io/bnema/gordon:latest
41
42 - name: Create Release Artifacts
43 run: |
44 zip -j gordon_${{ github.ref_name }}_linux_amd64.zip gordon-linux-amd64
45 zip -j gordon_${{ github.ref_name }}_windows_amd64.zip gordon-windows-amd64.exe
46 zip -j gordon_${{ github.ref_name }}_darwin_amd64.zip gordon-darwin-amd64
47 zip -j gordon_${{ github.ref_name }}_linux_arm64.zip gordon-linux-arm64
48 zip -j gordon_${{ github.ref_name }}_windows_arm64.zip gordon-windows-arm64.exe
49 zip -j gordon_${{ github.ref_name }}_darwin_arm64.zip gordon-darwin-arm64
50
51 - name: Install Cosign
52 run: |
53 curl -sfL https://raw.githubusercontent.com/sigstore/cosign/main/install.sh | sudo sh
54
55 - name: Create Release
56 uses: actions/create-release@v1
57 with:
58 tag_name: ${{ github.ref }}
59 release_name: Release ${{ github.ref }}
60 draft: true
61 prerelease: false
62 env:
63 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}