From 889ce064ceefda4da6de8a24b84a6fc23716e957 Mon Sep 17 00:00:00 2001 From: Francesco Noacco Date: Sat, 19 Oct 2024 11:28:31 +0200 Subject: [PATCH] temp: allow ci on all pushes --- .gitea/workflows/ci.yml | 398 +++++++++++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 4 +- 2 files changed, 399 insertions(+), 3 deletions(-) create mode 100644 .gitea/workflows/ci.yml diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 00000000000000..a569a612c0d1c7 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,398 @@ +name: CI + +on: + push: + branches: + - main + - "v[0-9]+.[0-9]+.x" + tags: + - "v*" + paths-ignore: + - "docs/**" + pull_request: + branches: + - "**" + paths-ignore: + - "docs/**" + - ".github/workflows/community_*" + +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 + +env: + CARGO_TERM_COLOR: always + CARGO_INCREMENTAL: 0 + RUST_BACKTRACE: 1 + +jobs: + migration_checks: + name: Check Postgres and Protobuf migrations, mergability + if: github.repository_owner == 'zed-industries' + timeout-minutes: 60 + runs-on: + - self-hosted + - test + steps: + - name: Checkout repo + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4 + with: + clean: false + fetch-depth: 0 # fetch full history + + - name: Remove untracked files + run: git clean -df + + - 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} + run: | + if [ -z "$GITHUB_BASE_REF" ]; + then + echo "BUF_BASE_BRANCH=$(git merge-base origin/main HEAD)" >> $GITHUB_ENV + else + git checkout -B temp + git merge -q origin/$GITHUB_BASE_REF -m "merge main into temp" + echo "BUF_BASE_BRANCH=$GITHUB_BASE_REF" >> $GITHUB_ENV + fi + + - uses: bufbuild/buf-setup-action@v1 + with: + version: v1.29.0 + - uses: bufbuild/buf-breaking-action@v1 + with: + 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 + + - name: Check for typos + uses: crate-ci/typos@v1.24.6 + with: + config: ./typos.toml + + macos_tests: + timeout-minutes: 60 + name: (macOS) Run Clippy and tests + runs-on: + - self-hosted + - test + steps: + - name: Checkout repo + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4 + with: + clean: false + + - 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 + + - name: Build collab + run: RUSTFLAGS="-D warnings" cargo build -p collab + + - name: Build other binaries and features + run: | + RUSTFLAGS="-D warnings" cargo build --workspace --bins --all-features + cargo check -p gpui --features "macos-blade" + RUSTFLAGS="-D warnings" cargo build -p remote_server + + linux_tests: + timeout-minutes: 60 + name: (Linux) Run Clippy and tests + runs-on: + - buildjet-16vcpu-ubuntu-2204 + steps: + - name: Add Rust to the PATH + run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH + + - name: Checkout repo + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4 + with: + clean: false + + - name: Cache dependencies + uses: swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2 + with: + save-if: ${{ github.ref == 'refs/heads/main' }} + cache-provider: "buildjet" + + - name: Install Linux dependencies + run: ./script/linux + + - name: cargo clippy + run: ./script/clippy + + - name: Run tests + uses: ./.github/actions/run_tests + + - name: Build Zed + run: RUSTFLAGS="-D warnings" cargo build -p zed + + build_remote_server: + timeout-minutes: 60 + name: (Linux) Build Remote Server + runs-on: + - buildjet-16vcpu-ubuntu-2204 + steps: + - name: Add Rust to the PATH + run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH + + - name: Checkout repo + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4 + with: + clean: false + + - name: Cache dependencies + uses: swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2 + with: + save-if: ${{ github.ref == 'refs/heads/main' }} + cache-provider: "buildjet" + + - name: Install Clang & Mold + run: ./script/remote-server && ./script/install-mold 2.34.0 + + - name: Build Remote Server + run: RUSTFLAGS="-D warnings" cargo build -p remote_server + + # todo(windows): Actually run the tests + windows_tests: + timeout-minutes: 60 + name: (Windows) Run Clippy and tests + runs-on: hosted-windows-1 + steps: + - name: Checkout repo + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4 + with: + clean: false + + - name: Cache dependencies + uses: swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2 + with: + save-if: ${{ github.ref == 'refs/heads/main' }} + cache-provider: "github" + + - name: cargo clippy + # Windows can't run shell scripts, so we need to use `cargo xtask`. + run: cargo xtask clippy + + - name: Build Zed + run: $env:RUSTFLAGS="-D warnings"; cargo build + + bundle-mac: + timeout-minutes: 60 + name: Create a macOS bundle + runs-on: + - self-hosted + - bundle + if: ${{ startsWith(github.ref, 'refs/tags/v') || contains(github.event.pull_request.labels.*.name, 'run-bundling') }} + needs: [macos_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 }} + ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }} + ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }} + DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }} + DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }} + steps: + - name: Install Node + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4 + with: + node-version: "18" + + - name: Checkout repo + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4 + with: + # We need to fetch more than one commit so that `script/draft-release-notes` + # is able to diff between the current and previous tag. + # + # 25 was chosen arbitrarily. + fetch-depth: 25 + clean: false + + - 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: | + # This exports RELEASE_CHANNEL into env (GITHUB_ENV) + script/determine-release-channel + + - name: Draft release notes + if: ${{ startsWith(github.ref, 'refs/tags/v') }} + run: | + mkdir -p target/ + # Ignore any errors that occur while drafting release notes to not fail the build. + script/draft-release-notes "$version" "$channel" > target/release-notes.md || true + + - name: Generate license file + run: script/generate-licenses + + - name: Create macOS app bundle + run: script/bundle-mac + + - name: Rename single-architecture binaries + if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'run-bundling') }} + run: | + mv target/aarch64-apple-darwin/release/Zed.dmg target/aarch64-apple-darwin/release/Zed-aarch64.dmg + mv target/x86_64-apple-darwin/release/Zed.dmg target/x86_64-apple-darwin/release/Zed-x86_64.dmg + + - name: Upload app bundle (universal) to workflow run if main branch or specific label + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4 + if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'run-bundling') }} + with: + name: Zed_${{ github.event.pull_request.head.sha || github.sha }}.dmg + path: target/release/Zed.dmg + - name: Upload app bundle (aarch64) to workflow run if main branch or specific label + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4 + if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'run-bundling') }} + with: + name: Zed_${{ github.event.pull_request.head.sha || github.sha }}-aarch64.dmg + path: target/aarch64-apple-darwin/release/Zed-aarch64.dmg + + - name: Upload app bundle (x86_64) to workflow run if main branch or specific label + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4 + if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'run-bundling') }} + with: + name: Zed_${{ github.event.pull_request.head.sha || github.sha }}-x86_64.dmg + path: target/x86_64-apple-darwin/release/Zed-x86_64.dmg + + - uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # 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/zed-remote-server-macos-x86_64.gz + target/zed-remote-server-macos-aarch64.gz + target/aarch64-apple-darwin/release/Zed-aarch64.dmg + target/x86_64-apple-darwin/release/Zed-x86_64.dmg + target/release/Zed.dmg + body_path: target/release-notes.md + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + bundle-linux: + timeout-minutes: 60 + name: Create a Linux bundle + runs-on: + - buildjet-16vcpu-ubuntu-2004 + if: ${{ startsWith(github.ref, 'refs/tags/v') || contains(github.event.pull_request.labels.*.name, 'run-bundling') }} + needs: [linux_tests] + env: + ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }} + ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }} + steps: + - name: Checkout repo + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4 + with: + clean: false + + - name: Install Linux dependencies + run: ./script/linux && ./script/install-mold 2.34.0 + + - name: Determine version and release channel + if: ${{ startsWith(github.ref, 'refs/tags/v') }} + run: | + # This exports RELEASE_CHANNEL into env (GITHUB_ENV) + script/determine-release-channel + + - name: Create Linux .tar.gz bundle + run: script/bundle-linux + + - name: Upload Linux bundle to workflow run if main branch or specific label + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4 + if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'run-bundling') }} + with: + name: zed-${{ github.event.pull_request.head.sha || github.sha }}-x86_64-unknown-linux-gnu.tar.gz + path: target/release/zed-*.tar.gz + + - name: Upload app bundle to release + uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1 + with: + draft: true + prerelease: ${{ env.RELEASE_CHANNEL == 'preview' }} + files: | + target/zed-remote-server-linux-x86_64.gz + target/release/zed-linux-x86_64.tar.gz + body: "" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + bundle-linux-aarch64: # this runs on ubuntu22.04 + timeout-minutes: 60 + name: Create arm64 Linux bundle + runs-on: + - buildjet-16vcpu-ubuntu-2204-arm + if: ${{ startsWith(github.ref, 'refs/tags/v') || contains(github.event.pull_request.labels.*.name, 'run-bundling') }} + needs: [linux_tests] + env: + ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }} + ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }} + steps: + - name: Checkout repo + uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4 + with: + clean: false + + - name: Install Linux dependencies + run: ./script/linux + + - name: Determine version and release channel + if: ${{ startsWith(github.ref, 'refs/tags/v') }} + run: | + # This exports RELEASE_CHANNEL into env (GITHUB_ENV) + script/determine-release-channel + + - name: Create and upload Linux .tar.gz bundle + run: script/bundle-linux + + - name: Upload Linux bundle to workflow run if main branch or specific label + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4 + if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'run-bundling') }} + with: + name: zed-${{ github.event.pull_request.head.sha || github.sha }}-aarch64-unknown-linux-gnu.tar.gz + path: target/release/zed-*.tar.gz + + - name: Upload app bundle to release + uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1 + if: ${{ env.RELEASE_CHANNEL == 'preview' || env.RELEASE_CHANNEL == 'stable' }} + with: + draft: true + prerelease: ${{ env.RELEASE_CHANNEL == 'preview' }} + files: | + target/zed-remote-server-linux-aarch64.gz + target/release/zed-linux-aarch64.tar.gz + body: "" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a569a612c0d1c7..79831cf6526beb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,8 +3,7 @@ name: CI on: push: branches: - - main - - "v[0-9]+.[0-9]+.x" + - "**" tags: - "v*" paths-ignore: @@ -73,7 +72,6 @@ jobs: style: timeout-minutes: 60 name: Check formatting and spelling - if: github.repository_owner == 'zed-industries' runs-on: - buildjet-8vcpu-ubuntu-2204 steps: