# Checks that doesn't require heavy lifting, like formatting, linting, etc. name: quick-checks on: push: branches: - main pull_request: types: [opened, synchronize, reopened, ready_for_review] merge_group: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true permissions: {} jobs: isdraft: uses: ./.github/workflows/reusable-isdraft.yml preflight: needs: isdraft uses: ./.github/workflows/reusable-preflight.yml fmt: runs-on: ubuntu-latest timeout-minutes: 20 needs: [preflight] container: image: ${{ needs.preflight.outputs.IMAGE }} steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7 - name: Cargo fmt id: required run: cargo fmt --all -- --check check-dependency-rules: runs-on: ubuntu-latest needs: isdraft timeout-minutes: 20 steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7 - name: check dependency rules run: | cd bizinikiwi/ ../.gitlab/ensure-deps.sh check-zepter: runs-on: ubuntu-latest timeout-minutes: 20 needs: [preflight] container: image: ${{ needs.preflight.outputs.IMAGE }} steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7 - name: fetch deps run: | # Pull all dependencies eagerly: time cargo metadata --format-version=1 --locked > /dev/null - name: Install newer Zepter run: | cargo install zepter@1.82.1 --locked -q - name: run zepter run: | zepter --version time zepter run check test-rust-features: runs-on: ubuntu-latest timeout-minutes: 20 needs: [preflight] container: image: ${{ needs.preflight.outputs.IMAGE }} steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7 - name: run rust features run: bash .gitlab/rust-features.sh . check-toml-format: runs-on: ubuntu-latest timeout-minutes: 20 needs: [preflight] container: image: ${{ needs.preflight.outputs.IMAGE }} steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7 - name: check toml format run: | taplo format --check --config .config/taplo.toml echo "Please run `taplo format --config .config/taplo.toml` to fix any toml formatting issues" check-workspace: runs-on: ubuntu-latest needs: isdraft timeout-minutes: 20 steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.0 (22. Sep 2023) - name: install python deps run: | sudo apt-get update && sudo apt-get install -y python3-pip python3 pip3 install toml "cargo-workspace>=1.2.6" - name: check integrity run: > python3 .github/scripts/check-workspace.py . --exclude "bizinikiwi/pezframe/contracts/fixtures/build" "bizinikiwi/pezframe/contracts/fixtures/contracts/common" - name: deny git deps run: python3 .github/scripts/deny-git-deps.py . check-markdown: runs-on: ubuntu-latest needs: isdraft timeout-minutes: 20 steps: - name: Checkout sources uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7 - name: Setup Node.js uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: "18.x" - name: Install tooling run: | npm install -g markdownlint-cli markdownlint --version - name: Check Markdown env: CONFIG: .github/.markdownlint.yaml run: | echo "Checking markdown formatting. More info: docs/contributor/markdown_linting.md" echo "To fix potential errors, you can run 'markdownlint --config .github/.markdownlint.yaml -f --ignore target --ignore vendor .' locally." markdownlint --config "$CONFIG" --ignore target --ignore vendor . check-umbrella: runs-on: ubuntu-latest timeout-minutes: 20 needs: [preflight] container: image: ${{ needs.preflight.outputs.IMAGE }} steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.0 (22. Sep 2023) - name: install python deps run: pip3 install "cargo-workspace>=1.2.4" toml - name: Install newer Zepter run: | cargo install zepter@1.82.1 --locked -q && zepter --version - name: check umbrella correctness run: | # Fixes "detected dubious ownership" error in the ci git config --global --add safe.directory '*' # Ensure jq is installed if ! command -v jq &> /dev/null; then echo "Installing jq..." apt-get update && apt-get install -y jq fi # Extract the umbrella crate version dynamically from cargo metadata UMBRELLA_VERSION=$(cargo metadata --format-version=1 | jq -r '.packages[] | select(.manifest_path | endswith("umbrella/Cargo.toml")) | .version') if [ -z "$UMBRELLA_VERSION" ]; then echo "Warning: Could not determine umbrella version from cargo metadata, using fallback version 0.1.0" UMBRELLA_VERSION="0.1.0" fi echo "Using umbrella crate version: $UMBRELLA_VERSION" python3 scripts/generate-umbrella.py --sdk . --version "$UMBRELLA_VERSION" cargo +nightly fmt -p pezkuwi-sdk if [ -n "$(git status --porcelain)" ]; then cat <> $GITHUB_ENV - name: Install Rust uses: actions-rust-lang/setup-rust-toolchain@1780873c7b576612439a134613cc4cc74ce5538c # v1.15.2 with: cache: false toolchain: ${{ env.RUST_VERSION }} components: cargo, clippy, rust-docs, rust-src, rustfmt, rustc, rust-std - name: Find README.docify.md files and check generated READMEs run: .github/scripts/check-missing-readme-generation.sh confirm-required-checks-quick-jobs-passed: runs-on: ubuntu-latest name: All quick checks passed # If any new job gets added, be sure to add it to this array needs: - fmt - check-dependency-rules - check-zepter - test-rust-features - check-toml-format - check-workspace - check-markdown - check-umbrella - check-fail-ci - check-readme if: always() && !cancelled() steps: - run: | tee resultfile <<< '${{ toJSON(needs) }}' FAILURES=$(cat resultfile | grep '"result": "failure"' | wc -l) if [ $FAILURES -gt 0 ]; then echo "### At least one required job failed ❌" >> $GITHUB_STEP_SUMMARY exit 1 else echo '### Good job! All the required jobs passed 🚀' >> $GITHUB_STEP_SUMMARY fi