4 - cron: '0 0 * * *' # midnight UTC
16 RUSTFLAGS: "-D warnings -W unreachable-pub"
17 RUSTUP_MAX_RETRIES: 10
18 FETCH_DEPTH: 0 # pull in the tags for the version string
21 dist-x86_64-pc-windows-msvc:
22 name: dist (x86_64-pc-windows-msvc)
23 runs-on: windows-latest
25 RA_TARGET: x86_64-pc-windows-msvc
28 - name: Checkout repository
29 uses: actions/checkout@v2
31 fetch-depth: ${{ env.FETCH_DEPTH }}
33 # We need to disable the existing toolchain to avoid updating rust-docs
34 # which takes a long time. The fastest way to do this is to rename the
35 # existing folder, as deleting it takes about as much time as not doing
36 # anything and just updating rust-docs.
37 - name: Rename existing rust toolchain
38 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
40 - name: Install Rust toolchain
41 uses: actions-rs/toolchain@v1
50 - name: Upload artifacts
51 uses: actions/upload-artifact@v1
53 name: dist-x86_64-pc-windows-msvc
56 dist-aarch64-pc-windows-msvc:
57 name: dist (aarch64-pc-windows-msvc)
58 runs-on: windows-latest
60 RA_TARGET: aarch64-pc-windows-msvc
63 - name: Checkout repository
64 uses: actions/checkout@v2
66 fetch-depth: ${{ env.FETCH_DEPTH }}
68 - name: Rename existing rust toolchain
69 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
71 - name: Install Rust toolchain
72 uses: actions-rs/toolchain@v1
75 target: aarch64-pc-windows-msvc
82 - name: Upload artifacts
83 uses: actions/upload-artifact@v1
85 name: dist-aarch64-pc-windows-msvc
88 dist-x86_64-unknown-linux-gnu:
89 name: dist (x86_64-unknown-linux-gnu)
92 RA_TARGET: x86_64-unknown-linux-gnu
95 - name: Checkout repository
96 uses: actions/checkout@v2
98 fetch-depth: ${{ env.FETCH_DEPTH }}
100 - name: Install Rust toolchain
101 uses: actions-rs/toolchain@v1
108 - name: Install Nodejs
109 uses: actions/setup-node@v1
114 run: cargo xtask dist --client-patch-version $GITHUB_RUN_NUMBER
116 - name: Run analysis-stats on rust-analyzer
117 run: target/${{ env.RA_TARGET }}/release/rust-analyzer analysis-stats .
119 - name: Run analysis-stats on rust std library
120 run: target/${{ env.RA_TARGET }}/release/rust-analyzer analysis-stats --with-deps $(rustc --print sysroot)/lib/rustlib/src/rust/library/std
122 - name: Upload artifacts
123 uses: actions/upload-artifact@v1
125 name: dist-x86_64-unknown-linux-gnu
128 dist-aarch64-unknown-linux-gnu:
129 name: dist (aarch64-unknown-linux-gnu)
130 runs-on: ubuntu-20.04
132 RA_TARGET: aarch64-unknown-linux-gnu
133 CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
136 - name: Checkout repository
137 uses: actions/checkout@v2
139 fetch-depth: ${{ env.FETCH_DEPTH }}
141 - name: Install Rust toolchain
142 uses: actions-rs/toolchain@v1
145 target: aarch64-unknown-linux-gnu
149 - name: Update apt repositories
150 run: sudo apt-get update
152 - name: Install target toolchain
153 run: sudo apt-get install gcc-aarch64-linux-gnu
156 run: cargo xtask dist
158 - name: Upload artifacts
159 uses: actions/upload-artifact@v1
161 name: dist-aarch64-unknown-linux-gnu
164 dist-x86_64-unknown-linux-musl:
165 name: dist (x86_64-unknown-linux-musl)
166 runs-on: ubuntu-latest
168 RA_TARGET: x86_64-unknown-linux-musl
169 # For some reason `-crt-static` is not working for clang without lld
170 RUSTFLAGS: "-C link-arg=-fuse-ld=lld -C target-feature=-crt-static"
174 - /usr/local/cargo/registry
177 - name: Install dependencies
178 run: apk add --no-cache git clang lld musl-dev
180 - name: Checkout repository
181 uses: actions/checkout@v2
183 fetch-depth: ${{ env.FETCH_DEPTH }}
186 run: cargo xtask dist
188 - name: Upload artifacts
189 uses: actions/upload-artifact@v1
191 name: dist-x86_64-unknown-linux-musl
194 dist-x86_64-apple-darwin:
195 name: dist (x86_64-apple-darwin)
196 runs-on: macos-latest
198 RA_TARGET: x86_64-apple-darwin
199 # SELECT_XCODE: /Applications/Xcode_12.2.app
202 # use the default (12.5.1 as of today)
203 # - name: Select XCode version
204 # run: sudo xcode-select -s "${SELECT_XCODE}"
206 - name: Checkout repository
207 uses: actions/checkout@v2
209 fetch-depth: ${{ env.FETCH_DEPTH }}
211 - name: Install Rust toolchain
212 uses: actions-rs/toolchain@v1
219 run: cargo xtask dist
221 - name: Upload artifacts
222 uses: actions/upload-artifact@v1
224 name: dist-x86_64-apple-darwin
227 dist-aarch64-apple-darwin:
228 name: dist (aarch64-apple-darwin)
229 runs-on: macos-latest
231 RA_TARGET: aarch64-apple-darwin
232 # SELECT_XCODE: /Applications/Xcode_12.2.app
235 # - name: Select XCode version
236 # run: sudo xcode-select -s "${SELECT_XCODE}"
238 - name: Checkout repository
239 uses: actions/checkout@v2
241 fetch-depth: ${{ env.FETCH_DEPTH }}
243 - name: Install Rust toolchain
244 uses: actions-rs/toolchain@v1
247 target: aarch64-apple-darwin
252 run: SDKROOT=$(xcrun -sdk macosx11.0 --show-sdk-path) MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx11.0 --show-sdk-platform-version) cargo xtask dist
254 - name: Upload artifacts
255 uses: actions/upload-artifact@v1
257 name: dist-aarch64-apple-darwin
262 runs-on: ubuntu-latest
263 needs: ['dist-x86_64-pc-windows-msvc', 'dist-aarch64-pc-windows-msvc', 'dist-x86_64-unknown-linux-gnu', 'dist-x86_64-unknown-linux-musl', 'dist-aarch64-unknown-linux-gnu', 'dist-x86_64-apple-darwin', 'dist-aarch64-apple-darwin']
265 - name: Install Nodejs
266 uses: actions/setup-node@v1
270 - run: echo "TAG=$(date --iso -u)" >> $GITHUB_ENV
271 if: github.ref == 'refs/heads/release'
272 - run: echo "TAG=nightly" >> $GITHUB_ENV
273 if: github.ref != 'refs/heads/release'
274 - run: 'echo "TAG: $TAG"'
276 - name: Checkout repository
277 uses: actions/checkout@v2
279 fetch-depth: ${{ env.FETCH_DEPTH }}
281 - run: echo "HEAD_SHA=$(git rev-parse HEAD)" >> $GITHUB_ENV
282 - run: 'echo "HEAD_SHA: $HEAD_SHA"'
284 - uses: actions/download-artifact@v1
286 name: dist-aarch64-apple-darwin
288 - uses: actions/download-artifact@v1
290 name: dist-x86_64-apple-darwin
292 - uses: actions/download-artifact@v1
294 name: dist-x86_64-unknown-linux-gnu
296 - uses: actions/download-artifact@v1
298 name: dist-x86_64-unknown-linux-musl
300 - uses: actions/download-artifact@v1
302 name: dist-aarch64-unknown-linux-gnu
304 - uses: actions/download-artifact@v1
306 name: dist-x86_64-pc-windows-msvc
308 - uses: actions/download-artifact@v1
310 name: dist-aarch64-pc-windows-msvc
314 - name: Publish Release
315 uses: ./.github/actions/github-release
319 token: ${{ secrets.GITHUB_TOKEN }}
322 working-directory: ./editors/code
324 - name: Publish Extension
325 if: github.ref == 'refs/heads/release'
326 working-directory: ./editors/code
327 # token from https://dev.azure.com/rust-analyzer/
328 run: npx vsce publish --pat ${{ secrets.MARKETPLACE_TOKEN }} --packagePath ../../dist/rust-analyzer.vsix