Skip to content

Commit

Permalink
split build and test
Browse files Browse the repository at this point in the history
  • Loading branch information
ss-es committed Mar 8, 2024
1 parent 330569b commit 31c635e
Show file tree
Hide file tree
Showing 4 changed files with 214 additions and 70 deletions.
58 changes: 58 additions & 0 deletions .github/workflows/build-self-hosted.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Build (self-hosted)

on:
push:
branches:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ (github.ref == 'refs/heads/main' && github.run_number) || github.ref }}
cancel-in-progress: true

jobs:
build:
strategy:
matrix:
just_variants:
- async-std
#- tokio
runs-on: [self-hosted]
steps:
- uses: dtolnay/rust-toolchain@stable
name: Install Rust
with:
components: "clippy, rustfmt"

- uses: actions/checkout@v4
name: Checkout repository

- uses: Swatinem/rust-cache@v2
name: Enable Rust caching
with:
prefix-key: ${{ matrix.just_variants }}

- name: Build all crates in workspace
run: just ${{ matrix.just_variants }} build
build-release:
strategy:
matrix:
just_variants:
- async-std
#- tokio
runs-on: [self-hosted]
steps:
- uses: dtolnay/rust-toolchain@stable
name: Install Rust
with:
components: "clippy, rustfmt"

- uses: actions/checkout@v4
name: Checkout repository

- uses: Swatinem/rust-cache@v2
name: Enable Rust caching
with:
prefix-key: ${{ matrix.just_variants }}

- name: Build HotShot in release mode
run: just ${{ matrix.just_variants }} build_release
125 changes: 65 additions & 60 deletions .github/workflows/build-and-test.yml → .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build and Test
name: Build

on:
push:
Expand All @@ -15,7 +15,7 @@ concurrency:
cancel-in-progress: true

jobs:
build-and-test:
build:
strategy:
matrix:
just_variants:
Expand All @@ -24,12 +24,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
name: Checkout Repository
name: Checkout repository

- run: rustup toolchain install stable --profile minimal

- uses: Swatinem/rust-cache@v2
name: Enable Rust Caching
name: Enable Rust caching
with:
shared-key: ""
prefix-key: ${{ matrix.just_variants }}
Expand All @@ -39,7 +39,7 @@ jobs:
sudo apt-get update
sudo apt-get install -y protobuf-compiler
- name: Install Just
- name: Install just
run: |
wget https://github.com/casey/just/releases/download/1.14.0/just-1.14.0-x86_64-unknown-linux-musl.tar.gz
tar -vxf just-1.14.0-x86_64-unknown-linux-musl.tar.gz just
Expand All @@ -48,17 +48,7 @@ jobs:
- name: Build all crates in workspace
run: just ${{ matrix.just_variants }} build

- name: Build HotShot in release mode
run: just ${{ matrix.just_variants }} build_release

- name: Unit and integration tests for all crates in workspace
run: |
just ${{ matrix.just_variants }} test
timeout-minutes: 60
env:
RUST_BACKTRACE: full

- name: Upload Binaries
- name: Upload binaries
uses: actions/upload-artifact@v4
with:
name: binaries-amd64-${{ matrix.just_variants }}
Expand Down Expand Up @@ -111,70 +101,119 @@ jobs:
target/${{ matrix.just_variants }}/debug/examples/orchestrator-webserver
target/${{ matrix.just_variants }}/debug/examples/validator-webserver
build-release:
strategy:
matrix:
just_variants:
- async-std
- tokio
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
name: Checkout repository

- run: rustup toolchain install stable --profile minimal

- uses: Swatinem/rust-cache@v2
name: Enable Rust caching
with:
shared-key: ""
prefix-key: ${{ matrix.just_variants }}

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler
- name: Install just
run: |
wget https://github.com/casey/just/releases/download/1.14.0/just-1.14.0-x86_64-unknown-linux-musl.tar.gz
tar -vxf just-1.14.0-x86_64-unknown-linux-musl.tar.gz just
sudo cp just /usr/bin/just
- name: Build HotShot in release mode
run: just ${{ matrix.just_variants }} build_release

- name: Upload binaries
uses: actions/upload-artifact@v4
with:
name: binaries-amd64-${{ matrix.just_variants }}
path: |
target/${{ matrix.just_variants }}/debug/examples/counter
target/${{ matrix.just_variants }}/debug/examples/multi-validator-libp2p
target/${{ matrix.just_variants }}/debug/examples/orchestrator-libp2p
target/${{ matrix.just_variants }}/debug/examples/validator-libp2p
target/${{ matrix.just_variants }}/debug/examples/multi-validator-webserver
target/${{ matrix.just_variants }}/debug/examples/multi-webserver
target/${{ matrix.just_variants }}/debug/examples/webserver
target/${{ matrix.just_variants }}/debug/examples/orchestrator-webserver
target/${{ matrix.just_variants }}/debug/examples/validator-webserver
build-dockers:
strategy:
matrix:
just_variants:
- async-std
- tokio
runs-on: ubuntu-latest
needs: [build-and-test, build-arm]
needs: [build, build-arm, build-release]
steps:
- name: Checkout Repository
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Docker BuildKit (buildx)
uses: docker/setup-buildx-action@v3

- name: Login to Github Container Repo
- name: Login to Github container repo
uses: docker/login-action@v3
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Download executables AMD
- name: Download AMD executables
uses: actions/download-artifact@v4
with:
name: binaries-amd64-${{ matrix.just_variants }}
path: target/${{ matrix.just_variants }}/amd64/debug/examples

- name: Download executables ARM
- name: Download ARM executables
uses: actions/download-artifact@v4
with:
name: binaries-aarch64-${{ matrix.just_variants }}
path: target/${{ matrix.just_variants }}/arm64/debug/examples

- name: Generate orchestrator-libp2p docker metadata
- name: Generate orchestrator-libp2p Docker metadata
uses: docker/metadata-action@v5
id: orchestrator-libp2p
with:
images: ghcr.io/espressosystems/hotshot/orchestrator-libp2p
flavor: suffix=-${{ matrix.just_variants }}

- name: Generate validator-libp2p docker metadata
- name: Generate validator-libp2p Docker metadata
uses: docker/metadata-action@v5
id: validator-libp2p
with:
images: ghcr.io/espressosystems/hotshot/validator-libp2p
flavor: suffix=-${{ matrix.just_variants }}

- name: Generate webserver docker metadata
- name: Generate webserver Docker metadata
uses: docker/metadata-action@v5
id: webserver
with:
images: ghcr.io/espressosystems/hotshot/webserver
flavor: suffix=-${{ matrix.just_variants }}

- name: Generate orchestrator-webserver docker metadata
- name: Generate orchestrator-webserver Docker metadata
uses: docker/metadata-action@v5
id: orchestrator-webserver
with:
images: ghcr.io/espressosystems/hotshot/orchestrator-webserver
flavor: suffix=-${{ matrix.just_variants }}

- name: Generate validator-webserver docker metadata
- name: Generate validator-webserver Docker metadata
uses: docker/metadata-action@v5
id: validator-webserver
with:
Expand Down Expand Up @@ -240,37 +279,3 @@ jobs:
labels: ${{ steps.validator-webserver.outputs.labels }}
build-args: |
ASYNC_EXECUTOR=${{ matrix.just_variants }}
test-crypto:
strategy:
matrix:
just_variants:
- async-std
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
name: Checkout Repository

- run: rustup toolchain install stable --profile minimal

- uses: Swatinem/rust-cache@v2
name: Enable Rust Caching
with:
shared-key: ""
prefix-key: ${{ matrix.just_variants }}

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler
- name: Install Just
run: |
wget https://github.com/casey/just/releases/download/1.14.0/just-1.14.0-x86_64-unknown-linux-musl.tar.gz
tar -vxf just-1.14.0-x86_64-unknown-linux-musl.tar.gz just
sudo cp just /usr/bin/just
- name: Crypto u`nit and integration tests for all crates in workspace
run: |
just ${{ matrix.just_variants }} test_crypto
timeout-minutes: 60
env:
RUST_BACKTRACE: full
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build, Lint, and Test (self-hosted)
name: Test (self-hosted)

on:
push:
Expand All @@ -19,24 +19,18 @@ jobs:
runs-on: [self-hosted]
steps:
- uses: dtolnay/rust-toolchain@stable
name: Install Current Rust
name: Install Rust
with:
components: "clippy, rustfmt"

- uses: actions/checkout@v4
name: Checkout Repository
name: Checkout repository

- uses: Swatinem/rust-cache@v2
name: Enable Rust Caching
name: Enable Rust caching
with:
prefix-key: ${{ matrix.just_variants }}

- name: Build all crates in workspace
run: just ${{ matrix.just_variants }} build

- name: Build HotShot in release mode
run: just ${{ matrix.just_variants }} build_release

- name: Unit and integration tests for all crates in workspace
run: |
just ${{ matrix.just_variants }} test
Expand Down
Loading

0 comments on commit 31c635e

Please sign in to comment.