Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add reth-rbuilder as an artifact target in CI #262

Merged
merged 5 commits into from
Dec 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
# they will be requested for review when someone opens a pull request.
* @dvush @ZanCorDX @ferranbt @liamaharon @metachris
/crates/ @dvush @ZanCorDX @ferranbt @liamaharon
* @dvush @ZanCorDX @ferranbt @liamaharon @metachris
/crates/ @dvush @ZanCorDX @ferranbt @liamaharon
/.github/ @dvush @ZanCorDX @ferranbt @liamaharon @metachris @sukoneck
98 changes: 32 additions & 66 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,6 @@ on:
default: false

jobs:
#
# extract-version extracts the version from the tag or the branch name,
# for reuse in later jobs
#
extract-version:
name: Extract version
runs-on: warp-ubuntu-latest-x64-16x
Expand Down Expand Up @@ -55,14 +51,13 @@ jobs:
echo "| \`GITHUB_SHA\` | \`${GITHUB_SHA}\` |" >> $GITHUB_STEP_SUMMARY
echo "| \`VERSION\` | \`${VERSION}\` |" >> $GITHUB_STEP_SUMMARY

#
# build-binary builds a release binary for a variety of platforms
#
build-binary:
name: Build binary
needs: extract-version
if: ${{ github.event.inputs.build-binary == 'true' || github.event_name == 'push'}} # when manually triggered or version tagged
runs-on: ${{ matrix.configs.runner }}
container:
image: ubuntu:22.04
env:
VERSION: ${{ needs.extract-version.outputs.VERSION }}
permissions:
Expand All @@ -75,68 +70,47 @@ jobs:
runner: warp-ubuntu-latest-x64-16x
- target: aarch64-unknown-linux-gnu
runner: warp-ubuntu-latest-arm64-16x
- target: aarch64-apple-darwin
runner: warp-macos-14-arm64-6x
# Paused until docker is pre-installed https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md
# - target: aarch64-apple-darwin
# runner: warp-macos-14-arm64-6x
features:
- ""
- "redact_sensitive"
- "redact-sensitive"

steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 0 # needed for built.rs to get GIT_HEAD_REF

# https://github.com/dtolnay/rust-toolchain
- name: Setup rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
target: ${{ matrix.configs.target }}

# https://github.com/WarpBuilds/rust-cache
- name: Run WarpBuilds/rust-cache
Copy link
Contributor

@ferranbt ferranbt Dec 3, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How does this change affect build times?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good question. it's not significantly different. we're building in parallel for 5-10 minutes per binary, which is a ~1 minute longer. we can reintroduce with a bit of work if build times become an issue.
image

uses: WarpBuilds/rust-cache@v2
with:
cache-on-failure: true

# https://github.com/Mozilla-Actions/sccache-action
- name: Setup sccache-action
uses: mozilla-actions/[email protected]

- name: Set env vars
- name: Install dependencies
run: |
echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV
echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV

- name: Prepare output filename
run: |
if [ -z "${{ matrix.features }}" ]; then
OUTPUT_FILENAME="rbuilder-${VERSION}-${{ matrix.configs.target }}.tar.gz"
else
OUTPUT_FILENAME="rbuilder-${VERSION}-${{ matrix.configs.target }}-${{ matrix.features }}.tar.gz"
fi
echo "OUTPUT_FILENAME=$OUTPUT_FILENAME" >> $GITHUB_ENV
echo "Filename: ${OUTPUT_FILENAME}"
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 # must install git before checkout and set safe.directory after checkout because of container

- name: Build rbuilder binary
run: cargo build --release --features=${{ matrix.features }}

- name: Prepare artifacts
run: |
mkdir -p artifacts
tar -czf "artifacts/${OUTPUT_FILENAME}" -C target/release rbuilder
git config --global --add safe.directory "$(pwd)"
. $HOME/.cargo/env
cargo build --release --features=${{ matrix.features }} --target ${{ matrix.configs.target }}

- name: Upload rbuilder artifact
uses: actions/upload-artifact@v4
with:
name: rbuilder-${{ matrix.configs.target }}${{ matrix.features && '-' }}${{ matrix.features }}
path: target/${{ matrix.configs.target }}/release/rbuilder

# https://github.com/actions/upload-artifact
- name: Upload artifacts
uses: actions/[email protected]
- name: Upload reth-rbuilder artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.OUTPUT_FILENAME }}
path: artifacts/${{ env.OUTPUT_FILENAME }}
name: reth-rbuilder-${{ matrix.configs.target }}${{ matrix.features && '-' }}${{ matrix.features }}
path: target/${{ matrix.configs.target }}/release/reth-rbuilder

#
# draft-release runs after building for various targets, collects artifacts and prepares a draft release
# (only when running against a tag!)
#
draft-release:
name: Draft release
if: ${{ github.event.inputs.draft-release == 'true' || github.event_name == 'push'}} # when manually triggered or version tagged
Expand All @@ -150,7 +124,6 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

# https://github.com/actions/download-artifact
- name: Download artifacts
uses: actions/download-artifact@v4
with:
Expand All @@ -164,7 +137,6 @@ jobs:
for file in *; do sha256sum "$file" >> sha256sums.txt; done;
cat sha256sums.txt

# https://github.com/softprops/action-gh-release
- name: Create release draft
uses: softprops/[email protected]
id: create-release-draft
Expand All @@ -181,12 +153,6 @@ jobs:
echo "### Release Draft: ${{ env.VERSION }}" >> $GITHUB_STEP_SUMMARY
echo "${{ steps.create-release-draft.outputs.url }}" >> $GITHUB_STEP_SUMMARY

#
# build-docker builds a Docker image and pushes it to the GitHub Container Registry at ghcr.io
#
# See also
# - https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry
#
build-docker:
if: ${{ github.event.inputs.build-docker == 'true' }}
name: Build and publish Docker image
Expand Down
Loading