]> git.lizzy.rs Git - rust.git/blob - .github/workflows/release.yaml
Merge pull request #3204 from Veetaha/feature/vscode-remove-updates-notification...
[rust.git] / .github / workflows / release.yaml
1 name: release
2 on:
3   push:
4     branches:
5       - release
6
7 jobs:
8   build-server:
9     name: build-server
10     runs-on: ${{ matrix.os }}
11     strategy:
12       matrix:
13         os: [ubuntu-latest, windows-latest, macos-latest]
14     env:
15       RUSTFLAGS: -D warnings
16       CARGO_INCREMENTAL: 0
17       RUSTUP_MAX_RETRIES: 10
18       CARGO_NET_RETRY: 10
19     steps:
20
21       - name: Checkout repository
22         uses: actions/checkout@v1
23
24       # We need to disable the existing toolchain to avoid updating rust-docs
25       # which takes a long time. The fastest way to do this is to rename the
26       # existing folder, as deleting it takes about as much time as not doing
27       # anything and just updating rust-docs.
28       - name: Rename existing rust toolchain (Windows)
29         if: matrix.os == 'windows-latest'
30         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
31
32       - name: Install Rust toolchain
33         uses: actions-rs/toolchain@v1
34         with:
35           toolchain: stable
36           profile: minimal
37           target: x86_64-unknown-linux-musl
38           override: true
39
40       - name: Build
41         if: matrix.os == 'ubuntu-latest'
42         uses: actions-rs/cargo@v1
43         env:
44           CC: clang
45         with:
46           command: build
47           args: --package rust-analyzer --bin rust-analyzer --release --target x86_64-unknown-linux-musl
48
49       - name: Build
50         if: matrix.os != 'ubuntu-latest'
51         uses: actions-rs/cargo@v1
52         with:
53           command: build
54           args: --package rust-analyzer --bin rust-analyzer --release
55
56       - name: Create distribution dir
57         run: mkdir ./dist
58
59       - name: Copy binary
60         if: matrix.os == 'ubuntu-latest'
61         run: cp ./target/x86_64-unknown-linux-musl/release/rust-analyzer ./dist/rust-analyzer-linux && strip ./dist/rust-analyzer-linux
62
63       - name: Copy binary
64         if: matrix.os == 'macos-latest'
65         run: cp ./target/release/rust-analyzer ./dist/rust-analyzer-mac
66
67       - name: Copy binary
68         if: matrix.os == 'windows-latest'
69         run: copy ./target/release/rust-analyzer.exe ./dist/rust-analyzer-windows.exe
70
71       - name: Upload artifacts
72         uses: actions/upload-artifact@v1
73         with:
74           name: server-${{ matrix.os }}
75           path: ./dist
76
77   build-clients:
78     name: build-clients
79     runs-on: ubuntu-latest
80     steps:
81       - name: Checkout repository
82         uses: actions/checkout@v1
83
84       - name: Install Nodejs
85         uses: actions/setup-node@v1
86         with:
87           node-version: 12.x
88
89       - run: npm ci
90         working-directory: ./editors/code
91
92       - run: npm run package --scripts-prepend-node-path
93         working-directory: ./editors/code
94
95       - name: Copy vscode extension
96         run: mkdir -p ./dist/code && cp ./editors/code/rust-analyzer.vsix ./dist/
97
98       - name: Upload artifacts
99         uses: actions/upload-artifact@v1
100         with:
101           name: editor-plugins
102           path: ./dist
103
104   make-release:
105     name: make-release
106     runs-on: ubuntu-latest
107     needs: ['build-server', 'build-clients']
108     steps:
109       - name: Install Nodejs
110         uses: actions/setup-node@v1
111         with:
112           node-version: 12.x
113
114       - run: echo "::set-env name=TAG::$(date --iso)"
115       - run: 'echo "TAG: $TAG"'
116
117       - name: Checkout repository
118         uses: actions/checkout@v1
119
120       - uses: actions/download-artifact@v1
121         with:
122           name: editor-plugins
123           path: dist
124       - uses: actions/download-artifact@v1
125         with:
126           name: server-macos-latest
127           path: dist
128       - uses: actions/download-artifact@v1
129         with:
130           name: server-ubuntu-latest
131           path: dist
132       - uses: actions/download-artifact@v1
133         with:
134           name: server-windows-latest
135           path: dist
136       - run: ls -all ./dist
137
138       - name: Create Release
139         id: create_release
140         # uses: actions/create-release@v1
141         # https://github.com/actions/create-release/pull/32
142         uses: fleskesvor/create-release@1a72e235c178bf2ae6c51a8ae36febc24568c5fe
143         env:
144           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
145         with:
146           tag_name: ${{ env.TAG }}
147           release_name: ${{ env.TAG }}
148           draft: false
149           prerelease: false
150
151       - uses: actions/upload-release-asset@v1.0.1
152         env:
153           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
154         with:
155           upload_url: ${{ steps.create_release.outputs.upload_url }}
156           asset_path: ./dist/rust-analyzer-linux
157           asset_name: rust-analyzer-linux
158           asset_content_type: application/octet-stream
159
160       - uses: actions/upload-release-asset@v1.0.1
161         env:
162           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
163         with:
164           upload_url: ${{ steps.create_release.outputs.upload_url }}
165           asset_path: ./dist/rust-analyzer-mac
166           asset_name: rust-analyzer-mac
167           asset_content_type: application/octet-stream
168
169       - uses: actions/upload-release-asset@v1.0.1
170         env:
171           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
172         with:
173           upload_url: ${{ steps.create_release.outputs.upload_url }}
174           asset_path: ./dist/rust-analyzer-windows.exe
175           asset_name: rust-analyzer-windows.exe
176           asset_content_type: application/octet-stream
177
178       - uses: actions/upload-release-asset@v1.0.1
179         env:
180           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
181         with:
182           upload_url: ${{ steps.create_release.outputs.upload_url }}
183           asset_path: ./dist/rust-analyzer.vsix
184           asset_name: rust-analyzer.vsix
185           asset_content_type: application/octet-stream
186
187       - run: npm ci
188         working-directory: ./editors/code
189
190       - name: Publish Extension
191         working-directory: ./editors/code
192         # token from https://dev.azure.com/rust-analyzer/
193         run: npx vsce publish 0.1.$(date +%Y%m%d) --pat ${{ secrets.MARKETPLACE_TOKEN }}