release_nightly.yml

 1name: Release Nightly
 2
 3on:
 4  schedule:
 5    # Fire every night at 1:00am
 6    - cron: "0 1 * * *"
 7  push:
 8    tags:
 9      - "nightly"
10
11env:
12  CARGO_TERM_COLOR: always
13  CARGO_INCREMENTAL: 0
14  RUST_BACKTRACE: 1
15
16jobs:
17  rustfmt:
18    name: Check formatting
19    runs-on:
20      - self-hosted
21      - test
22    steps:
23      - name: Checkout repo
24        uses: actions/checkout@v3
25        with:
26          clean: false
27          submodules: "recursive"
28
29      - name: Run rustfmt
30        uses: ./.github/actions/check_formatting
31
32  tests:
33    name: Run tests
34    runs-on:
35      - self-hosted
36      - test
37    needs: rustfmt
38    steps:
39      - name: Checkout repo
40        uses: actions/checkout@v3
41        with:
42          clean: false
43          submodules: "recursive"
44
45      - name: Run tests
46        uses: ./.github/actions/run_tests
47
48  bundle:
49    name: Bundle app
50    runs-on:
51      - self-hosted
52      - bundle
53    needs: tests
54    env:
55      MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
56      MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
57      APPLE_NOTARIZATION_USERNAME: ${{ secrets.APPLE_NOTARIZATION_USERNAME }}
58      APPLE_NOTARIZATION_PASSWORD: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }}
59      DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
60      DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
61    steps:
62      - name: Install Rust
63        run: |
64          rustup set profile minimal
65          rustup update stable
66          rustup target add aarch64-apple-darwin
67          rustup target add x86_64-apple-darwin
68          rustup target add wasm32-wasi
69
70      - name: Install Node
71        uses: actions/setup-node@v3
72        with:
73          node-version: "18"
74
75      - name: Checkout repo
76        uses: actions/checkout@v3
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 -2
96
97      - name: Upload Zed Nightly
98        run: script/upload-nightly