Skip to content

CI

CI #4230

Workflow file for this run

---
name: CI
"on":
workflow_dispatch:
push:
branches:
- development
- main
- ci-*
pull_request:
types:
- opened
- reopened
- synchronize
merge_group:
env:
nightly_toolchain: nightly-2023-06-12
stable_toolchain: stable
CARGO_HTTP_MULTIPLEXING: false
CARGO_TERM_COLOR: always
PROTOC: protoc
TERM: unknown
jobs:
fmt:
name: fmt
runs-on: [self-hosted, ubuntu-high-cpu]
steps:
- name: checkout
uses: actions/checkout@v4
- name: toolchain
uses: dtolnay/rust-toolchain@nightly
with:
toolchain: ${{ env.nightly_toolchain }}
components: rustfmt
- name: ubuntu dependencies
run: |
sudo apt-get update
sudo bash scripts/install_ubuntu_dependencies.sh
- name: wasm target install
run: rustup target add wasm32-unknown-unknown
- name: cargo format
run: cargo +${{ env.nightly_toolchain }} fmt --all -- --check
prettier:
name: prettier
runs-on: [self-hosted, ubuntu-high-cpu]
steps:
- name: checkout
uses: actions/checkout@v4
- name: install
run: |
npm install prettier@3.2.4
- name: prettier
run: |
npx prettier --check "./**/*.{ts,tsx,css,json}"
clippy:
name: clippy
runs-on: [self-hosted, ubuntu-high-cpu]
steps:
- name: checkout
uses: actions/checkout@v4
- name: toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.stable_toolchain }}
components: clippy
- name: ubuntu dependencies
run: |
sudo apt-get update
sudo bash scripts/install_ubuntu_dependencies.sh
- uses: rui314/setup-mold@v1
- name: wasm target install
run: rustup target add wasm32-unknown-unknown
- name: Install cargo-lints
run: cargo install cargo-lints
- name: Clippy check (with lints)
run: cargo lints clippy --all-targets --all-features
machete:
# Checks for unused dependencies.
name: machete
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.stable_toolchain }}
components: clippy, rustfmt
- name: ubuntu dependencies
run: |
sudo apt-get update
sudo bash scripts/install_ubuntu_dependencies.sh
- name: cargo machete
run: |
cargo install cargo-machete
cargo machete
build:
name: check nightly
runs-on: [self-hosted, ubuntu-high-cpu]
steps:
- name: checkout
uses: actions/checkout@v4
- name: toolchain
uses: dtolnay/rust-toolchain@nightly
with:
toolchain: ${{ env.nightly_toolchain }}
- name: ubuntu dependencies
run: |
sudo apt-get update
sudo bash scripts/install_ubuntu_dependencies.sh
- uses: rui314/setup-mold@v1
- name: wasm target install
run: rustup target add wasm32-unknown-unknown
- name: cargo check
run: cargo check --release --all-features --all-targets --locked
build-stable:
name: check stable
runs-on: [self-hosted, ubuntu-high-cpu]
steps:
- name: checkout
uses: actions/checkout@v4
- name: toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
- name: ubuntu dependencies
run: |
sudo apt-get update
sudo bash scripts/install_ubuntu_dependencies.sh
- uses: rui314/setup-mold@v1
- name: wasm target install
run: rustup target add wasm32-unknown-unknown
- name: rustup show
run: |
rustup show
- name: cargo check
run: cargo check --release --all-targets --locked
licenses:
name: file licenses
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: install ripgrep
run: |
wget https://github.com/BurntSushi/ripgrep/releases/download/13.0.0/ripgrep_13.0.0_amd64.deb
sudo dpkg -i ripgrep_13.0.0_amd64.deb
rg --version || exit 1
- name: run the license check
run: ./scripts/file_license_check.sh
test:
name: test
runs-on: [self-hosted, ubuntu-high-cpu]
steps:
- name: checkout
uses: actions/checkout@v4
- name: toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.stable_toolchain }}
- name: ubuntu dependencies
run: |
sudo apt-get update
sudo bash scripts/install_ubuntu_dependencies.sh
- uses: rui314/setup-mold@v1
- name: wasm target install
run: rustup target add wasm32-unknown-unknown
- name: Install cargo-nextest
run: cargo install cargo-nextest --locked
- name: cargo test compile
run: cargo test --no-run --locked --all-features --release
- name: cargo test
run: cargo nextest run --all-features --release -E "not package(integration_tests)" --profile ci
- name: upload artifact
uses: actions/upload-artifact@v4 # upload test results as artifact
if: success() || failure()
with:
name: test-results
path: ${{ github.workspace }}/target/nextest/ci/junit.xml
- name: cargo test cucumber
run: cargo test --all-features --release --package integration_tests
- name: upload test result artifact
uses: actions/upload-artifact@v4 # upload test results as artifact
if: success() || failure()
with:
name: cucumber-test-results
path: ${{ github.workspace }}/integration_tests/cucumber-output-junit.xml
- name: Upload cucumber log artifacts
uses: actions/upload-artifact@v4
if: success() || failure()
with:
name: cucumber-log-artifacts
path: ${{ github.workspace }}/integration_tests/tests/temp/cucumber_*/*.log
# needed for test results
event_file:
runs-on: ubuntu-latest
steps:
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Event File
path: ${{ github.event_path }}