Skip to content

Commit 5afb0dc

Browse files
authored
Merge pull request #13 from ethpandaops/feat/release-cfg
ci: add goreleaser workflow and extend docker build config
2 parents 737e25a + 307b7f0 commit 5afb0dc

File tree

2 files changed

+129
-0
lines changed

2 files changed

+129
-0
lines changed

.github/workflows/goreleaser.yaml

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
name: goreleaser
2+
3+
on:
4+
push:
5+
tags:
6+
- '*'
7+
workflow_dispatch:
8+
inputs:
9+
frontend_branch:
10+
description: 'Frontend branch to use (e.g., frontend, main)'
11+
required: false
12+
default: 'frontend'
13+
14+
jobs:
15+
goreleaser:
16+
permissions:
17+
contents: write
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout
21+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
22+
with:
23+
fetch-depth: 0
24+
ref: ${{ github.ref }}
25+
26+
- name: Derive release suffix from tag (if it exists)
27+
run: |
28+
# Strip the 'refs/tags/' prefix
29+
TAG_NAME=${GITHUB_REF#refs/tags/}
30+
31+
# Extract suffix from tag name after the last '-' (e.g., 'dencun' from 'v1.0.0-dencun')
32+
RELEASE_SUFFIX=${TAG_NAME##*-}
33+
34+
# Check if the suffix is still a version pattern (e.g., 'v0.0.44'), in which case there's no suffix
35+
if [[ $RELEASE_SUFFIX =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
36+
RELEASE_SUFFIX=""
37+
fi
38+
39+
echo "RELEASE_SUFFIX=$RELEASE_SUFFIX" >> $GITHUB_ENV
40+
41+
echo "Release suffix: $RELEASE_SUFFIX"
42+
43+
- name: Set up Go
44+
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
45+
with:
46+
go-version: '1.25.1'
47+
48+
- name: Run apt-get update
49+
run: sudo apt-get update
50+
51+
- name: Install cross-compiler for linux/arm64
52+
run: sudo apt-get -y install gcc-aarch64-linux-gnu
53+
54+
- name: Install make
55+
run: sudo apt-get -y install make
56+
57+
- name: Set frontend branch
58+
run: |
59+
# Use workflow input if provided, otherwise default to 'frontend'
60+
if [ "${{ github.event.inputs.frontend_branch }}" != "" ]; then
61+
echo "FRONTEND_BRANCH=${{ github.event.inputs.frontend_branch }}" >> $GITHUB_ENV
62+
else
63+
echo "FRONTEND_BRANCH=frontend" >> $GITHUB_ENV
64+
fi
65+
66+
- name: Download and setup frontend
67+
run: |
68+
echo "Using frontend branch: $FRONTEND_BRANCH"
69+
FRONTEND_BRANCH=$FRONTEND_BRANCH make setup-frontend
70+
71+
- name: Set up QEMU
72+
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
73+
74+
- name: Set up Docker Context for Buildx
75+
shell: bash
76+
id: buildx-context
77+
run: |
78+
docker context create builders
79+
80+
- name: Set up Docker Buildx
81+
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
82+
with:
83+
endpoint: builders
84+
85+
- name: Login to DockerHub
86+
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
87+
with:
88+
username: ${{ secrets.DOCKERHUB_USERNAME }}
89+
password: ${{ secrets.DOCKERHUB_TOKEN }}
90+
91+
- name: Update GoReleaser config
92+
run: |
93+
cp .goreleaser.yaml .goreleaser.yaml.new
94+
95+
# If we have a RELEASE_SUFFIX, update the goreleaser config to not set
96+
# the release as the latest
97+
if [[ -n "$RELEASE_SUFFIX" ]]; then
98+
echo "release:" >> .goreleaser.yaml.new
99+
echo " prerelease: true" >> .goreleaser.yaml.new
100+
echo " make_latest: false" >> .goreleaser.yaml.new
101+
fi
102+
103+
- name: Run GoReleaser in Docker
104+
run: |
105+
docker run --rm \
106+
-v ${{ github.workspace }}:/workspace \
107+
-w /workspace \
108+
-e GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} \
109+
-e DOCKER_USERNAME=${{ secrets.DOCKERHUB_USERNAME }} \
110+
-e DOCKER_PASSWORD=${{ secrets.DOCKERHUB_TOKEN }} \
111+
-v /var/run/docker.sock:/var/run/docker.sock \
112+
-e RELEASE_SUFFIX=${{ env.RELEASE_SUFFIX }} \
113+
goreleaser/goreleaser-cross:v1.25.1 release --clean --config .goreleaser.yaml.new

.goreleaser.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,14 @@ dockers:
5353
goos: linux
5454
goarch: amd64
5555
dockerfile: Dockerfile
56+
extra_files:
57+
- Makefile
58+
- go.mod
59+
- go.sum
60+
- cmd
61+
- internal
62+
- web
63+
- config.example.yaml
5664
image_templates:
5765
- "ethpandaops/{{ .ProjectName }}:{{ .Version }}-amd64"
5866
- "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-amd64"
@@ -69,6 +77,14 @@ dockers:
6977
goos: linux
7078
goarch: arm64
7179
dockerfile: Dockerfile
80+
extra_files:
81+
- Makefile
82+
- go.mod
83+
- go.sum
84+
- cmd
85+
- internal
86+
- web
87+
- config.example.yaml
7288
image_templates:
7389
- "ethpandaops/{{ .ProjectName }}:{{ .Version }}-arm64v8"
7490
- "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-arm64v8"

0 commit comments

Comments
 (0)