release_nightly.yml

  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      - buildjet-16vcpu-ubuntu-2204
101    needs: tests
102    env:
103      DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
104      DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
105      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
106      ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
107    steps:
108      - name: Checkout repo
109        uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
110        with:
111          clean: false
112
113      - name: Add Rust to the PATH
114        run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH
115
116      - name: Install Linux dependencies
117        run: ./script/linux
118
119      - name: Limit target directory size
120        run: script/clear-target-dir-if-larger-than 100
121
122      - name: Set release channel to nightly
123        run: |
124          set -euo pipefail
125          version=$(git rev-parse --short HEAD)
126          echo "Publishing version: ${version} on release channel nightly"
127          echo "nightly" > crates/zed/RELEASE_CHANNEL
128
129      - name: Create Linux .tar.gz bundle
130        run: script/bundle-linux
131
132      - name: Upload Zed Nightly
133        run: script/upload-nightly linux-targz
134
135  bundle-linux-arm:
136    timeout-minutes: 60
137    name: Create a Linux *.tar.gz bundle for ARM
138    if: github.repository_owner == 'zed-industries'
139    runs-on:
140      - hosted-linux-arm-1
141    needs: tests
142    env:
143      DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
144      DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
145      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
146      ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
147    steps:
148      - name: Checkout repo
149        uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
150        with:
151          clean: false
152
153      - name: Install Linux dependencies
154        run: ./script/linux
155
156      - name: Limit target directory size
157        run: script/clear-target-dir-if-larger-than 100
158
159      - name: Set release channel to nightly
160        run: |
161          set -euo pipefail
162          version=$(git rev-parse --short HEAD)
163          echo "Publishing version: ${version} on release channel nightly"
164          echo "nightly" > crates/zed/RELEASE_CHANNEL
165
166      - name: Create Linux .tar.gz bundle
167        run: script/bundle-linux
168
169      - name: Upload Zed Nightly
170        run: script/upload-nightly linux-targz