Skip to content

Commit

Permalink
feat: Add alpha releases workflow and update goreleaser config (#166)
Browse files Browse the repository at this point in the history
* feat: Add alpha releases workflow and update goreleaser config

* chore(workflow): update tag-release job configuration

* build: update setup-go to v4
  • Loading branch information
samcm authored Aug 30, 2023
1 parent 35844d0 commit 68bbc89
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 12 deletions.
59 changes: 59 additions & 0 deletions .github/workflows/alpha-releases.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: alpha releases

on:
push:
branches:
- 'release/*'

jobs:
tag-release:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.ref }}
token: ${{ secrets.EPOBOT_TOKEN }}
- name: Get latest release version for this release branch
if: startsWith(github.ref, 'refs/heads/release/')
id: latest_version
run: |
# Extract suffix from branch name (e.g., 'dencun' from 'release/dencun')
RELEASE_SUFFIX=${GITHUB_REF#refs/heads/release/}
# Fetch all tags and get the latest that matches the pattern
# Using the refs/tags API
LATEST_VERSION=$(curl --silent "https://api.github.com/repos/$GITHUB_REPOSITORY/git/refs/tags" \
| jq -r --arg suffix "$RELEASE_SUFFIX" '.[] | select(.ref | test("refs/tags/v?[0-9]+\\.[0-9]+\\.[0-9]+-" + $suffix + "$")) | .ref' \
| sed 's|refs/tags/||' | sort -V | tail -n 1)
echo "Found latest $RELEASE_SUFFIX version: $LATEST_VERSION"
# Default to 0.0.0 if no matching release was found
if [[ -z "$LATEST_VERSION" ]]; then
LATEST_VERSION="0.0.0"
fi
# Increment the patch version using bash
LATEST_VERSION=$(echo "$LATEST_VERSION" | awk -F. -v OFS=. '{$NF = $NF + 1;} 1')
VERSION=$LATEST_VERSION-$RELEASE_SUFFIX
echo "Releasing version: $VERSION"
git config --global user.email "ethpandaopsbot@ethereum.org"
git config --global user.name "ethpandaopsbot"
# Log the short commit SHA
SHORT_COMMIT=$(git rev-parse --short HEAD)
echo "Git commit: $SHORT_COMMIT"
git tag -a "$VERSION" -m "Release $VERSION"
echo "RELEASE_SUFFIX=$RELEASE_SUFFIX" >> $GITHUB_ENV
# Push the tag
git push origin "$VERSION"
env:
GITHUB_TOKEN: ${{ secrets.EPOBOT_TOKEN }}
48 changes: 46 additions & 2 deletions .github/workflows/goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,48 @@ on:

jobs:
goreleaser:
runs-on: ubuntu-latest
runs-on:
- environment=production
- size=xxxxlarge
- provider=ethpandaops
- realm=platform
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.ref }}
- name: Derive release suffix from tag (if it exists)
run: |
# Strip the 'refs/tags/' prefix
TAG_NAME=${GITHUB_REF#refs/tags/}
# Extract suffix from tag name after the last '-' (e.g., 'dencun' from 'v1.0.0-dencun')
RELEASE_SUFFIX=${TAG_NAME##*-}
# Check if the suffix is still a version pattern (e.g., 'v0.0.44'), in which case there's no suffix
if [[ $RELEASE_SUFFIX =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
RELEASE_SUFFIX=""
fi
echo "RELEASE_SUFFIX=$RELEASE_SUFFIX" >> $GITHUB_ENV
echo "Release suffix: $RELEASE_SUFFIX"
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.19'
- uses: actions/setup-node@v3
name: Set up Node
with:
node-version: 18
- name: Run apt-get update
run: sudo apt-get update
- name: Install cross-compiler for linux/arm64
run: sudo apt-get -y install gcc-aarch64-linux-gnu
- name: Install make
run: sudo apt-get -y install make
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Context for Buildx
Expand All @@ -33,11 +65,23 @@ jobs:
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Update GoReleaser config
run: |
cp .goreleaser.yaml ../.goreleaser.yaml.new
# If we have a RELEASE_SUFFIX, update the goreleaser config to not set
# the release as the latest
if [[ -n "$RELEASE_SUFFIX" ]]; then
echo "release:" >> ../.goreleaser.yaml.new
echo " prerelease: true" >> ../.goreleaser.yaml.new
echo " make_latest: false" >> ../.goreleaser.yaml.new
fi
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v4
with:
distribution: goreleaser
version: latest
args: release --rm-dist
args: release --clean --config ../.goreleaser.yaml.new
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_SUFFIX: ${{ env.RELEASE_SUFFIX }}
20 changes: 10 additions & 10 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ dockers:
dockerfile: goreleaser-scratch.Dockerfile
image_templates:
- "ethpandaops/{{ .ProjectName }}:{{ .Version }}-amd64"
- "ethpandaops/{{ .ProjectName }}:latest-amd64"
- "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-amd64"
build_flag_templates:
- "--platform=linux/amd64"
- "--label=org.opencontainers.image.created={{.Date}}"
Expand All @@ -59,7 +59,7 @@ dockers:
dockerfile: goreleaser-scratch.Dockerfile
image_templates:
- "ethpandaops/{{ .ProjectName }}:{{ .Version }}-arm64v8"
- "ethpandaops/{{ .ProjectName }}:latest-arm64v8"
- "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-arm64v8"
build_flag_templates:
- "--platform=linux/arm64/v8"
- "--label=org.opencontainers.image.created={{.Date}}"
Expand All @@ -73,7 +73,7 @@ dockers:
dockerfile: goreleaser-debian.Dockerfile
image_templates:
- "ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-amd64"
- "ethpandaops/{{ .ProjectName }}:debian-latest-amd64"
- "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-amd64"
build_flag_templates:
- "--platform=linux/amd64"
- "--label=org.opencontainers.image.created={{.Date}}"
Expand All @@ -86,7 +86,7 @@ dockers:
dockerfile: goreleaser-debian.Dockerfile
image_templates:
- "ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-arm64v8"
- "ethpandaops/{{ .ProjectName }}:debian-latest-arm64v8"
- "ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-arm64v8"
build_flag_templates:
- "--platform=linux/arm64/v8"
- "--label=org.opencontainers.image.created={{.Date}}"
Expand All @@ -102,10 +102,10 @@ docker_manifests:
- name_template: ethpandaops/{{ .ProjectName }}:{{ .Version }}-arm64
image_templates:
- ethpandaops/{{ .ProjectName }}:{{ .Version }}-arm64v8
- name_template: ethpandaops/{{ .ProjectName }}:latest
- name_template: ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest
image_templates:
- ethpandaops/{{ .ProjectName }}:latest-amd64
- ethpandaops/{{ .ProjectName }}:latest-arm64v8
- ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-amd64
- ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-arm64v8

## Debian
- name_template: ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian
Expand All @@ -115,7 +115,7 @@ docker_manifests:
- name_template: ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-arm64
image_templates:
- ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-arm64v8
- name_template: ethpandaops/{{ .ProjectName }}:debian-latest
- name_template: ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest
image_templates:
- ethpandaops/{{ .ProjectName }}:debian-latest-amd64
- ethpandaops/{{ .ProjectName }}:debian-latest-arm64v8
- ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-amd64
- ethpandaops/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-arm64v8

0 comments on commit 68bbc89

Please sign in to comment.