ci: Improve GitHub Action modularity (#18861)
Peter Tripp
created 1 year ago
- 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.
Change summary
.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(-)
Detailed changes
@@ -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
@@ -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
@@ -8,6 +8,7 @@ on:
jobs:
deploy-docs:
name: Deploy Docs
+ if: github.repository_owner == 'zed-industries'
runs-on: ubuntu-latest
steps:
@@ -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/
@@ -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