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

GHA pipeline rewrite for ease and speed #1551

Merged
merged 71 commits into from
Nov 17, 2023
Merged
Show file tree
Hide file tree
Changes from 67 commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
943ca6a
Renmove unnecessary/old workflow files
gpmayorga Sep 15, 2023
9ea2c6f
Add PR common checks and wasm build(s)
gpmayorga Sep 15, 2023
298c307
Modify docs buld
gpmayorga Sep 15, 2023
06dc4ef
modify benchmark
gpmayorga Sep 15, 2023
77948d5
Modify CI script (simpler)
gpmayorga Sep 15, 2023
949dbeb
Add docker build
gpmayorga Sep 15, 2023
934145d
Add prep action for common Ubuntu steps.
gpmayorga Sep 15, 2023
3641a11
separate sccache gcloud action
gpmayorga Sep 15, 2023
98ca8f3
fix dockertag pattern
gpmayorga Sep 15, 2023
c2bc2cf
delete old benchmark check
gpmayorga Sep 15, 2023
79eff04
Trick the wasm publish for this branch
gpmayorga Sep 15, 2023
bb5713e
new benchmark pipeline
gpmayorga Sep 15, 2023
c6be052
additional cache options
gpmayorga Sep 15, 2023
309afdb
exclude runtime integration tests from dockerfile
gpmayorga Sep 15, 2023
c2b8fc7
fix buildwasm
gpmayorga Sep 15, 2023
53a21a0
fix docker build & fix benchmarks
gpmayorga Sep 15, 2023
f79e94b
remove old benchmark job
gpmayorga Sep 15, 2023
97fa94e
debug benchmark cache
gpmayorga Sep 15, 2023
6a4c523
fix wasm location upload
gpmayorga Sep 15, 2023
12292b0
better benchmark PR
gpmayorga Sep 15, 2023
9486c1e
small fixes
gpmayorga Sep 15, 2023
ed7ec02
fix typo on build-wasm
gpmayorga Sep 15, 2023
5200f38
better Docker build and management
gpmayorga Sep 15, 2023
d467440
small fixes
gpmayorga Sep 15, 2023
0bfbf7a
cleanup and concurrency review
gpmayorga Sep 15, 2023
9fddac4
simplify docker and fix bench-check cache
gpmayorga Sep 15, 2023
9ca1e9a
inject sccache in the docker image
gpmayorga Sep 16, 2023
61cbe48
fix benchmark write access for PRs
gpmayorga Sep 16, 2023
d72014a
test gha cache for docker
gpmayorga Sep 16, 2023
c9264d8
remove sccache from dockerfile
gpmayorga Sep 16, 2023
e23b574
adjust machine size and fix quotation in Dockfile
gpmayorga Sep 16, 2023
8087d93
try fix docker var quoting
gpmayorga Sep 16, 2023
3b1d5b3
pin all github action versions
gpmayorga Sep 16, 2023
06ec8e1
fix srtool build
gpmayorga Sep 16, 2023
0271fdb
Upload srtool report from wasm build
gpmayorga Sep 16, 2023
ec97693
add code coverage to wasm build
gpmayorga Sep 16, 2023
d4512b0
Merge branch 'main' into ci-rewrite-n-cache
gpmayorga Sep 16, 2023
8ed4eda
fix typo
gpmayorga Sep 16, 2023
b0b406c
add nix build (fully commented)
gpmayorga Sep 16, 2023
64d1822
Update build-wasm.yml
gpmayorga Sep 18, 2023
7868914
change build wasm docker run
gpmayorga Sep 18, 2023
fae3288
Move the code coverage up to see erros
gpmayorga Sep 18, 2023
c47131e
check if wasm builds
gpmayorga Sep 18, 2023
30a8468
try and force the report generation
gpmayorga Sep 18, 2023
b967a3a
Merge branch 'main' into ci-rewrite-n-cache
gpmayorga Sep 30, 2023
31660dd
review the PR with @wischli
gpmayorga Nov 7, 2023
8a9f774
Merge remote-tracking branch 'origin/main' into ci-rewrite-n-cache
gpmayorga Nov 7, 2023
eed117c
Try cargo install --locked
gpmayorga Nov 8, 2023
d03c379
Use toolchain from toml file
gpmayorga Nov 8, 2023
d51ee77
small fixes
gpmayorga Nov 8, 2023
31d1884
comment code coverage reports
gpmayorga Nov 8, 2023
7d486b7
trigger wasm build only on tag push
gpmayorga Nov 8, 2023
44012ad
Rename benchmarks job
gpmayorga Nov 8, 2023
2ce5707
try and fix the docker tag logic
gpmayorga Nov 8, 2023
780adbf
small fixes
gpmayorga Nov 8, 2023
f0f25af
more minor fixes
gpmayorga Nov 8, 2023
0d414a8
fix cache warning
gpmayorga Nov 8, 2023
2ce04c8
srtool has no latest tag on the repo, using 1.69
gpmayorga Nov 8, 2023
3eda725
remove production environment restrictions
gpmayorga Nov 8, 2023
aeaaedd
Fix GITHUB_ENV and bump srtool version
gpmayorga Nov 9, 2023
5a5d394
Merge remote-tracking branch 'origin/main' into ci-rewrite-n-cache
wischli Nov 13, 2023
8879d86
chore: update srtool version to latest
wischli Nov 13, 2023
61fcacb
fix: remove unused rust toolchain from setup
wischli Nov 13, 2023
9dfdcfb
fix: toolchain version docker build
wischli Nov 13, 2023
43e5d7a
fix: remove unused thread_local
wischli Nov 13, 2023
5177624
Update build-wasm.yml
gpmayorga Nov 14, 2023
8398d7a
Final review of CI changes
gpmayorga Nov 16, 2023
13e2085
review of sanity-checks
gpmayorga Nov 17, 2023
3e9b865
Final review of CI PR with @wischli
gpmayorga Nov 17, 2023
bfc67a5
Use Rust docker image for building the binary
gpmayorga Nov 17, 2023
2fac7af
Fix review comments
gpmayorga Nov 17, 2023
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
6 changes: 6 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
**/target/
.github/
scripts/
docker-compos
.gitignore
docker
README.md
2 changes: 2 additions & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## Changes to .github
.github/* @mustermeiszer @NunoAlexandre @lemunozm
.github/workflows @gpmayorga
.github/actions @gpmayorga
Copy link
Contributor

Choose a reason for hiding this comment

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

👌🏻

Copy link
Contributor Author

Choose a reason for hiding this comment

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

we could add @wischli too, for the bus factor


## Changes to ci
ci/* @mustermeiszer @NunoAlexandre @lemunozm
Expand Down
47 changes: 47 additions & 0 deletions .github/actions/prep-ubuntu/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Prepare Ubuntu for Rust builds
description: cleanup and Rust Tools setup
inputs:
cache:
description: cache type (enabled if set)
default: "disabled"
GWIP:
description: "Google Workload identity provider"
default: ''
GSA:
description: "Google Service Account"
default: ''
runs:
using: composite
steps:
- name: Prep build on Ubuntu
id: ubuntu_prep
shell: sh
run: |
echo "Pre cleanup"
df -h
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
echo "Post cleanup"
df -h
sudo apt-get install protobuf-compiler

# - name: Install latest nightly
# uses: actions-rs/toolchain@88dc2356392166efad76775c878094f4e83ff746
# with:
# toolchain: ${{ inputs.RUST_TOOLCHAIN }}
# default: true
gpmayorga marked this conversation as resolved.
Show resolved Hide resolved
- name: Install toolchain from rust-toolchain.toml
shell: sh
run: |
TOOLCHAIN_VERSION=$(grep 'channel =' rust-toolchain.toml | awk -F'"' '{print $2}')
rustup toolchain install "$TOOLCHAIN_VERSION"

- name: SCcache setup
if: ${{ inputs.cache == 'enabled' }}
uses: ./.github/actions/sccache-gcloud
with:
GWIP: ${{ inputs.GWIP }}
GSA: ${{ inputs.GSA }}



43 changes: 43 additions & 0 deletions .github/actions/sccache-gcloud/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Install SCcache w/ GCloud bucket
description: Configure Scache to use a Gcloud bucket through workload identity

inputs:
GWIP:
description: Google Workflow Identity provider
required: true
GSA:
description: Google Service Account
required: true
runs:
using: composite
steps:

- name: Auth gcloud
id: gauth
uses: google-github-actions/auth@ef5d53e30bbcd8d0836f4288f5e50ff3e086997d # @v1
wischli marked this conversation as resolved.
Show resolved Hide resolved
with:
workload_identity_provider: ${{ inputs.GWIP }}
service_account: ${{ inputs.GSA }}
# export_environment_variables: true
gpmayorga marked this conversation as resolved.
Show resolved Hide resolved

- name: Run sccache-cache
uses: mozilla-actions/sccache-action@8417cffc2ec64127ad83077aceaa8631f7cdc83e #v0.0.3
wischli marked this conversation as resolved.
Show resolved Hide resolved

- name: set GCS bucket sccache variables
shell: bash
run: |
echo "SCCACHE_GCS_BUCKET=centrifuge-chain-sccache-backend" >> $GITHUB_ENV
echo "SCCACHE_GCS_RW_MODE=READ_WRITE" >> $GITHUB_ENV
# The gauth step should already take care of this:
# echo "SCCACHE_GCS_KEY_PATH=${{ steps.gauth.credentials_file_path }}" >> $GITHUB_ENV

- name: setup Rust sccache wrapper
if: ${{ inputs.cache == 'enabled' }}
shell: sh
run: |
echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV
echo "CARGO_INCREMENTAL=false" >> $GITHUB_ENV # https://github.com/mozilla/sccache#rust

- name: Run sccache stat for check
shell: bash
run: ${SCCACHE_PATH} --show-stats
40 changes: 0 additions & 40 deletions .github/workflows/benchmark-check.yml

This file was deleted.

91 changes: 0 additions & 91 deletions .github/workflows/benchmark.yml

This file was deleted.

105 changes: 105 additions & 0 deletions .github/workflows/build-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: Docker Build
on:
# Keep in mind the Docker tagging on the "metadata" step if you add new triggers
push:
branches: [main]
release:
types: [published]
pull_request:
paths:
- ".github/workflows/build-docker.yml"
- "docker/centrifuge-chain/Dockerfile"
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.head.label || github.head_ref || github.ref }}${{ github.ref == '/refs/heads/main' && github.sha || 'false' }}
cancel-in-progress: true
jobs:
docker:
strategy:
matrix:
target: [ release, test ]
runs-on: ubuntu-latest-8-cores
steps:
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac #v4
with:
fetch-depth: 0
- name: Free space
# https://github.com/actions/runner-images/issues/2840#issuecomment-1284059930
run: |
sudo rm -rf /usr/share/dotnet
# sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"

- name: check available docker space
run: |
docker volume ls
df -h

- name: Install toolchain from rust-toolchain.toml
shell: sh
run: |
TOOLCHAIN_VERSION=$(grep 'channel =' rust-toolchain.toml | awk -F'"' '{print $2}')
rustup toolchain install "$TOOLCHAIN_VERSION"

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 #v3
- name: DockerHub Login
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}

- run: echo "NOW=$(date -u +%y-%m-%d)" >> $GITHUB_ENV

- name: Setup docker metadata
id: meta
uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 #v5
with:
images: centrifugeio/centrifuge-chain
flavor: |
suffix=-${{ env.NOW }}
prefix=${{ matrix.target == 'test' && 'test-' || 'latest=auto' }}
tags: |
type=ref,event=branch
type=semver,pattern={{raw}},suffix=
type=semver,pattern={{major}},prefix=${{ matrix.target == 'test' && 'test-' || '' }}
type=edge

- name: Configure sccache
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 #v6
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');

- name: Build and push centrifugeio/centrifuge-chain
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 #v5
with:
context: .
file: ./docker/centrifuge-chain/Dockerfile
build-args: |
FEATURES=${{ matrix.target == 'test' && 'fast-runtime' || '' }}
push: ${{ github.ref == '/refs/heads/main' && true || false }}
tags: ${{ steps.meta.outputs.tags }}
# Cache options:
# https://docs.docker.com/build/ci/github-actions/cache/
cache-from: type=gha
# cache-from: type=registry,ref=centrifugeio/centrifuge-chain:${{ github.ref }}
# https://docs.docker.com/build/cache/backends/inline/
cache-to: type=gha, mode=max
# cache-to: type=registry,ref=centrifugeio/centrifuge-chain:${{ github.ref }}, mode=max
wischli marked this conversation as resolved.
Show resolved Hide resolved

- name: Update DockerHub descriptions
if: contains(github.ref, 'refs/tags/release-v')
uses: peter-evans/dockerhub-description@dc67fad7001ef9e8e3c124cb7a64e16d0a63d864 #v3.4.2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
repository: centrifuge/centrifuge-chain
short-description: ${{ github.event.repository.description }}
enable-url-completion: true

- if: failure()
name: Check available space after build failed
run: |
docker volume ls
df -h
48 changes: 0 additions & 48 deletions .github/workflows/build-matrix.json

This file was deleted.

Loading
Loading