Skip to content

Fix compatibility with heminetwork changes #1 #6

Fix compatibility with heminetwork changes #1

Fix compatibility with heminetwork changes #1 #6

Workflow file for this run

# Copyright (c) 2024 Hemi Labs, Inc.
# Use of this source code is governed by the MIT License,
# which can be found in the LICENSE file.
# GitHub Actions workflow to create releases.
# Releases are published from tags matching "v*.*.*".
name: "Release"
on:
push:
tags: [ "v*.*.*" ]
workflow_dispatch:
inputs:
version:
description: "Version"
type: string
required: true
docker:
description: "Build Docker images"
type: boolean
required: true
default: false
release:
description: "Create GitHub release and publish Docker images"
type: boolean
required: true
default: false
concurrency:
group: "release-${{ github.ref }}"
cancel-in-progress: true
jobs:
# Prepare to release
prepare:
name: "Prepare"
runs-on: "ubuntu-latest"
permissions:
contents: read
outputs:
version: "${{ steps.version.outputs.version }}"
tag: "${{ steps.version.outputs.tag }}"
version_type: "${{ steps.version.outputs.type }}"
steps:
- name: "Determine version type"
id: version
env:
RAW_VERSION: "${{ inputs.version || github.ref_name }}"
# This script determines the version type (stability), e.g.
# 1.0.0 = stable, 1.1.0-rc.1 = unstable, 0.1.0 = unstable
run: |
VERSION=$(echo "$RAW_VERSION" | sed -e 's/^v//')
TAG=$(echo "$RAW_VERSION" | sed -E 's/^([^v])/v\1/g')
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
TYPE=unstable
if echo "$VERSION" | grep -Eq '^[1-9][0-9]*\.[0-9]+\.[0-9]+$'; then
TYPE=stable
fi
echo "Detected that $TAG is $TYPE"
echo "type=$TYPE" >> "$GITHUB_OUTPUT"
# Build and publish Docker image
docker:
name: "Docker"
runs-on: "ubuntu-latest"
if: github.event_name == 'push' || inputs.docker
needs: [ "prepare" ]
permissions:
contents: read
packages: write
steps:
- name: "Checkout repository"
uses: actions/checkout@v4
- name: "Setup QEMU"
uses: docker/setup-qemu-action@v3
- name: "Setup Docker Buildx"
uses: docker/setup-buildx-action@v3
- name: "Login to DockerHub"
if: github.event_name == 'push' || inputs.release
uses: docker/login-action@v3
with:
username: "${{ secrets.DOCKERHUB_USERNAME }}"
password: "${{ secrets.DOCKERHUB_TOKEN }}"
- name: "Login to GitHub Container Registry"
if: github.event_name == 'push' || inputs.release
uses: docker/login-action@v3
with:
registry: "ghcr.io"
username: "${{ github.repository_owner }}"
password: "${{ secrets.GITHUB_TOKEN }}"
- name: "Prepare"
id: "prepare"
run: |
echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "$GITHUB_OUTPUT"
- name: "Build and push"
uses: docker/build-push-action@v5
with:
context: "${{ github.workspace }}"
platforms: "amd64"
file: "${{ github.workspace }}/Dockerfile"
push: "${{ github.event_name == 'push' || inputs.release }}"
build-args: |
VERSION=${{ needs.prepare.outputs.version }}
VCS_REF=${{ github.sha }}
BUILD_DATE=${{ steps.prepare.outputs.build_date }}
tags: |
hemilabs/op-geth:latest
hemilabs/op-geth:${{ needs.prepare.outputs.tag }}
ghcr.io/hemilabs/op-geth:latest
ghcr.io/hemilabs/op-geth:${{ needs.prepare.outputs.tag }}
# Create GitHub Release
release:
name: "Release"
runs-on: "ubuntu-latest"
needs: [ "prepare", "docker" ]
permissions:
contents: write
steps:
- name: "Checkout repository"
uses: actions/checkout@v4
- name: "Create GitHub release"
if: github.event_name == 'push' || inputs.release
env:
TAG: "${{ github.ref_name || needs.prepare.outputs.tag }}"
PRERELEASE: "${{ needs.prepare.outputs.version_type == 'unstable' }}"
GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
# Creates a GitHub release using the 'gh' CLI (https://github.com/cli/cli).
# Release notes will be generated by GitHub using the config at .github/release.yml.
run: |
gh release create "$TAG" --generate-notes --prerelease=$PRERELEASE