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