Skip to content

Commit

Permalink
Merge pull request #127 from ethpandaops/feat/alpha-releases
Browse files Browse the repository at this point in the history
feat(ci): Support alpha releases
  • Loading branch information
samcm authored Aug 24, 2023
2 parents d3ea3f2 + 729e4d8 commit 326cfb1
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 24 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:
goreleaser:
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 }}
35 changes: 31 additions & 4 deletions .github/workflows/goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,22 @@ jobs:
uses: actions/checkout@v3
with:
fetch-depth: 0
- 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@v3
Expand All @@ -28,12 +44,23 @@ jobs:
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Run GoReleaser
- 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 }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_SUFFIX: ${{ env.RELEASE_SUFFIX }}
40 changes: 20 additions & 20 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ dockers:
dockerfile: goreleaser-scratch.Dockerfile
image_templates:
- "samcm/{{ .ProjectName }}:{{ .Version }}-amd64"
- "samcm/{{ .ProjectName }}:latest-amd64"
- "samcm/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-amd64"
- "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,9 +59,9 @@ dockers:
dockerfile: goreleaser-scratch.Dockerfile
image_templates:
- "samcm/{{ .ProjectName }}:{{ .Version }}-arm64v8"
- "samcm/{{ .ProjectName }}:latest-arm64v8"
- "samcm/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-arm64v8"
- "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 @@ -75,9 +75,9 @@ dockers:
dockerfile: goreleaser-debian.Dockerfile
image_templates:
- "samcm/{{ .ProjectName }}:{{ .Version }}-debian-amd64"
- "samcm/{{ .ProjectName }}:debian-latest-amd64"
- "samcm/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-amd64"
- "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 @@ -90,9 +90,9 @@ dockers:
dockerfile: goreleaser-debian.Dockerfile
image_templates:
- "samcm/{{ .ProjectName }}:{{ .Version }}-debian-arm64v8"
- "samcm/{{ .ProjectName }}:debian-latest-arm64v8"
- "samcm/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-arm64v8"
- "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 @@ -108,10 +108,10 @@ docker_manifests:
- name_template: samcm/{{ .ProjectName }}:{{ .Version }}-arm64
image_templates:
- samcm/{{ .ProjectName }}:{{ .Version }}-arm64v8
- name_template: samcm/{{ .ProjectName }}:latest
- name_template: samcm/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest
image_templates:
- samcm/{{ .ProjectName }}:latest-amd64
- samcm/{{ .ProjectName }}:latest-arm64v8
- samcm/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-amd64
- samcm/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}latest-arm64v8

- name_template: ethpandaops/{{ .ProjectName }}:{{ .Version }}
image_templates:
Expand All @@ -120,10 +120,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: samcm/{{ .ProjectName }}:{{ .Version }}-debian
Expand All @@ -133,18 +133,18 @@ docker_manifests:
- name_template: samcm/{{ .ProjectName }}:{{ .Version }}-debian-arm64
image_templates:
- samcm/{{ .ProjectName }}:{{ .Version }}-debian-arm64v8
- name_template: samcm/{{ .ProjectName }}:debian-latest
- name_template: samcm/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest
image_templates:
- samcm/{{ .ProjectName }}:debian-latest-amd64
- samcm/{{ .ProjectName }}:debian-latest-arm64v8
- samcm/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-amd64
- samcm/{{ .ProjectName }}:{{ if .Env.RELEASE_SUFFIX }}{{ .Env.RELEASE_SUFFIX }}-{{ end }}debian-latest-arm64v8
- name_template: ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian
image_templates:
- ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-amd64
- ethpandaops/{{ .ProjectName }}:{{ .Version }}-debian-arm64v8
- 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 326cfb1

Please sign in to comment.