4 - cron: '0 0 * * *' # midnight UTC
13 runs-on: ${{ matrix.os }}
16 os: [ubuntu-latest, windows-latest, macos-latest]
19 RUSTFLAGS: -D warnings
21 RUSTUP_MAX_RETRIES: 10
25 - name: Checkout repository
26 uses: actions/checkout@v1
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 (Windows)
33 if: matrix.os == 'windows-latest'
34 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
36 - name: Install Rust toolchain
37 uses: actions-rs/toolchain@v1
41 target: x86_64-unknown-linux-musl
44 - name: Create distribution dir
48 if: matrix.os == 'ubuntu-latest'
49 run: cargo build --package rust-analyzer --bin rust-analyzer --release --target x86_64-unknown-linux-musl
53 - name: Build VS Code extension
54 if: matrix.os == 'ubuntu-latest' && github.event_name == 'push'
57 - name: Build VS Code extension
58 if: matrix.os == 'ubuntu-latest' && github.event_name != 'push'
59 run: cargo xtask dist --nightly
62 if: matrix.os != 'ubuntu-latest'
63 run: cargo build --package rust-analyzer --bin rust-analyzer --release
66 if: matrix.os == 'ubuntu-latest'
67 run: cp ./target/x86_64-unknown-linux-musl/release/rust-analyzer ./dist/rust-analyzer-linux && strip ./dist/rust-analyzer-linux
70 if: matrix.os == 'macos-latest'
71 run: cp ./target/release/rust-analyzer ./dist/rust-analyzer-mac
74 if: matrix.os == 'windows-latest'
75 run: copy ./target/release/rust-analyzer.exe ./dist/rust-analyzer-windows.exe
77 - name: Upload artifacts
78 uses: actions/upload-artifact@v1
80 name: server-${{ matrix.os }}
85 runs-on: ubuntu-latest
86 needs: ['build-server', 'build-clients']
88 - name: Install Nodejs
89 uses: actions/setup-node@v1
93 - run: echo "::set-env name=TAG::$(date --iso)"
94 if: github.event_name == 'push'
95 - run: echo "::set-env name=TAG::nightly"
96 if: github.event_name != 'push'
97 - run: 'echo "TAG: $TAG"'
99 - name: Checkout repository
100 uses: actions/checkout@v1
102 - uses: actions/download-artifact@v1
106 - uses: actions/download-artifact@v1
108 name: server-macos-latest
110 - uses: actions/download-artifact@v1
112 name: server-ubuntu-latest
114 - uses: actions/download-artifact@v1
116 name: server-windows-latest
118 - run: ls -all ./dist
120 - name: Publish Release
121 uses: ./.github/actions/github-release
125 token: ${{ secrets.GITHUB_TOKEN }}
128 working-directory: ./editors/code
130 - name: Publish Extension
131 if: github.event_name == 'push'
132 working-directory: ./editors/code
133 # token from https://dev.azure.com/rust-analyzer/
134 run: npx vsce publish 0.1.$(date +%Y%m%d) --pat ${{ secrets.MARKETPLACE_TOKEN }} --packagePath ../../dist/rust-analyzer.vsix