Skip to content

[ci] Move ci from gitlab to github #3

[ci] Move ci from gitlab to github

[ci] Move ci from gitlab to github #3

Workflow file for this run

name: CI
on:
# push:
# branches:
# - master
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
# common variable is defined in the workflow
# repo env variable doesn't work for PR from forks
env:
CI_IMAGE: "paritytech/ci-unified:bullseye-1.81.0-2024-09-11-v202409111034"
jobs:
set-image:
# This workaround sets the container image for each job using 'set-image' job output.
# env variables don't work for PR from forks, so we need to use outputs.
runs-on: ubuntu-latest
outputs:
CI_IMAGE: ${{ steps.set_image.outputs.CI_IMAGE }}
steps:
- id: set_image
run: echo "CI_IMAGE=${{ env.CI_IMAGE }}" >> $GITHUB_OUTPUT
fmt:
name: Cargo fmt
runs-on: ubuntu-latest
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Cargo fmt
run: cargo +nightly fmt --all -- --check
clippy-nightly:
name: Cargo clippy
runs-on: ubuntu-latest
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
env:
RUSTFLAGS: "-D warnings"
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Rust Cache
uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2.7.5
with:
cache-on-failure: true
cache-all-crates: true
- name: Run clippy
run: SKIP_WASM_BUILD=1 cargo clippy --all-targets --locked --workspace
spellcheck:
name: Spellcheck
runs-on: ubuntu-latest
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Spellcheck
run: cargo spellcheck check --cfg=.config/spellcheck.toml --checkers hunspell -m 1 $(find . -type f -name '*.rs' ! -path "./target/*" ! -name 'codegen_runtime.rs' ! -name 'weights.rs')
check:
name: Check
runs-on: ubuntu-latest
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Rust Cache
uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2.7.5
with:
cache-on-failure: true
cache-all-crates: true
- name: Check
run: SKIP_WASM_BUILD=1 time cargo check --locked --verbose --workspace
check-nightly:
name: Check
runs-on: ubuntu-latest
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Rust Cache
uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2.7.5
with:
cache-on-failure: true
cache-all-crates: true
- name: Check
run: |
rustup default nightly
SKIP_WASM_BUILD=1 time cargo check --locked --verbose --workspace
test:
name: Test
runs-on: ubuntu-latest
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Rust Cache
uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2.7.5
with:
cache-on-failure: true
cache-all-crates: true
- name: Test
run: |
cargo fetch
CARGO_NET_OFFLINE=true SKIP_WASM_BUILD=1 time cargo test --verbose --workspace
test-nightly:
name: Test
runs-on: ubuntu-latest
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Rust Cache
uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2.7.5
with:
cache-on-failure: true
cache-all-crates: true
- name: Test nightly
run: |
rustup default nightly
cargo fetch
CARGO_NET_OFFLINE=true SKIP_WASM_BUILD=1 time cargo test --verbose --workspace
# do we really need this check?
deny:
name: Deny
runs-on: ubuntu-latest
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
# this job is allowed to fail, only licenses check is important
continue-on-error: true
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Deny
run: |
cargo deny check advisories --hide-inclusion-graph
cargo deny check bans sources --hide-inclusion-graph
deny-licenses:
name: Deny License
runs-on: ubuntu-latest
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Deny License
run: cargo deny check licenses --hide-inclusion-graph
check-rustdocs:
name: Check Rustdocs
runs-on: ubuntu-latest
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Rust Cache
uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2.7.5
with:
cache-on-failure: true
cache-all-crates: true
- name: Check Rustdocs
run: cargo doc --no-deps --all --workspace --document-private-items
partial-repo-pallets-build-test:
name: Partial repo pallets build test
runs-on: ubuntu-latest
needs: [set-image]
# we may live with failing partial repo build, it is just a signal for us
continue-on-error: true
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Partial repo pallets build test
run: ./scripts/verify-pallets-build.sh --no-revert
build:
name: Build
runs-on: ubuntu-latest
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.CI_IMAGE }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Rust Cache
uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2.7.5
with:
cache-on-failure: true
cache-all-crates: true
- name: Build
run: |
cargo fetch
CARGO_NET_OFFLINE=true time cargo build --release --verbose --workspace
#todo: collect artifacts
#build image substrate-relay
#build image bridges-common-relay
#build and push image substrate-relay
#build and push image bridges-common-relay
#deploy argocd