Skip to content

Commit

Permalink
[ci] Move ci from gitlab to github
Browse files Browse the repository at this point in the history
  • Loading branch information
alvicsam committed Oct 30, 2024
1 parent f799057 commit c94cbd9
Showing 1 changed file with 251 additions and 0 deletions.
251 changes: 251 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,251 @@
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

0 comments on commit c94cbd9

Please sign in to comment.