Skip to content

Commit 198f815

Browse files
committed
chore: update build workflow
1 parent 24e7c79 commit 198f815

File tree

2 files changed

+104
-80
lines changed

2 files changed

+104
-80
lines changed

.github/workflows/release.yaml

Lines changed: 104 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,47 +10,123 @@ permissions:
1010
packages: write
1111

1212
env:
13+
IMAGE_NAME: cardano-validator-watcher
14+
BINARY_NAME: cardano-validator-watcher
1315
CHART_NAME: cardano-validator-watcher
1416
CHART_DIRECTORY: charts
1517
REGISTRY: oci://ghcr.io/kilnfi/charts
1618

1719
jobs:
1820
binaries:
19-
runs-on: ubuntu-latest
21+
strategy:
22+
matrix:
23+
os:
24+
- ubuntu-latest
25+
- macos-latest
26+
arch:
27+
- amd64
28+
- arm64
29+
runs-on: ${{ matrix.os }}
30+
env:
31+
ARCH_NAME: ${{ matrix.arch }}
2032
steps:
21-
- name: Checkout repository
33+
- name: Checkout code
2234
uses: actions/checkout@v4
23-
with:
24-
fetch-depth: 0
25-
fetch-tags: true
35+
36+
- name: Export Variables
37+
id: export-variables
38+
run: |
39+
if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
40+
echo "os_name=linux" >> $GITHUB_OUTPUT
41+
elif [ "${{ matrix.os }}" = "macos-latest" ]; then
42+
echo "os_name=darwin" >> $GITHUB_OUTPUT
43+
fi
44+
45+
- name: Install dependencies
46+
run: |
47+
if [ "$OS_NAME" == "linux" ]; then
48+
sudo apt-get update
49+
if [ "${{ matrix.arch }}" == "amd64" ]; then
50+
sudo apt-get install -y build-essential
51+
elif [ "${{ matrix.arch }}" == "arm64" ]; then
52+
sudo apt install -y build-essential gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
53+
fi
54+
elif [ "$OS_NAME" == "darwin" ]; then
55+
brew update
56+
brew install sqlite
57+
fi
58+
env:
59+
OS_NAME: ${{ steps.export-variables.outputs.os_name }}
60+
2661
- name: Set up Go
2762
uses: actions/setup-go@v5
2863
with:
2964
go-version: 1.23
30-
- name: Run GoReleaser
31-
uses: goreleaser/goreleaser-action@v6
65+
66+
- name: Build ${{matrix.os}}-${{matrix.arch}} binary
67+
id: build
68+
run: |
69+
OUTPUT_NAME="${{ env.BINARY_NAME }}_${{ github.ref_name }}_${OS_NAME}_${ARCH_NAME}"
70+
OUTPUT_DIR=dist/${OUTPUT_NAME}
71+
ARCHIVE_NAME="${OUTPUT_NAME}.tar.gz"
72+
73+
# debug
74+
echo "OUTPUT_NAME=${OUTPUT_NAME}"
75+
echo "DIR=${OUTPUT_DIR}"
76+
echo "ARCH=${ARCH_NAME}"
77+
echo "ARCH2=${{ env.ARCH_NAME}}"
78+
79+
echo "output_dir=${OUTPUT_DIR}" >> $GITHUB_OUTPUT
80+
mkdir -p ${OUTPUT_DIR}
81+
82+
if [ "${OS_NAME}" = "linux" ] && [ "${ARCH_NAME}" = "arm64" ]; then
83+
export CC=aarch64-linux-gnu-gcc
84+
export CXX=aarch64-linux-gnu-g++
85+
fi
86+
87+
CGO_ENABLED=1 GOOS=$OS_NAME GOARCH=$ARCH_NAME \
88+
go build -ldflags="-s -w" -o ${OUTPUT_DIR}/${{ env.BINARY_NAME }} cmd/watcher/main.go
89+
tar -czvf ${OUTPUT_DIR}/${ARCHIVE_NAME} -C ${OUTPUT_DIR} ${{ env.BINARY_NAME }}
90+
env:
91+
OS_NAME: ${{ steps.export-variables.outputs.os_name }}
92+
93+
- name: Upload binaries to release
94+
uses: svenstaro/upload-release-action@v2
3295
with:
33-
distribution: goreleaser
34-
version: '~> v2'
35-
args: release --clean
96+
repo_token: ${{ secrets.GITHUB_TOKEN }}
97+
file: "${{ env.DIRECTORY }}/*.tar.gz"
98+
tag: ${{ github.ref_name }}
99+
file_glob: true
36100
env:
37-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
101+
DIRECTORY: ${{ steps.build.outputs.output_dir }}
38102

39103
images:
40-
runs-on: ubuntu-latest
104+
needs: binaries
105+
strategy:
106+
matrix:
107+
os:
108+
- ubuntu-latest
109+
arch:
110+
- amd64
111+
- arm64
112+
runs-on: ${{ matrix.os }}
41113
steps:
42114
- name: Checkout repository
43115
uses: actions/checkout@v4
116+
44117
- name: Set up QEMU
45118
uses: docker/setup-qemu-action@v3
119+
46120
- name: Login to GitHub Container Registry
47121
uses: docker/login-action@v3
48122
with:
49123
registry: ghcr.io
50124
username: ${{ github.actor }}
51125
password: ${{ secrets.GITHUB_TOKEN }}
126+
52127
- name: Set up Docker Buildx
53128
uses: docker/setup-buildx-action@v3
129+
54130
- uses: docker/build-push-action@v6
55131
name: Build & Push Container Images
56132
with:
@@ -59,26 +135,32 @@ jobs:
59135
labels: |-
60136
org.opencontainers.image.source=https://github.com/${{ github.repository }}
61137
org.opencontainers.image.revision=${{ github.sha }}
62-
org.opencontainers.image.name=cardano-validator-watcher"
63-
org.opencontainers.image.version=${{ github.ref_name }}"
64-
65-
platforms: linux/amd64,linux/arm64
138+
org.opencontainers.image.name=${{ env.IMAGE_NAME }}
139+
org.opencontainers.image.version=${{ github.ref_name }}
140+
141+
platforms: linux/${{matrix.arch}}
66142
push: true
143+
provenance: false
144+
sbom: false
145+
cache-from: type=gha
146+
cache-to: type=gha,mode=max
67147
tags: |-
68-
ghcr.io/${{ github.repository_owner }}/cardano-validator-watcher:${{ github.ref_name }}
69-
ghcr.io/${{ github.repository_owner }}/cardano-validator-watcher:latest
148+
ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}
149+
ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest
70150
71151
helm-chart:
72152
if: false
73-
needs: images
74153
runs-on: ubuntu-latest
154+
needs: images
75155
steps:
76156
- name: Checkout
77157
uses: actions/checkout@v4
158+
78159
- name: Set up Helm
79160
uses: azure/[email protected]
80161
with:
81162
version: v3.16.4
163+
82164
- name: Verify Chart Version
83165
run: |
84166
TAG=$(echo ${{ github.ref_name }} | sed 's/v//')
@@ -88,15 +170,18 @@ jobs:
88170
exit 1
89171
fi
90172
echo "CHART_VERSION=$CHART_VERSION" >> $GITHUB_ENV
173+
91174
- name: Helm Registry Login
92175
run: |
93176
echo ${{ secrets.GITHUB_TOKEN }} | helm registry login ghcr.io --username ${{ env.USERNAME }} --password-stdin
94177
env:
95178
USERNAME: kilnfi
179+
96180
- name: 'Helm Package'
97181
id: helm-package
98182
run: |
99183
helm package ${{ env.CHART_DIRECTORY }}/${{ env.CHART_NAME }} --version $CHART_VERSION
184+
100185
- name: 'Helm Push'
101186
run: |
102187
helm push ./cardano-validator-watcher-$CHART_VERSION.tgz ${{ env.REGISTRY }}

.goreleaser.yaml

Lines changed: 0 additions & 61 deletions
This file was deleted.

0 commit comments

Comments
 (0)