name: release on: schedule: - cron: '0 0 * * *' # midnight UTC push: branches: - release - nightly env: CARGO_INCREMENTAL: 0 CARGO_NET_RETRY: 10 RUSTFLAGS: -D warnings RUSTUP_MAX_RETRIES: 10 jobs: dist: name: dist runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - name: Checkout repository uses: actions/checkout@v2 # 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: Install Nodejs if: matrix.os == 'ubuntu-latest' uses: actions/setup-node@v1 with: node-version: 12.x - name: Dist if: matrix.os == 'ubuntu-latest' && github.ref == 'refs/heads/release' run: cargo xtask dist --client --version 0.2.$GITHUB_RUN_NUMBER --tag $(date --iso --utc) - name: Dist if: matrix.os == 'ubuntu-latest' && github.ref != 'refs/heads/release' run: cargo xtask dist --client --version 0.3.$GITHUB_RUN_NUMBER-nightly --tag nightly - name: Dist if: matrix.os != 'ubuntu-latest' run: cargo xtask dist - name: Nightly analysis-stats check if: matrix.os == 'ubuntu-latest' && github.ref != 'refs/heads/release' run: ./dist/rust-analyzer-linux analysis-stats . - name: Upload artifacts uses: actions/upload-artifact@v1 with: name: dist-${{ matrix.os }} path: ./dist publish: name: publish runs-on: ubuntu-latest needs: ['dist'] steps: - name: Install Nodejs uses: actions/setup-node@v1 with: node-version: 12.x - run: echo "::set-env name=TAG::$(date --iso --utc)" if: github.ref == 'refs/heads/release' - run: echo "::set-env name=TAG::nightly" if: github.ref != 'refs/heads/release' - run: 'echo "TAG: $TAG"' - name: Checkout repository uses: actions/checkout@v2 - uses: actions/download-artifact@v1 with: name: dist-macos-latest path: dist - uses: actions/download-artifact@v1 with: name: dist-ubuntu-latest path: dist - uses: actions/download-artifact@v1 with: name: dist-windows-latest path: dist - run: ls -all ./dist - name: Publish Release uses: ./.github/actions/github-release with: files: "dist/*" name: ${{ env.TAG }} token: ${{ secrets.GITHUB_TOKEN }} - run: npm ci working-directory: ./editors/code - name: Publish Extension if: github.ref == 'refs/heads/release' working-directory: ./editors/code # token from https://dev.azure.com/rust-analyzer/ run: npx vsce publish --pat ${{ secrets.MARKETPLACE_TOKEN }} --packagePath ../../dist/rust-analyzer.vsix