| name: CI-Release |
| on: |
| push: |
| branches: |
| - release |
| |
| jobs: |
| build-server: |
| name: build-server |
| runs-on: ${{ matrix.os }} |
| strategy: |
| matrix: |
| os: [ubuntu-latest, windows-latest, macos-latest] |
| env: |
| RUSTFLAGS: -D warnings |
| CARGO_INCREMENTAL: 0 |
| RUSTUP_MAX_RETRIES: 10 |
| CARGO_NET_RETRY: 10 |
| steps: |
| |
| - name: Checkout repository |
| uses: actions/checkout@v1 |
| |
| # We need to disable the existing toolchain to avoid updating rust-docs |
| # which takes a long time. The fastest way to do this is to rename the |
| # existing folder, as deleting it takes about as much time as not doing |
| # anything and just updating rust-docs. |
| - name: Rename existing rust toolchain (Windows) |
| if: matrix.os == 'windows-latest' |
| 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 |
| |
| - name: Install Rust toolchain |
| uses: actions-rs/toolchain@v1 |
| with: |
| toolchain: stable |
| profile: minimal |
| target: x86_64-unknown-linux-musl |
| override: true |
| |
| - name: Build |
| uses: actions-rs/cargo@v1 |
| with: |
| command: build |
| args: --package ra_lsp_server --bin ra_lsp_server --target x86_64-unknown-linux-musl --release |
| |
| - name: Strip symbols |
| if: matrix.os == 'ubuntu-latest' |
| run: strip ./target/release/ra_lsp_server |
| |
| - name: Create distribution dir |
| run: mkdir ./dist |
| |
| - name: Copy binary |
| if: matrix.os == 'ubuntu-latest' |
| run: cp ./target/release/ra_lsp_server ./dist/ra_lsp_server-linux |
| |
| - name: Copy binary |
| if: matrix.os == 'macos-latest' |
| run: cp ./target/release/ra_lsp_server ./dist/ra_lsp_server-mac |
| |
| - name: Copy binary |
| if: matrix.os == 'windows-latest' |
| run: copy ./target/release/ra_lsp_server.exe ./dist/ra_lsp_server-windows.exe |
| |
| - name: Upload artifacts |
| uses: actions/upload-artifact@v1 |
| with: |
| name: server-${{ matrix.os }} |
| path: ./dist |
| |
| build-clients: |
| name: build-clients |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout repository |
| uses: actions/checkout@v1 |
| |
| - name: Install Nodejs |
| uses: actions/setup-node@v1 |
| with: |
| node-version: 12.x |
| |
| - run: npm ci |
| working-directory: ./editors/code |
| |
| - run: npm run package --scripts-prepend-node-path |
| working-directory: ./editors/code |
| |
| - name: Copy vscode extension |
| run: mkdir -p ./dist/code && cp ./editors/code/*.vsix ./dist/ |
| |
| - name: Copy emacs mode |
| run: cp ./editors/emacs/rust-analyzer.el ./dist/rust-analyzer.el |
| |
| - name: Upload artifacts |
| uses: actions/upload-artifact@v1 |
| with: |
| name: editor-plugins |
| path: ./dist |
| |
| make-release: |
| name: make-release |
| runs-on: ubuntu-latest |
| needs: ['build-server', 'build-clients'] |
| steps: |
| - uses: actions/download-artifact@v1 |
| with: |
| name: editor-plugins |
| path: dist |
| - uses: actions/download-artifact@v1 |
| with: |
| name: server-macos-latest |
| path: dist |
| - uses: actions/download-artifact@v1 |
| with: |
| name: server-ubuntu-latest |
| path: dist |
| - uses: actions/download-artifact@v1 |
| with: |
| name: server-windows-latest |
| path: dist |
| - run: ls -all ./dist |
| |
| - run: echo "::set-env name=TAG::$(date --iso)" |
| - run: 'echo "TAG: $TAG"' |
| |
| - name: Create Release |
| id: create_release |
| uses: actions/create-release@v1 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| tag_name: ${{ env.TAG }} |
| release_name: ${{ env.TAG }} |
| draft: false |
| prerelease: false |
| |
| - uses: actions/upload-release-asset@v1.0.1 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release.outputs.upload_url }} |
| asset_path: ./dist/ra_lsp_server-linux |
| asset_name: ra_lsp_server-linux |
| asset_content_type: application/octet-stream |
| |
| - uses: actions/upload-release-asset@v1.0.1 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release.outputs.upload_url }} |
| asset_path: ./dist/ra_lsp_server-mac |
| asset_name: ra_lsp_server-mac |
| asset_content_type: application/octet-stream |
| |
| - uses: actions/upload-release-asset@v1.0.1 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release.outputs.upload_url }} |
| asset_path: ./dist/ra_lsp_server-windows.exe |
| asset_name: ra_lsp_server-windows.exe |
| asset_content_type: application/octet-stream |
| |
| - uses: actions/upload-release-asset@v1.0.1 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release.outputs.upload_url }} |
| asset_path: ./dist/rust-analyzer-0.1.0.vsix |
| asset_name: rust-analyzer-0.1.0.vsix |
| asset_content_type: application/octet-stream |
| |
| - uses: actions/upload-release-asset@v1.0.1 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release.outputs.upload_url }} |
| asset_path: ./dist/rust-analyzer.el |
| asset_name: rust-analyzer.el |
| asset_content_type: text/plain |