]> git.lizzy.rs Git - rust.git/blob - .github/workflows/release.yaml
Merge branch 'master' into kdelorey/complete-trait-impl
[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 ra_lsp_server --bin ra_lsp_server --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 ra_lsp_server --bin ra_lsp_server --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/ra_lsp_server ./dist/ra_lsp_server-linux && strip ./dist/ra_lsp_server-linux
62
63       - name: Copy binary
64         if: matrix.os == 'macos-latest'
65         run: cp ./target/release/ra_lsp_server ./dist/ra_lsp_server-mac
66
67       - name: Copy binary
68         if: matrix.os == 'windows-latest'
69         run: copy ./target/release/ra_lsp_server.exe ./dist/ra_lsp_server-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/*.vsix ./dist/
97
98       - name: Copy emacs mode
99         run: cp ./editors/emacs/rust-analyzer.el ./dist/rust-analyzer.el
100
101       - name: Upload artifacts
102         uses: actions/upload-artifact@v1
103         with:
104           name: editor-plugins
105           path: ./dist
106
107   make-release:
108     name: make-release
109     runs-on: ubuntu-latest
110     needs: ['build-server', 'build-clients']
111     steps:
112       - uses: actions/download-artifact@v1
113         with:
114           name: editor-plugins
115           path: dist
116       - uses: actions/download-artifact@v1
117         with:
118           name: server-macos-latest
119           path: dist
120       - uses: actions/download-artifact@v1
121         with:
122           name: server-ubuntu-latest
123           path: dist
124       - uses: actions/download-artifact@v1
125         with:
126           name: server-windows-latest
127           path: dist
128       - run: ls -all ./dist
129
130       - run: echo "::set-env name=TAG::$(date --iso)"
131       - run: 'echo "TAG: $TAG"'
132
133       - name: Create Release
134         id: create_release
135         # uses: actions/create-release@v1
136         # https://github.com/actions/create-release/pull/32
137         uses: fleskesvor/create-release@1a72e235c178bf2ae6c51a8ae36febc24568c5fe
138         env:
139           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
140         with:
141           tag_name: ${{ env.TAG }}
142           release_name: ${{ env.TAG }}
143           draft: false
144           prerelease: false
145
146       - uses: actions/upload-release-asset@v1.0.1
147         env:
148           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
149         with:
150           upload_url: ${{ steps.create_release.outputs.upload_url }}
151           asset_path: ./dist/ra_lsp_server-linux
152           asset_name: ra_lsp_server-linux
153           asset_content_type: application/octet-stream
154
155       - uses: actions/upload-release-asset@v1.0.1
156         env:
157           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
158         with:
159           upload_url: ${{ steps.create_release.outputs.upload_url }}
160           asset_path: ./dist/ra_lsp_server-mac
161           asset_name: ra_lsp_server-mac
162           asset_content_type: application/octet-stream
163
164       - uses: actions/upload-release-asset@v1.0.1
165         env:
166           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
167         with:
168           upload_url: ${{ steps.create_release.outputs.upload_url }}
169           asset_path: ./dist/ra_lsp_server-windows.exe
170           asset_name: ra_lsp_server-windows.exe
171           asset_content_type: application/octet-stream
172
173       - uses: actions/upload-release-asset@v1.0.1
174         env:
175           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
176         with:
177           upload_url: ${{ steps.create_release.outputs.upload_url }}
178           asset_path: ./dist/rust-analyzer-0.1.0.vsix
179           asset_name: rust-analyzer-0.1.0.vsix
180           asset_content_type: application/octet-stream
181
182       - uses: actions/upload-release-asset@v1.0.1
183         env:
184           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
185         with:
186           upload_url: ${{ steps.create_release.outputs.upload_url }}
187           asset_path: ./dist/rust-analyzer.el
188           asset_name: rust-analyzer.el
189           asset_content_type: text/plain