]> git.lizzy.rs Git - rust.git/blob - .github/workflows/release.yaml
75483b47702c327d1ade419636e195f3432be122
[rust.git] / .github / workflows / release.yaml
1 name: release
2 on:
3   schedule:
4   - cron: '0 0 * * *' # midnight UTC
5
6   push:
7     branches:
8     - release
9     - trigger-nightly
10
11 env:
12   CARGO_INCREMENTAL: 0
13   CARGO_NET_RETRY: 10
14   RUSTFLAGS: "-D warnings -W unreachable-pub"
15   RUSTUP_MAX_RETRIES: 10
16
17 jobs:
18   dist-windows:
19     name: dist (Windows)
20     runs-on: windows-latest
21
22     steps:
23     - name: Checkout repository
24       uses: actions/checkout@v2
25
26     # We need to disable the existing toolchain to avoid updating rust-docs
27     # which takes a long time. The fastest way to do this is to rename the
28     # existing folder, as deleting it takes about as much time as not doing
29     # anything and just updating rust-docs.
30     - name: Rename existing rust toolchain
31       run: Rename-Item C:\Users\runneradmin\.rustup\toolchains\stable-x86_64-pc-windows-msvc C:\Users\runneradmin\.rustup\toolchains\stable-x86_64-pc-windows-msvc.old
32
33     - name: Install Rust toolchain
34       uses: actions-rs/toolchain@v1
35       with:
36         toolchain: stable
37         profile: minimal
38         override: true
39
40     - name: Dist
41       run: cargo xtask dist
42       env:
43         RA_TARGET: x86_64-pc-windows-msvc
44
45     - name: Upload artifacts
46       uses: actions/upload-artifact@v1
47       with:
48         name: dist-windows-latest
49         path: ./dist
50
51   dist-ubuntu:
52     name: dist (Ubuntu 16.04)
53     runs-on: ubuntu-16.04
54
55     steps:
56     - name: Checkout repository
57       uses: actions/checkout@v2
58
59     - name: Install Rust toolchain
60       uses: actions-rs/toolchain@v1
61       with:
62         toolchain: stable
63         profile: minimal
64         override: true
65
66     - name: Install Nodejs
67       uses: actions/setup-node@v1
68       with:
69         node-version: 12.x
70
71     - name: Dist
72       if: github.ref == 'refs/heads/release'
73       run: cargo xtask dist --client 0.2.$GITHUB_RUN_NUMBER
74       env:
75         RA_TARGET: x86_64-unknown-linux-gnu
76
77     - name: Dist
78       if: github.ref != 'refs/heads/release'
79       run: cargo xtask dist --nightly --client 0.3.$GITHUB_RUN_NUMBER-nightly
80       env:
81         RA_TARGET: x86_64-unknown-linux-gnu
82
83     - name: Nightly analysis-stats check
84       if: github.ref != 'refs/heads/release'
85       run: target/x86_64-unknown-linux-gnu/release/rust-analyzer analysis-stats .
86
87     - name: Upload artifacts
88       uses: actions/upload-artifact@v1
89       with:
90         name: dist-ubuntu-16.04
91         path: ./dist
92
93   dist-macos-latest:
94     name: dist (MacOS latest)
95     runs-on: macos-latest
96
97     steps:
98     - name: Checkout repository
99       uses: actions/checkout@v2
100
101     - name: Install Rust toolchain
102       uses: actions-rs/toolchain@v1
103       with:
104         toolchain: stable
105         profile: minimal
106         override: true
107
108     - name: Dist
109       run: cargo xtask dist
110       env:
111         RA_TARGET: x86_64-apple-darwin
112
113     - name: Upload artifacts
114       uses: actions/upload-artifact@v1
115       with:
116         name: dist-macos-latest
117         path: ./dist
118
119   dist-macos-11:
120     name: dist (MacOS 11.0)
121     runs-on: macos-11.0
122
123     steps:
124     - name: Checkout repository
125       uses: actions/checkout@v2
126
127     - name: Install Rust toolchain (beta)
128       uses: actions-rs/toolchain@v1
129       with:
130         toolchain: beta
131         target: aarch64-apple-darwin
132         profile: minimal
133         override: true
134
135     - name: Dist
136       run: cargo xtask dist
137       env:
138         RA_TARGET: aarch64-apple-darwin
139
140     - name: Upload artifacts
141       uses: actions/upload-artifact@v1
142       with:
143         name: dist-macos-11.0
144         path: ./dist
145
146   publish:
147     name: publish
148     runs-on: ubuntu-16.04
149     needs: ['dist-windows', 'dist-ubuntu', 'dist-macos-latest', 'dist-macos-11']
150     steps:
151     - name: Install Nodejs
152       uses: actions/setup-node@v1
153       with:
154         node-version: 12.x
155
156     - run: echo "TAG=$(date --iso --utc)" >> $GITHUB_ENV
157       if: github.ref == 'refs/heads/release'
158     - run: echo "TAG=nightly" >> $GITHUB_ENV
159       if: github.ref != 'refs/heads/release'
160     - run: 'echo "TAG: $TAG"'
161
162     - name: Checkout repository
163       uses: actions/checkout@v2
164
165     - run: echo "HEAD_SHA=$(git rev-parse HEAD)" >> $GITHUB_ENV
166     - run: 'echo "HEAD_SHA: $HEAD_SHA"'
167
168     - uses: actions/download-artifact@v1
169       with:
170         name: dist-macos-11.0
171         path: dist
172     - uses: actions/download-artifact@v1
173       with:
174         name: dist-macos-latest
175         path: dist
176     - uses: actions/download-artifact@v1
177       with:
178         name: dist-ubuntu-16.04
179         path: dist
180     - uses: actions/download-artifact@v1
181       with:
182         name: dist-windows-latest
183         path: dist
184     - run: ls -al ./dist
185
186     - name: Publish Release
187       uses: ./.github/actions/github-release
188       with:
189         files: "dist/*"
190         name: ${{ env.TAG }}
191         token: ${{ secrets.GITHUB_TOKEN }}
192
193     - run: npm ci
194       working-directory: ./editors/code
195
196     - name: Publish Extension
197       if: github.ref == 'refs/heads/release'
198       working-directory: ./editors/code
199       # token from https://dev.azure.com/rust-analyzer/
200       run: npx vsce publish --pat ${{ secrets.MARKETPLACE_TOKEN }} --packagePath ../../dist/rust-analyzer.vsix