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    tests:
35        name: Run tests
36        if: github.repository_owner == 'zed-industries'
37        runs-on:
38            - self-hosted
39            - test
40        needs: style
41        steps:
42            - name: Checkout repo
43              uses: actions/checkout@v4
44              with:
45                  clean: false
46                  submodules: "recursive"
47
48            - name: Run tests
49              uses: ./.github/actions/run_tests
50
51    bundle:
52        name: Bundle app
53        if: github.repository_owner == 'zed-industries'
54        runs-on:
55            - self-hosted
56            - bundle
57        needs: tests
58        env:
59            MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
60            MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
61            APPLE_NOTARIZATION_USERNAME: ${{ secrets.APPLE_NOTARIZATION_USERNAME }}
62            APPLE_NOTARIZATION_PASSWORD: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }}
63            DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
64            DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
65            ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
66        steps:
67            - name: Install Node
68              uses: actions/setup-node@v4
69              with:
70                  node-version: "18"
71
72            - name: Checkout repo
73              uses: actions/checkout@v4
74              with:
75                  clean: false
76                  submodules: "recursive"
77
78            - name: Limit target directory size
79              run: script/clear-target-dir-if-larger-than 100
80
81            - name: Set release channel to nightly
82              run: |
83                  set -eu
84                  version=$(git rev-parse --short HEAD)
85                  echo "Publishing version: ${version} on release channel nightly"
86                  echo "nightly" > crates/zed/RELEASE_CHANNEL
87
88            - name: Generate license file
89              run: script/generate-licenses
90
91            - name: Create app bundle
92              run: script/bundle
93
94            - name: Upload Zed Nightly
95              run: script/upload-nightly