This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build, push and release (if tag). | |
on: | |
push: | |
tags: | |
- "*-v*" | |
branches: | |
- "firehose-fh3.0" | |
- "release/*" | |
env: | |
REGISTRY: ghcr.io | |
IMAGE_NAME: ${{ github.repository }} | |
jobs: | |
build: | |
strategy: | |
matrix: | |
include: | |
- platform: linux/amd64 | |
platform_suffix: amd64 | |
runner: ubuntu-22.04 | |
- platform: linux/arm64 | |
platform_suffix: arm64 | |
runner: ubuntu-22.04-arm | |
runs-on: [ "${{ matrix.runner }}" ] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Log in to the Container registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Generate docker tags/labels from github build context | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
tags: | | |
type=ref,event=tag,prefix= | |
type=sha,prefix= | |
type=sha,prefix=,suffix=-${{ matrix.platform_suffix }} | |
type=edge,branch=firehose-fh3.0,priority=1 | |
type=edge,branch=release/*,priority=1 | |
flavor: | | |
latest=${{ startsWith(github.ref, 'refs/tags/') && !contains(github.ref, 'beta') && !contains(github.ref, 'rc') }} | |
prefix=geth-,onlatest=true | |
- name: Extract version | |
id: extract-version | |
run: | | |
version="edge" | |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | |
version=${GITHUB_REF#refs/tags/} | |
fi | |
echo "VERSION=${version} (Commit ${GITHUB_SHA::7}, Commit Date $(git show -s --format=%cI))" >> "$GITHUB_OUTPUT" | |
- name: Build and push Docker image (${{ matrix.platform }}) | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
file: ./Dockerfile | |
platforms: ${{ matrix.platform }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
provenance: false | |
build-args: | | |
BUILDNUM="" | |
COMMIT=${{ github.sha }} | |
VERSION=${{ steps.extract-version.outputs.VERSION }} | |
push: | |
needs: build | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- name: Docker login | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Generate docker tags/labels from github build context | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
tags: | | |
type=ref,event=tag,prefix= | |
type=sha,prefix= | |
type=edge,branch=firehose-fh3.0,priority=1 | |
type=edge,branch=release/*,priority=1 | |
type=raw,value=optimism-latest-fh3 | |
flavor: | | |
latest=false | |
sep-tags: "," | |
- name: Extract image | |
id: image | |
run: | | |
echo "ID=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" | |
- name: Create and push manifest images | |
uses: Noelware/[email protected] | |
with: | |
inputs: "${{ steps.meta.outputs.tags }}" | |
images: "${{ steps.image.outputs.ID }}-amd64, ${{ steps.image.outputs.ID }}-arm64" | |
push: true | |
release: | |
if: startsWith(github.ref, 'refs/tags/') | |
needs: build | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: write | |
steps: | |
- name: Extract image | |
id: image | |
run: | | |
echo "ID=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" | |
- name: Extract assets | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
# The --platform are not really needed here, but it removes the warning | |
docker cp $(docker create --platform=linux/amd64 ${{ steps.image.outputs.ID }}-amd64):/usr/local/bin/geth ./geth_linux | |
docker cp $(docker create --platform=linux/arm64 ${{ steps.image.outputs.ID }}-arm64):/usr/local/bin/geth ./geth_linux_arm64 | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
prerelease: ${{ contains(github.ref, 'beta') || contains(github.ref, 'rc') }} | |
files: | | |
./geth_linux | |
./geth_linux_arm64 |