Change summary
.github/workflows/ci.yml | 277 ++++++++++++++++++++---------------------
1 file changed, 138 insertions(+), 139 deletions(-)
Detailed changes
@@ -1,149 +1,148 @@
name: CI
on:
- push:
- branches:
- - main
- - "v[0-9]+.[0-9]+.x"
- tags:
- - "v*"
- pull_request:
- branches:
- - "**"
+ push:
+ branches:
+ - main
+ - "v[0-9]+.[0-9]+.x"
+ tags:
+ - "v*"
+ pull_request:
+ branches:
+ - "**"
concurrency:
- # Allow only one workflow per any non-`main` branch.
- group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
- cancel-in-progress: true
+ # Allow only one workflow per any non-`main` branch.
+ group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
+ cancel-in-progress: true
env:
- CARGO_TERM_COLOR: always
- CARGO_INCREMENTAL: 0
- RUST_BACKTRACE: 1
+ CARGO_TERM_COLOR: always
+ CARGO_INCREMENTAL: 0
+ RUST_BACKTRACE: 1
jobs:
- style:
- name: Check formatting, Clippy lints, and spelling
- runs-on:
- - self-hosted
- - test
- steps:
- - name: Checkout repo
- uses: actions/checkout@v3
- with:
- clean: false
- submodules: "recursive"
- fetch-depth: 0
-
- - name: Set up default .cargo/config.toml
- run: cp ./.cargo/ci-config.toml ~/.cargo/config.toml
-
- - name: Check spelling
- run: |
- if ! which typos > /dev/null; then
- cargo install typos-cli
- fi
- typos
-
- - name: Run style checks
- uses: ./.github/actions/check_style
-
- tests:
- name: Run tests
- runs-on:
- - self-hosted
- - test
- needs: style
- steps:
- - name: Checkout repo
- uses: actions/checkout@v3
- with:
- clean: false
- submodules: "recursive"
-
- - name: Run tests
- uses: ./.github/actions/run_tests
-
- - name: Build collab
- run: cargo build -p collab
-
- - name: Build other binaries
- run: cargo build --workspace --bins --all-features
-
- bundle:
- name: Bundle app
- runs-on:
- - self-hosted
- - bundle
- if: ${{ startsWith(github.ref, 'refs/tags/v') || contains(github.event.pull_request.labels.*.name, 'run-build-dmg') }}
- needs: tests
+ style:
+ name: Check formatting, Clippy lints, and spelling
+ runs-on:
+ - self-hosted
+ - test
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v3
+ with:
+ clean: false
+ submodules: "recursive"
+ fetch-depth: 0
+
+ - name: Set up default .cargo/config.toml
+ run: cp ./.cargo/ci-config.toml ~/.cargo/config.toml
+
+ - name: Check spelling
+ run: |
+ if ! which typos > /dev/null; then
+ cargo install typos-cli
+ fi
+ typos
+
+ - name: Run style checks
+ uses: ./.github/actions/check_style
+
+ tests:
+ name: Run tests
+ runs-on:
+ - self-hosted
+ - test
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v3
+ with:
+ clean: false
+ submodules: "recursive"
+
+ - name: Run tests
+ uses: ./.github/actions/run_tests
+
+ - name: Build collab
+ run: cargo build -p collab
+
+ - name: Build other binaries
+ run: cargo build --workspace --bins --all-features
+
+ bundle:
+ name: Bundle app
+ runs-on:
+ - self-hosted
+ - bundle
+ if: ${{ startsWith(github.ref, 'refs/tags/v') || contains(github.event.pull_request.labels.*.name, 'run-build-dmg') }}
+ needs: tests
+ env:
+ MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
+ MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
+ APPLE_NOTARIZATION_USERNAME: ${{ secrets.APPLE_NOTARIZATION_USERNAME }}
+ APPLE_NOTARIZATION_PASSWORD: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }}
+ steps:
+ - name: Install Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: "18"
+
+ - name: Checkout repo
+ uses: actions/checkout@v3
+ with:
+ clean: false
+ submodules: "recursive"
+
+ - name: Limit target directory size
+ run: script/clear-target-dir-if-larger-than 100
+
+ - name: Determine version and release channel
+ if: ${{ startsWith(github.ref, 'refs/tags/v') }}
+ run: |
+ set -eu
+
+ version=$(script/get-crate-version zed)
+ channel=$(cat crates/zed/RELEASE_CHANNEL)
+ echo "Publishing version: ${version} on release channel ${channel}"
+ echo "RELEASE_CHANNEL=${channel}" >> $GITHUB_ENV
+
+ expected_tag_name=""
+ case ${channel} in
+ stable)
+ expected_tag_name="v${version}";;
+ preview)
+ expected_tag_name="v${version}-pre";;
+ nightly)
+ expected_tag_name="v${version}-nightly";;
+ *)
+ echo "can't publish a release on channel ${channel}"
+ exit 1;;
+ esac
+ if [[ $GITHUB_REF_NAME != $expected_tag_name ]]; then
+ echo "invalid release tag ${GITHUB_REF_NAME}. expected ${expected_tag_name}"
+ exit 1
+ fi
+
+ - name: Generate license file
+ run: script/generate-licenses
+
+ - name: Create app bundle
+ run: script/bundle
+
+ - name: Upload app bundle to workflow run if main branch or specific label
+ uses: actions/upload-artifact@v3
+ if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'run-build-dmg') }}
+ with:
+ name: Zed_${{ github.event.pull_request.head.sha || github.sha }}.dmg
+ path: target/release/Zed.dmg
+
+ - uses: softprops/action-gh-release@v1
+ name: Upload app bundle to release
+ if: ${{ env.RELEASE_CHANNEL == 'preview' || env.RELEASE_CHANNEL == 'stable' }}
+ with:
+ draft: true
+ prerelease: ${{ env.RELEASE_CHANNEL == 'preview' }}
+ files: target/release/Zed.dmg
+ body: ""
env:
- MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
- MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
- APPLE_NOTARIZATION_USERNAME: ${{ secrets.APPLE_NOTARIZATION_USERNAME }}
- APPLE_NOTARIZATION_PASSWORD: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }}
- steps:
- - name: Install Node
- uses: actions/setup-node@v3
- with:
- node-version: "18"
-
- - name: Checkout repo
- uses: actions/checkout@v3
- with:
- clean: false
- submodules: "recursive"
-
- - name: Limit target directory size
- run: script/clear-target-dir-if-larger-than 100
-
- - name: Determine version and release channel
- if: ${{ startsWith(github.ref, 'refs/tags/v') }}
- run: |
- set -eu
-
- version=$(script/get-crate-version zed)
- channel=$(cat crates/zed/RELEASE_CHANNEL)
- echo "Publishing version: ${version} on release channel ${channel}"
- echo "RELEASE_CHANNEL=${channel}" >> $GITHUB_ENV
-
- expected_tag_name=""
- case ${channel} in
- stable)
- expected_tag_name="v${version}";;
- preview)
- expected_tag_name="v${version}-pre";;
- nightly)
- expected_tag_name="v${version}-nightly";;
- *)
- echo "can't publish a release on channel ${channel}"
- exit 1;;
- esac
- if [[ $GITHUB_REF_NAME != $expected_tag_name ]]; then
- echo "invalid release tag ${GITHUB_REF_NAME}. expected ${expected_tag_name}"
- exit 1
- fi
-
- - name: Generate license file
- run: script/generate-licenses
-
- - name: Create app bundle
- run: script/bundle
-
- - name: Upload app bundle to workflow run if main branch or specific label
- uses: actions/upload-artifact@v3
- if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'run-build-dmg') }}
- with:
- name: Zed_${{ github.event.pull_request.head.sha || github.sha }}.dmg
- path: target/release/Zed.dmg
-
- - uses: softprops/action-gh-release@v1
- name: Upload app bundle to release
- if: ${{ env.RELEASE_CHANNEL == 'preview' || env.RELEASE_CHANNEL == 'stable' }}
- with:
- draft: true
- prerelease: ${{ env.RELEASE_CHANNEL == 'preview' }}
- files: target/release/Zed.dmg
- body: ""
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}