Skip to content

[unichain-builder] Release #8

[unichain-builder] Release

[unichain-builder] Release #8

name: "[unichain-builder] Release"
on:
push:
tags:
- "unichain-builder/v*"
workflow_dispatch:
inputs:
draft-release:
default: false
description: "Draft Release"
required: false
type: boolean
build-binary:
default: true
description: "Build Binary"
required: false
type: boolean
features:
default: ""
description: "Binary Compilation Features"
options:
- ""
required: false
type: choice
jobs:
extract-version:
name: Extract version
runs-on: warp-ubuntu-latest-x64-16x
outputs:
VERSION: ${{ steps.extract_version.outputs.VERSION }}
steps:
- name: Extract version
id: extract_version
run: |
if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then
VERSION="${GITHUB_REF#refs/tags/unichain-builder/}"
else
VERSION="$(echo ${GITHUB_SHA} | cut -c1-7)"
fi
echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
echo "| | |" >> $GITHUB_STEP_SUMMARY
echo "| ------------------- | ------------------------------------------------- |" >> $GITHUB_STEP_SUMMARY
echo "| \`GITHUB_REF_TYPE\` | \`${GITHUB_REF_TYPE}\` |" >> $GITHUB_STEP_SUMMARY
echo "| \`GITHUB_REF_NAME\` | \`${GITHUB_REF_NAME}\` |" >> $GITHUB_STEP_SUMMARY
echo "| \`GITHUB_REF\` | \`${GITHUB_REF}\` |" >> $GITHUB_STEP_SUMMARY
echo "| \`GITHUB_SHA\` | \`${GITHUB_SHA}\` |" >> $GITHUB_STEP_SUMMARY
echo "| \`VERSION\` | \`${VERSION}\` |" >> $GITHUB_STEP_SUMMARY
echo "| \`FEATURES\` | \`${{ github.event.inputs.features || 'none' }}\` |" >> $GITHUB_STEP_SUMMARY
build-binary:
name: Build binary
needs: extract-version
if: ${{ github.event.inputs.build-binary == 'true' || github.event_name == 'push'}}
runs-on: ${{ matrix.configs.runner }}
container:
image: ubuntu:22.04
permissions:
contents: write
packages: write
strategy:
matrix:
configs:
- target: x86_64-unknown-linux-gnu
runner: warp-ubuntu-latest-x64-32x
- target: aarch64-unknown-linux-gnu
runner: warp-ubuntu-latest-arm64-32x
features:
- ${{ github.event.inputs.features || '' }}
steps:
- name: Install dependencies
run: |
apt-get update
apt-get install -y \
build-essential \
curl \
git \
libclang-dev \
libssl-dev \
pkg-config \
protobuf-compiler
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
- uses: actions/checkout@v4
- name: Inject PAT token to enable fetching private repos
env:
GH_TOKEN: ${{ secrets.FLASHBOTS_RBLIB_FETCHER }}
run: |
git config --global url."https://x-access-token:${GH_TOKEN}@github.com/flashbots/".insteadOf "https://github.com/flashbots/"
- name: Build unichain-builder binary
env:
CARGO_NET_GIT_FETCH_WITH_CLI: "true" # so that cargo would use `git` cli
run: |
git config --global --add safe.directory "$(pwd)"
. $HOME/.cargo/env
cargo build --release --features=${{ matrix.features }} --target ${{ matrix.configs.target }} --package unichain-builder
- name: Upload unichain-builder artifact
uses: actions/upload-artifact@v4
with:
name: unichain-builder-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.configs.target }}${{ matrix.features && '-' }}${{ matrix.features }}
path: target/${{ matrix.configs.target }}/release/unichain-builder
draft-release:
name: Draft release
if: ${{ github.event.inputs.draft-release == 'true' || github.event_name == 'push'}} # when manually triggered or version tagged
needs: [extract-version, build-binary]
runs-on: warp-ubuntu-latest-x64-16x
env:
VERSION: unichain-builder/${{ needs.extract-version.outputs.VERSION }}
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download artifacts
uses: actions/download-artifact@v5
with:
merge-multiple: false
path: artifacts
- name: Record artifacts checksums
working-directory: artifacts
run: |
for dir in $( find . -type d -name "unichain-builder-*" -printf "%f\n" ); do
mv ./$dir ./$dir.bak
mv ./$dir.bak/unichain-builder ./$dir
rm -r ./$dir.bak
done
find ./ || true
for file in $( find ./ -type f ); do
sha256sum "$file" >> sha256sums.txt
done;
cat sha256sums.txt
- name: Create release draft
uses: softprops/[email protected]
id: create-release-draft
with:
draft: true
files: artifacts/*
generate_release_notes: true
name: ${{ env.VERSION }}
tag_name: ${{ env.VERSION }}
- name: Write Github Step Summary
run: |
echo "---"
echo "### Release Draft: ${{ env.VERSION }}" >> $GITHUB_STEP_SUMMARY
echo "${{ steps.create-release-draft.outputs.url }}" >> $GITHUB_STEP_SUMMARY