10 runs-on: ${{ matrix.os }}
13 os: [ubuntu-latest, windows-latest, macos-latest]
15 RUSTFLAGS: -D warnings
17 RUSTUP_MAX_RETRIES: 10
21 - name: Checkout repository
22 uses: actions/checkout@v1
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
32 - name: Install Rust toolchain
33 uses: actions-rs/toolchain@v1
37 target: x86_64-unknown-linux-musl
41 if: matrix.os == 'ubuntu-latest'
42 uses: actions-rs/cargo@v1
47 args: --package ra_lsp_server --bin ra_lsp_server --release --target x86_64-unknown-linux-musl
50 if: matrix.os != 'ubuntu-latest'
51 uses: actions-rs/cargo@v1
54 args: --package ra_lsp_server --bin ra_lsp_server --release
56 - name: Create distribution dir
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
64 if: matrix.os == 'macos-latest'
65 run: cp ./target/release/ra_lsp_server ./dist/ra_lsp_server-mac
68 if: matrix.os == 'windows-latest'
69 run: copy ./target/release/ra_lsp_server.exe ./dist/ra_lsp_server-windows.exe
71 - name: Upload artifacts
72 uses: actions/upload-artifact@v1
74 name: server-${{ matrix.os }}
79 runs-on: ubuntu-latest
81 - name: Checkout repository
82 uses: actions/checkout@v1
84 - name: Install Nodejs
85 uses: actions/setup-node@v1
90 working-directory: ./editors/code
92 - run: npm run package --scripts-prepend-node-path
93 working-directory: ./editors/code
95 - name: Copy vscode extension
96 run: mkdir -p ./dist/code && cp ./editors/code/*.vsix ./dist/
98 - name: Upload artifacts
99 uses: actions/upload-artifact@v1
106 runs-on: ubuntu-latest
107 needs: ['build-server', 'build-clients']
109 - name: Install Nodejs
110 uses: actions/setup-node@v1
114 - run: echo "::set-env name=TAG::$(date --iso)"
115 - run: echo "::set-env name=EXT_VERSION::0.1.$(date +%Y%m%d)"
116 - run: 'echo "TAG: $TAG EXT_VERSION: $EXT_VERSION"'
118 - name: Checkout repository
119 uses: actions/checkout@v1
121 - uses: actions/download-artifact@v1
125 - uses: actions/download-artifact@v1
127 name: server-macos-latest
129 - uses: actions/download-artifact@v1
131 name: server-ubuntu-latest
133 - uses: actions/download-artifact@v1
135 name: server-windows-latest
137 - run: ls -all ./dist
139 - name: Create Release
141 # uses: actions/create-release@v1
142 # https://github.com/actions/create-release/pull/32
143 uses: fleskesvor/create-release@1a72e235c178bf2ae6c51a8ae36febc24568c5fe
145 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
147 tag_name: ${{ env.TAG }}
148 release_name: ${{ env.TAG }}
152 - uses: actions/upload-release-asset@v1.0.1
154 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
156 upload_url: ${{ steps.create_release.outputs.upload_url }}
157 asset_path: ./dist/ra_lsp_server-linux
158 asset_name: ra_lsp_server-linux
159 asset_content_type: application/octet-stream
161 - uses: actions/upload-release-asset@v1.0.1
163 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
165 upload_url: ${{ steps.create_release.outputs.upload_url }}
166 asset_path: ./dist/ra_lsp_server-mac
167 asset_name: ra_lsp_server-mac
168 asset_content_type: application/octet-stream
170 - uses: actions/upload-release-asset@v1.0.1
172 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
174 upload_url: ${{ steps.create_release.outputs.upload_url }}
175 asset_path: ./dist/ra_lsp_server-windows.exe
176 asset_name: ra_lsp_server-windows.exe
177 asset_content_type: application/octet-stream
179 - uses: actions/upload-release-asset@v1.0.1
181 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
183 upload_url: ${{ steps.create_release.outputs.upload_url }}
184 asset_path: ./dist/rust-analyzer-${{ env.EXT_VERSION }}.vsix
185 asset_name: rust-analyzer-${{ env.EXT_VERSION }}.vsix
186 asset_content_type: application/octet-stream
189 working-directory: ./editors/code
191 - name: Publish Extension
192 working-directory: ./editors/code
193 # token from https://dev.azure.com/rust-analyzer/
194 run: npx vsce publish $EXT_VERSION --pat ${{ secrets.MARKETPLACE_TOKEN }}