Skip to content

[WIP] debug release build #524

[WIP] debug release build

[WIP] debug release build #524

Workflow file for this run

name: release
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
IS_NIGHTLY: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
jobs:
# prepare:
# name: Prepare release
# runs-on: ubuntu-latest
# timeout-minutes: 30
# outputs:
# tag_name: ${{ steps.release_info.outputs.tag_name }}
# release_name: ${{ steps.release_info.outputs.release_name }}
# changelog: ${{ steps.build_changelog.outputs.changelog }}
# steps:
# - uses: actions/checkout@v4
# with:
# fetch-depth: 0
# - name: Compute release name and tag
# id: release_info
# run: |
# if [[ $IS_NIGHTLY ]]; then
# echo "tag_name=nightly-${GITHUB_SHA}" >> $GITHUB_OUTPUT
# echo "release_name=foundry-zksync Nightly ($(date '+%Y-%m-%d'))" >> $GITHUB_OUTPUT
# else
# echo "tag_name=${GITHUB_REF_NAME}" >> $GITHUB_OUTPUT
# echo "release_name=foundry-zksync@${GITHUB_REF_NAME}" >> $GITHUB_OUTPUT
# fi
# # Creates a `nightly-SHA` tag for this specific nightly
# # This tag is used for this specific nightly version's release
# # which allows users to roll back. It is also used to build
# # the changelog.
# - name: Create build-specific nightly tag
# if: ${{ env.IS_NIGHTLY }}
# uses: actions/github-script@v7
# env:
# TAG_NAME: ${{ steps.release_info.outputs.tag_name }}
# with:
# script: |
# const createTag = require('./.github/scripts/create-tag.js')
# await createTag({ github, context }, process.env.TAG_NAME)
# - name: Build changelog
# id: build_changelog
# uses: mikepenz/release-changelog-builder-action@v4
# with:
# configuration: "./.github/changelog.json"
# fromTag: ${{ env.IS_NIGHTLY && 'nightly' || '' }}
# toTag: ${{ steps.release_info.outputs.tag_name }}
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
release:
name: ${{ matrix.target }} (${{ matrix.runner }})
runs-on: ${{ matrix.runner }}
timeout-minutes: 240
# needs: prepare
permissions:
# Required to post the release
contents: write
strategy:
fail-fast: false
matrix:
include:
# `runner`: GHA runner label
# `target`: Rust build target triple
# `platform` and `arch`: Used in tarball names
# `svm`: target platform to use for the Solc binary: https://github.com/roynalnaruto/svm-rs/blob/84cbe0ac705becabdc13168bae28a45ad2299749/svm-builds/build.rs#L4-L24
- runner: ubuntu-24.04-github-hosted-16core
target: x86_64-unknown-linux-gnu
svm_target_platform: linux-amd64
platform: linux
arch: amd64
# - runner: ubuntu-22.04-github-hosted-16core
# target: aarch64-unknown-linux-gnu
# svm_target_platform: linux-aarch64
# platform: linux
# arch: arm64
# - runner: macos-latest
# target: x86_64-apple-darwin
# svm_target_platform: macosx-amd64
# platform: darwin
# arch: amd64
# - runner: macos-latest
# target: aarch64-apple-darwin
# svm_target_platform: macosx-aarch64
# platform: darwin
# arch: arm64
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install required Rust targets
run: rustup target add ${{ matrix.target }}
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.target }}
cache-on-failure: true
- name: Build binaries
env:
SVM_TARGET_PLATFORM: ${{ matrix.svm_target_platform }}
shell: bash
run: |
set -eo pipefail
target="${{ matrix.target }}"
flags=()
# Remove jemalloc, only keep `asm-keccak` if applicable
if [[ "$target" != *msvc* && "$target" != "aarch64-unknown-linux-gnu" ]]; then
flags+=(--features asm-keccak)
fi
echo cargo build --release --bin forge --target "$target" "${flags[@]}"
cargo build --release --bin forge --target "$target" "${flags[@]}"
bins=(forge)
for name in "${bins[@]}"; do
bin=./target/$target/release/$name
file "$bin" || true
ldd "$bin" || true
$bin --version || true
done
- name: Store artifact
uses: actions/upload-artifact@v4
with:
name: forge
path: ./target/x86_64-unknown-linux-gnu/release/forge
# cleanup:
# name: Release cleanup
# runs-on: ubuntu-latest
# timeout-minutes: 30
# needs: release
# if: always()
# steps:
# - uses: actions/checkout@v4
# # Moves the `nightly` tag to `HEAD`
# - name: Move nightly tag
# if: ${{ env.IS_NIGHTLY }}
# uses: actions/github-script@v7
# with:
# script: |
# const moveTag = require('./.github/scripts/move-tag.js')
# await moveTag({ github, context }, 'nightly')
# - name: Delete old nightlies
# uses: actions/github-script@v7
# with:
# script: |
# const prunePrereleases = require('./.github/scripts/prune-prereleases.js')
# await prunePrereleases({github, context})