release_nightly.yml

 1name: Release Nightly
 2
 3on:
 4    schedule:
 5        # Fire every day at 7:00am UTC (Roughly before EU workday and after US workday)
 6        - cron: "0 7 * * *"
 7    push:
 8        tags:
 9            - "nightly"
10
11env:
12    CARGO_TERM_COLOR: always
13    CARGO_INCREMENTAL: 0
14    RUST_BACKTRACE: 1
15
16jobs:
17    style:
18        name: Check formatting and Clippy lints
19        if: github.repository_owner == 'zed-industries'
20        runs-on:
21            - self-hosted
22            - test
23        steps:
24            - name: Checkout repo
25              uses: actions/checkout@v4
26              with:
27                  clean: false
28                  submodules: "recursive"
29                  fetch-depth: 0
30
31            - name: Run style checks
32              uses: ./.github/actions/check_style
33
34            - name: Run clippy
35              shell: bash -euxo pipefail {0}
36              run: script/clippy
37    tests:
38        name: Run tests
39        if: github.repository_owner == 'zed-industries'
40        runs-on:
41            - self-hosted
42            - test
43        needs: style
44        steps:
45            - name: Checkout repo
46              uses: actions/checkout@v4
47              with:
48                  clean: false
49                  submodules: "recursive"
50
51            - name: Run tests
52              uses: ./.github/actions/run_tests
53
54    bundle:
55        name: Bundle app
56        if: github.repository_owner == 'zed-industries'
57        runs-on:
58            - self-hosted
59            - bundle
60        needs: tests
61        env:
62            MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
63            MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
64            APPLE_NOTARIZATION_USERNAME: ${{ secrets.APPLE_NOTARIZATION_USERNAME }}
65            APPLE_NOTARIZATION_PASSWORD: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }}
66            DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
67            DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
68            ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
69        steps:
70            - name: Install Node
71              uses: actions/setup-node@v4
72              with:
73                  node-version: "18"
74
75            - name: Checkout repo
76              uses: actions/checkout@v4
77              with:
78                  clean: false
79                  submodules: "recursive"
80
81            - name: Limit target directory size
82              run: script/clear-target-dir-if-larger-than 100
83
84            - name: Set release channel to nightly
85              run: |
86                  set -eu
87                  version=$(git rev-parse --short HEAD)
88                  echo "Publishing version: ${version} on release channel nightly"
89                  echo "nightly" > crates/zed/RELEASE_CHANNEL
90
91            - name: Generate license file
92              run: script/generate-licenses
93
94            - name: Create app bundle
95              run: script/bundle
96
97            - name: Upload Zed Nightly
98              run: script/upload-nightly