1name: Release Nightly
2
3on:
4 push:
5 tags:
6 - "nightly"
7
8env:
9 CARGO_TERM_COLOR: always
10 CARGO_INCREMENTAL: 0
11 RUST_BACKTRACE: 1
12
13jobs:
14 style:
15 timeout-minutes: 60
16 name: Check formatting and Clippy lints
17 if: github.repository_owner == 'zed-industries'
18 runs-on:
19 - self-hosted
20 - test
21 steps:
22 - name: Checkout repo
23 uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
24 with:
25 clean: false
26 fetch-depth: 0
27
28 - name: Run style checks
29 uses: ./.github/actions/check_style
30
31 - name: Run clippy
32 run: ./script/clippy
33
34 tests:
35 timeout-minutes: 60
36 name: Run tests
37 if: github.repository_owner == 'zed-industries'
38 runs-on:
39 - self-hosted
40 - test
41 needs: style
42 steps:
43 - name: Checkout repo
44 uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
45 with:
46 clean: false
47
48 - name: Run tests
49 uses: ./.github/actions/run_tests
50
51 bundle-mac:
52 timeout-minutes: 60
53 name: Create a macOS bundle
54 if: github.repository_owner == 'zed-industries'
55 runs-on:
56 - self-hosted
57 - bundle
58 needs: tests
59 env:
60 MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
61 MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
62 APPLE_NOTARIZATION_USERNAME: ${{ secrets.APPLE_NOTARIZATION_USERNAME }}
63 APPLE_NOTARIZATION_PASSWORD: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }}
64 DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
65 DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
66 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
67 ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
68 steps:
69 - name: Install Node
70 uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4
71 with:
72 node-version: "18"
73
74 - name: Checkout repo
75 uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
76 with:
77 clean: false
78
79 - name: Set release channel to nightly
80 run: |
81 set -eu
82 version=$(git rev-parse --short HEAD)
83 echo "Publishing version: ${version} on release channel nightly"
84 echo "nightly" > crates/zed/RELEASE_CHANNEL
85
86 - name: Generate license file
87 run: script/generate-licenses
88
89 - name: Create macOS app bundle
90 run: script/bundle-mac
91
92 - name: Upload Zed Nightly
93 run: script/upload-nightly macos
94
95 bundle-linux-x86:
96 timeout-minutes: 60
97 name: Create a Linux *.tar.gz bundle for x86
98 if: github.repository_owner == 'zed-industries'
99 runs-on:
100 - self-hosted
101 - deploy
102 needs: tests
103 env:
104 DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
105 DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
106 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
107 ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
108 steps:
109 - name: Checkout repo
110 uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
111 with:
112 clean: false
113
114 - name: Add Rust to the PATH
115 run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH
116
117 - name: Set release channel to nightly
118 run: |
119 set -euo pipefail
120 version=$(git rev-parse --short HEAD)
121 echo "Publishing version: ${version} on release channel nightly"
122 echo "nightly" > crates/zed/RELEASE_CHANNEL
123
124 - name: Create Linux .tar.gz bundle
125 run: script/bundle-linux
126
127 - name: Upload Zed Nightly
128 run: script/upload-nightly linux-targz
129
130 bundle-linux-arm:
131 timeout-minutes: 60
132 name: Create a Linux *.tar.gz bundle for ARM
133 if: github.repository_owner == 'zed-industries'
134 runs-on:
135 - hosted-linux-arm-1
136 needs: tests
137 env:
138 DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
139 DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
140 ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
141 ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
142 steps:
143 - name: Checkout repo
144 uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
145 with:
146 clean: false
147
148 - name: Install Linux dependencies
149 run: ./script/linux
150
151 - name: Limit target directory size
152 run: script/clear-target-dir-if-larger-than 100
153
154 - name: Set release channel to nightly
155 run: |
156 set -euo pipefail
157 version=$(git rev-parse --short HEAD)
158 echo "Publishing version: ${version} on release channel nightly"
159 echo "nightly" > crates/zed/RELEASE_CHANNEL
160
161 - name: Create Linux .tar.gz bundle
162 run: script/bundle-linux
163
164 - name: Upload Zed Nightly
165 run: script/upload-nightly linux-targz