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
45 if: matrix.os == 'ubuntu-latest'
46 uses: actions-rs/cargo@v1
51 args: --package rust-analyzer --bin rust-analyzer --release --target x86_64-unknown-linux-musl
54 if: matrix.os != 'ubuntu-latest'
55 uses: actions-rs/cargo@v1
58 args: --package rust-analyzer --bin rust-analyzer --release
60 - name: Create distribution dir
64 if: matrix.os == 'ubuntu-latest'
65 run: cp ./target/x86_64-unknown-linux-musl/release/rust-analyzer ./dist/rust-analyzer-linux && strip ./dist/rust-analyzer-linux
68 if: matrix.os == 'macos-latest'
69 run: cp ./target/release/rust-analyzer ./dist/rust-analyzer-mac
72 if: matrix.os == 'windows-latest'
73 run: copy ./target/release/rust-analyzer.exe ./dist/rust-analyzer-windows.exe
75 - name: Upload artifacts
76 uses: actions/upload-artifact@v1
78 name: server-${{ matrix.os }}
83 runs-on: ubuntu-latest
85 - name: Checkout repository
86 uses: actions/checkout@v1
88 - name: Install Nodejs
89 uses: actions/setup-node@v1
94 working-directory: ./editors/code
96 - run: npm run package --scripts-prepend-node-path
97 working-directory: ./editors/code
99 - name: Copy vscode extension
100 run: mkdir -p ./dist/code && cp ./editors/code/rust-analyzer.vsix ./dist/
102 - name: Upload artifacts
103 uses: actions/upload-artifact@v1
110 runs-on: ubuntu-latest
111 needs: ['build-server', 'build-clients']
113 - name: Install Nodejs
114 uses: actions/setup-node@v1
118 - run: echo "::set-env name=TAG::$(date --iso)"
119 if: github.event_name == 'push'
120 - run: echo "::set-env name=TAG::nightly"
121 if: github.event_name != 'push'
122 - run: 'echo "TAG: $TAG"'
124 - name: Checkout repository
125 uses: actions/checkout@v1
127 - uses: actions/download-artifact@v1
131 - uses: actions/download-artifact@v1
133 name: server-macos-latest
135 - uses: actions/download-artifact@v1
137 name: server-ubuntu-latest
139 - uses: actions/download-artifact@v1
141 name: server-windows-latest
143 - run: ls -all ./dist
145 - name: Publish Release
146 uses: ./.github/actions/github-release
150 token: ${{ secrets.GITHUB_TOKEN }}
153 working-directory: ./editors/code
155 - name: Publish Extension
156 if: github.event_name == 'push'
157 working-directory: ./editors/code
158 # token from https://dev.azure.com/rust-analyzer/
159 run: npx vsce publish 0.1.$(date +%Y%m%d) --pat ${{ secrets.MARKETPLACE_TOKEN }}