4 - cron: '0 0 * * *' # midnight UTC
14 RUSTFLAGS: "-D warnings -W unreachable-pub"
15 RUSTUP_MAX_RETRIES: 10
18 dist-x86_64-pc-windows-msvc:
19 name: dist (x86_64-pc-windows-msvc)
20 runs-on: windows-latest
22 RA_TARGET: x86_64-pc-windows-msvc
25 - name: Checkout repository
26 uses: actions/checkout@v2
28 # We need to disable the existing toolchain to avoid updating rust-docs
29 # which takes a long time. The fastest way to do this is to rename the
30 # existing folder, as deleting it takes about as much time as not doing
31 # anything and just updating rust-docs.
32 - name: Rename existing rust toolchain
33 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
35 - name: Install Rust toolchain
36 uses: actions-rs/toolchain@v1
45 - name: Upload artifacts
46 uses: actions/upload-artifact@v1
48 name: dist-x86_64-pc-windows-msvc
51 dist-aarch64-pc-windows-msvc:
52 name: dist (aarch64-pc-windows-msvc)
53 runs-on: windows-latest
55 RA_TARGET: aarch64-pc-windows-msvc
58 - name: Checkout repository
59 uses: actions/checkout@v2
61 - name: Rename existing rust toolchain
62 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
64 - name: Install Rust toolchain
65 uses: actions-rs/toolchain@v1
68 target: aarch64-pc-windows-msvc
75 - name: Upload artifacts
76 uses: actions/upload-artifact@v1
78 name: dist-aarch64-pc-windows-msvc
81 dist-x86_64-unknown-linux-gnu:
82 name: dist (x86_64-unknown-linux-gnu)
85 RA_TARGET: x86_64-unknown-linux-gnu
88 - name: Checkout repository
89 uses: actions/checkout@v2
91 - name: Install Rust toolchain
92 uses: actions-rs/toolchain@v1
99 - name: Install Nodejs
100 uses: actions/setup-node@v1
105 if: github.ref == 'refs/heads/release'
106 run: cargo xtask dist --client 0.2.$GITHUB_RUN_NUMBER
109 if: github.ref != 'refs/heads/release'
110 run: cargo xtask dist --nightly --client 0.3.$GITHUB_RUN_NUMBER-nightly
112 - name: Run analysis-stats on rust-analyzer
113 run: target/${{ env.RA_TARGET }}/release/rust-analyzer analysis-stats .
115 - name: Run analysis-stats on rust std library
116 run: target/${{ env.RA_TARGET }}/release/rust-analyzer analysis-stats --with-deps $(rustc --print sysroot)/lib/rustlib/src/rust/library/std
118 - name: Upload artifacts
119 uses: actions/upload-artifact@v1
121 name: dist-x86_64-unknown-linux-gnu
124 dist-x86_64-unknown-linux-musl:
125 name: dist (x86_64-unknown-linux-musl)
126 runs-on: ubuntu-20.04
128 RA_TARGET: x86_64-unknown-linux-musl
129 # For some reason `-crt-static` is not working for clang without lld
130 RUSTFLAGS: "-C link-arg=-fuse-ld=lld -C target-feature=-crt-static"
134 - /usr/local/cargo/registry
137 - name: Install dependencies
138 run: apk add --no-cache git clang lld musl-dev
140 - name: Checkout repository
141 uses: actions/checkout@v2
144 run: cargo xtask dist
146 - name: Upload artifacts
147 uses: actions/upload-artifact@v1
149 name: dist-x86_64-unknown-linux-musl
152 dist-aarch64-unknown-linux-gnu:
153 name: dist (aarch64-unknown-linux-gnu)
154 runs-on: ubuntu-16.04
156 RA_TARGET: aarch64-unknown-linux-gnu
157 CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
160 - name: Checkout repository
161 uses: actions/checkout@v2
163 - name: Install Rust toolchain
164 uses: actions-rs/toolchain@v1
167 target: aarch64-unknown-linux-gnu
171 - name: Install target toolchain
172 run: sudo apt-get install gcc-aarch64-linux-gnu
175 run: cargo xtask dist
177 - name: Upload artifacts
178 uses: actions/upload-artifact@v1
180 name: dist-aarch64-unknown-linux-gnu
183 dist-x86_64-apple-darwin:
184 name: dist (x86_64-apple-darwin)
185 runs-on: macos-latest
187 RA_TARGET: x86_64-apple-darwin
188 SELECT_XCODE: /Applications/Xcode_12.2.app
191 - name: Select XCode version
192 run: sudo xcode-select -s "${SELECT_XCODE}"
194 - name: Checkout repository
195 uses: actions/checkout@v2
197 - name: Install Rust toolchain
198 uses: actions-rs/toolchain@v1
205 run: cargo xtask dist
207 - name: Upload artifacts
208 uses: actions/upload-artifact@v1
210 name: dist-x86_64-apple-darwin
213 dist-aarch64-apple-darwin:
214 name: dist (aarch64-apple-darwin)
215 runs-on: macos-latest
217 RA_TARGET: aarch64-apple-darwin
218 SELECT_XCODE: /Applications/Xcode_12.2.app
221 - name: Select XCode version
222 run: sudo xcode-select -s "${SELECT_XCODE}"
224 - name: Checkout repository
225 uses: actions/checkout@v2
227 - name: Install Rust toolchain
228 uses: actions-rs/toolchain@v1
231 target: aarch64-apple-darwin
236 run: SDKROOT=$(xcrun -sdk macosx11.0 --show-sdk-path) MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx11.0 --show-sdk-platform-version) cargo xtask dist
238 - name: Upload artifacts
239 uses: actions/upload-artifact@v1
241 name: dist-aarch64-apple-darwin
246 runs-on: ubuntu-16.04
247 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']
249 - name: Install Nodejs
250 uses: actions/setup-node@v1
254 - run: echo "TAG=$(date --iso --utc)" >> $GITHUB_ENV
255 if: github.ref == 'refs/heads/release'
256 - run: echo "TAG=nightly" >> $GITHUB_ENV
257 if: github.ref != 'refs/heads/release'
258 - run: 'echo "TAG: $TAG"'
260 - name: Checkout repository
261 uses: actions/checkout@v2
263 - run: echo "HEAD_SHA=$(git rev-parse HEAD)" >> $GITHUB_ENV
264 - run: 'echo "HEAD_SHA: $HEAD_SHA"'
266 - uses: actions/download-artifact@v1
268 name: dist-aarch64-apple-darwin
270 - uses: actions/download-artifact@v1
272 name: dist-x86_64-apple-darwin
274 - uses: actions/download-artifact@v1
276 name: dist-x86_64-unknown-linux-gnu
278 - uses: actions/download-artifact@v1
280 name: dist-x86_64-unknown-linux-musl
282 - uses: actions/download-artifact@v1
284 name: dist-aarch64-unknown-linux-gnu
286 - uses: actions/download-artifact@v1
288 name: dist-x86_64-pc-windows-msvc
290 - uses: actions/download-artifact@v1
292 name: dist-aarch64-pc-windows-msvc
296 - name: Publish Release
297 uses: ./.github/actions/github-release
301 token: ${{ secrets.GITHUB_TOKEN }}
304 working-directory: ./editors/code
306 - name: Publish Extension
307 if: github.ref == 'refs/heads/release'
308 working-directory: ./editors/code
309 # token from https://dev.azure.com/rust-analyzer/
310 run: npx vsce publish --pat ${{ secrets.MARKETPLACE_TOKEN }} --packagePath ../../dist/rust-analyzer.vsix