From 4ae2f930863385c97df931e51623c4e5474748e3 Mon Sep 17 00:00:00 2001 From: Peter Tripp Date: Thu, 17 Oct 2024 12:50:19 -0400 Subject: [PATCH] ci: Improve GitHub Action modularity (#18861) - Closes: https://github.com/zed-industries/zed/issues/19351 - Switch to using the official [typos GitHub Action](https://github.com/crate-ci/typos/blob/master/docs/github-action.md) - Move the typos check into `actions/check_style` - Move Squawk Postgres migration check out of `actions/check_style` file into ci.yml - `actions/check_style` can now be run on stateless/linux runners (previous required self-hosted MacOS runner) - ci.yml: Split old `style` into checks into those that can run statelessly (linux) and everything else into a new `migration` group which benefit from the full git checkout available on the MacOS runners. - ci.yml: Move `Check unused dependencies` from style to `linux_tests` - Add `if: github.repository_owner == 'zed-industries'` to all jobs so they won't try and run on GitHub forks. --- .github/actions/check_style/action.yml | 11 +++--- .github/workflows/ci.yml | 47 ++++++++++++++++--------- .github/workflows/deploy_cloudflare.yml | 1 + .github/workflows/docs.yml | 8 +++-- script/check-spelling | 14 -------- 5 files changed, 42 insertions(+), 39 deletions(-) delete mode 100755 script/check-spelling diff --git a/.github/actions/check_style/action.yml b/.github/actions/check_style/action.yml index 7f41e710c9..9bddee44ef 100644 --- a/.github/actions/check_style/action.yml +++ b/.github/actions/check_style/action.yml @@ -4,12 +4,11 @@ description: "Checks code formatting use cargo fmt" runs: using: "composite" steps: + - name: Check for Typos with Typos-CLI + uses: crate-ci/typos@v1.24.6 + with: + config: ./typos.toml + - name: cargo fmt shell: bash -euxo pipefail {0} run: cargo fmt --all -- --check - - - name: Find modified migrations - shell: bash -euxo pipefail {0} - run: | - export SQUAWK_GITHUB_TOKEN=${{ github.token }} - . ./script/squawk diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eadd738fa5..adf0cfa30f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,9 +26,10 @@ env: RUST_BACKTRACE: 1 jobs: - style: + migration_checks: + name: Check Postgres and Protobuf migrations, mergability + if: github.repository_owner == 'zed-industries' timeout-minutes: 60 - name: Check formatting and spelling runs-on: - self-hosted - test @@ -37,25 +38,16 @@ jobs: uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4 with: clean: false - fetch-depth: 0 + fetch-depth: 0 # fetch full history - name: Remove untracked files run: git clean -df - - name: Check spelling - run: script/check-spelling - - - name: Run style checks - uses: ./.github/actions/check_style - - - name: Check unused dependencies - uses: bnjbvr/cargo-machete@main - - - name: Check licenses are present - run: script/check-licenses - - - name: Check license generation - run: script/generate-licenses /tmp/zed_licenses_output + - name: Find modified migrations + shell: bash -euxo pipefail {0} + run: | + export SQUAWK_GITHUB_TOKEN=${{ github.token }} + . ./script/squawk - name: Ensure fresh merge shell: bash -euxo pipefail {0} @@ -77,6 +69,19 @@ jobs: input: "crates/proto/proto/" against: "https://github.com/${GITHUB_REPOSITORY}.git#branch=${BUF_BASE_BRANCH},subdir=crates/proto/proto/" + style: + timeout-minutes: 60 + name: Check formatting and spelling + if: github.repository_owner == 'zed-industries' + runs-on: + - buildjet-8vcpu-ubuntu-2204 + steps: + - name: Checkout repo + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + + - name: Run style checks + uses: ./.github/actions/check_style + macos_tests: timeout-minutes: 60 name: (macOS) Run Clippy and tests @@ -92,6 +97,14 @@ jobs: - name: cargo clippy run: ./script/clippy + - name: Check unused dependencies + uses: bnjbvr/cargo-machete@main + + - name: Check licenses + run: | + script/check-licenses + script/generate-licenses /tmp/zed_licenses_output + - name: Run tests uses: ./.github/actions/run_tests diff --git a/.github/workflows/deploy_cloudflare.yml b/.github/workflows/deploy_cloudflare.yml index 029a2092d9..1c9e7bc5b0 100644 --- a/.github/workflows/deploy_cloudflare.yml +++ b/.github/workflows/deploy_cloudflare.yml @@ -8,6 +8,7 @@ on: jobs: deploy-docs: name: Deploy Docs + if: github.repository_owner == 'zed-industries' runs-on: ubuntu-latest steps: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 0b291ca374..437e7f96a6 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -11,6 +11,7 @@ on: jobs: check_formatting: name: "Check formatting" + if: github.repository_owner == 'zed-industries' runs-on: ubuntu-latest steps: @@ -29,5 +30,8 @@ jobs: false } - - name: Check spelling - run: script/check-spelling docs/ + - name: Check for Typos with Typos-CLI + uses: crate-ci/typos@v1.24.6 + with: + config: ./typos.toml + files: ./docs/ diff --git a/script/check-spelling b/script/check-spelling deleted file mode 100755 index 76ebf74728..0000000000 --- a/script/check-spelling +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -set -eu - -TYPOS_CLI_VERSION=1.24.6 -TARGET_DIR=${1:-""} - -if ! cargo install --list | grep "typos-cli v$TYPOS_CLI_VERSION" > /dev/null; then - echo "Installing typos-cli@$TYPOS_CLI_VERSION..." - cargo install "typos-cli@$TYPOS_CLI_VERSION" -else - echo "typos-cli@$TYPOS_CLI_VERSION is already installed." -fi -typos $TARGET_DIR