diff --git a/.github/workflows/release-please.yaml b/.github/workflows/release-please.yaml index e4b86d476..3b6cbaf8a 100644 --- a/.github/workflows/release-please.yaml +++ b/.github/workflows/release-please.yaml @@ -10,9 +10,6 @@ permissions: # Run the workflow on push to the main branch and manually on: - pull_request: - branches: - - main push: branches: - main @@ -40,8 +37,6 @@ jobs: needs: release-please uses: ./.github/workflows/release.yml with: - tag: foundry-zksync-v0.0.4 - version: "0.0.4" - # tag: ${{ needs.release-please.outputs.tag_name }} - # version: ${{ (needs.release-please.outputs.tag_name && format('{0}.{1}.{2}', needs.release-please.outputs.major, needs.release-please.outputs.minor, needs.release-please.outputs.patch)) || ''}} + tag: ${{ needs.release-please.outputs.tag_name }} + version: ${{ (needs.release-please.outputs.tag_name && format('{0}.{1}.{2}', needs.release-please.outputs.major, needs.release-please.outputs.minor, needs.release-please.outputs.patch)) || ''}} secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d96034761..1c9382177 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,26 +72,26 @@ jobs: # 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 tag (nightly) - # if: ${{ env.IS_NIGHTLY == 'true' }} - # 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: Create build-specific tag (nightly) + if: ${{ env.IS_NIGHTLY == 'true' }} + 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 (nightly) - # if: ${{ env.IS_NIGHTLY == 'true' }} - # id: build_changelog - # uses: mikepenz/release-changelog-builder-action@v4 - # with: - # configuration: "./.github/changelog.json" - # fromTag: 'nightly' - # toTag: ${{ steps.release_info.outputs.tag_name }} - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Build changelog (nightly) + if: ${{ env.IS_NIGHTLY == 'true' }} + id: build_changelog + uses: mikepenz/release-changelog-builder-action@v4 + with: + configuration: "./.github/changelog.json" + fromTag: 'nightly' + toTag: ${{ steps.release_info.outputs.tag_name }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} release: name: ${{ matrix.target }} (${{ matrix.runner }}) @@ -137,20 +137,20 @@ jobs: with: ref: ${{ inputs.tag || '' }} - # - uses: Swatinem/rust-cache@v2 - # with: - # key: ${{ matrix.target }} - # cache-on-failure: true + - uses: Swatinem/rust-cache@v2 + with: + key: ${{ matrix.target }} + cache-on-failure: true - # - name: Install required Rust targets - # run: rustup target add ${{ matrix.target }} + - name: Install required Rust targets + run: rustup target add ${{ matrix.target }} - # - uses: dtolnay/rust-toolchain@stable - # with: - # targets: ${{ matrix.target }} + - uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} - # - name: Install cross v0.2.5 from source - # run: cargo install cross --git https://github.com/cross-rs/cross --tag v0.2.5 + - name: Install cross v0.2.5 from source + run: cargo install cross --git https://github.com/cross-rs/cross --tag v0.2.5 # We diverge from upstream and build with cross as we're building static binaries - name: Build binaries @@ -158,9 +158,9 @@ jobs: SVM_TARGET_PLATFORM: ${{ matrix.svm_target_platform }} shell: bash run: | - # set -eo pipefail - # target="${{ matrix.target }}" - # flags=() + set -eo pipefail + target="${{ matrix.target }}" + flags=() # Disable asm-keccak, see https://github.com/alloy-rs/core/issues/711 # # Remove jemalloc, only keep `asm-keccak` if applicable @@ -168,16 +168,16 @@ jobs: # flags+=(--features asm-keccak) # fi - # RUSTFLAGS='-C target-feature=+crt-static' OPENSSL_STATIC=1 cross build --release --bin forge --bin cast --target "$target" "${flags[@]}" + RUSTFLAGS='-C target-feature=+crt-static' OPENSSL_STATIC=1 cross build --release --bin forge --bin cast --target "$target" "${flags[@]}" - # bins=(cast forge) - # for name in "${bins[@]}"; do - # bin=./target/$target/release/$name - # file "$bin" || true - # ldd "$bin" || true - # $bin --version || true - # echo "${name}_bin_path=${bin}" >> $GITHUB_ENV - # done + bins=(cast forge) + for name in "${bins[@]}"; do + bin=./target/$target/release/$name + file "$bin" || true + ldd "$bin" || true + $bin --version || true + echo "${name}_bin_path=${bin}" >> $GITHUB_ENV + done - name: Archive binaries id: artifacts @@ -189,76 +189,74 @@ jobs: shell: bash run: | if [ "$PLATFORM_NAME" == "linux" ]; then - # tar -czvf "foundry_zksync_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" -C ./target/${TARGET}/release forge cast - # echo "file_name=foundry_zksync_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" >> $GITHUB_OUTPUT - echo "file_name=foundry_zksync_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" + tar -czvf "foundry_zksync_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" -C ./target/${TARGET}/release forge cast + echo "file_name=foundry_zksync_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" >> $GITHUB_OUTPUT elif [ "$PLATFORM_NAME" == "darwin" ]; then # We need to use gtar here otherwise the archive is corrupt. # See: https://github.com/actions/virtual-environments/issues/2619 - # gtar -czvf "foundry_zksync_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" -C ./target/${TARGET}/release forge cast - # echo "file_name=foundry_zksync_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" >> $GITHUB_OUTPUT - echo "file_name=foundry_zksync_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" + gtar -czvf "foundry_zksync_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" -C ./target/${TARGET}/release forge cast + echo "file_name=foundry_zksync_${VERSION_NAME}_${PLATFORM_NAME}_${ARCH}.tar.gz" >> $GITHUB_OUTPUT fi - # - name: Build man page - # id: man - # if: matrix.target == 'x86_64-unknown-linux-gnu' - # env: - # PLATFORM_NAME: ${{ matrix.platform }} - # TARGET: ${{ matrix.target }} - # VERSION_NAME: ${{ needs.prepare.outputs.version_name }} - # shell: bash - # run: | - # sudo apt-get -y install help2man - # help2man -N ./target/${TARGET}/release/forge > forge.1 - # help2man -N ./target/${TARGET}/release/cast > cast.1 - # gzip forge.1 - # gzip cast.1 - # tar -czvf "foundry_man_${VERSION_NAME}.tar.gz" forge.1.gz cast.1.gz - # echo "foundry_man=foundry_man_${VERSION_NAME}.tar.gz" >> $GITHUB_OUTPUT + - name: Build man page + id: man + if: matrix.target == 'x86_64-unknown-linux-gnu' + env: + PLATFORM_NAME: ${{ matrix.platform }} + TARGET: ${{ matrix.target }} + VERSION_NAME: ${{ needs.prepare.outputs.version_name }} + shell: bash + run: | + sudo apt-get -y install help2man + help2man -N ./target/${TARGET}/release/forge > forge.1 + help2man -N ./target/${TARGET}/release/cast > cast.1 + gzip forge.1 + gzip cast.1 + tar -czvf "foundry_man_${VERSION_NAME}.tar.gz" forge.1.gz cast.1.gz + echo "foundry_man=foundry_man_${VERSION_NAME}.tar.gz" >> $GITHUB_OUTPUT # Creates the release for this specific version - # - name: Create release - # if: ${{ inputs.tag == '' }} - # uses: softprops/action-gh-release@v2 - # with: - # name: ${{ needs.prepare.outputs.release_name }} - # tag_name: ${{ needs.prepare.outputs.tag_name }} - # prerelease: ${{ needs.prepare.outputs.prerelease }} - # body: ${{ needs.prepare.outputs.changelog }} - # files: | - # ${{ steps.artifacts.outputs.file_name }} - # ${{ steps.man.outputs.foundry_man }} + - name: Create release + if: ${{ inputs.tag == '' }} + uses: softprops/action-gh-release@v2 + with: + name: ${{ needs.prepare.outputs.release_name }} + tag_name: ${{ needs.prepare.outputs.tag_name }} + prerelease: ${{ needs.prepare.outputs.prerelease }} + body: ${{ needs.prepare.outputs.changelog }} + files: | + ${{ steps.artifacts.outputs.file_name }} + ${{ steps.man.outputs.foundry_man }} - # - name: Update release-please release artifacts - # if: ${{ inputs.tag != '' }} - # uses: softprops/action-gh-release@v2 - # with: - # tag_name: ${{ inputs.tag }} - # files: | - # ${{ steps.artifacts.outputs.file_name }} - # ${{ steps.man.outputs.foundry_man }} + - name: Update release-please release artifacts + if: ${{ inputs.tag != '' }} + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ inputs.tag }} + files: | + ${{ steps.artifacts.outputs.file_name }} + ${{ steps.man.outputs.foundry_man }} - # - name: Binaries attestation - # uses: actions/attest-build-provenance@v2 - # with: - # subject-path: | - # ${{ env.cast_bin_path }} - # ${{ env.forge_bin_path }} + - name: Binaries attestation + uses: actions/attest-build-provenance@v2 + with: + subject-path: | + ${{ env.cast_bin_path }} + ${{ env.forge_bin_path }} - # # If this is a nightly release, it also updates the release - # # tagged `nightly` for compatibility with `foundryup` - # - name: Update nightly release - # if: ${{ env.IS_NIGHTLY == 'true' }} - # uses: softprops/action-gh-release@v2 - # with: - # name: "Nightly foundry-zksync" - # tag_name: "nightly" - # prerelease: true - # body: ${{ needs.prepare.outputs.changelog }} - # files: | - # ${{ steps.artifacts.outputs.file_name }} - # ${{ steps.man.outputs.foundry_man }} + # If this is a nightly release, it also updates the release + # tagged `nightly` for compatibility with `foundryup` + - name: Update nightly release + if: ${{ env.IS_NIGHTLY == 'true' }} + uses: softprops/action-gh-release@v2 + with: + name: "Nightly foundry-zksync" + tag_name: "nightly" + prerelease: true + body: ${{ needs.prepare.outputs.changelog }} + files: | + ${{ steps.artifacts.outputs.file_name }} + ${{ steps.man.outputs.foundry_man }} retry-on-failure: if: failure() && fromJSON(github.run_attempt) < 3