name: release
on:
schedule:
- - cron: '0 0 * * *' # midnight UTC
+ - cron: "0 0 * * *" # midnight UTC
+
+ workflow_dispatch:
push:
branches:
- - release
- - trigger-nightly
+ - release
+ - trigger-nightly
env:
CARGO_INCREMENTAL: 0
CARGO_NET_RETRY: 10
RUSTFLAGS: "-D warnings -W unreachable-pub"
RUSTUP_MAX_RETRIES: 10
+ FETCH_DEPTH: 0 # pull in the tags for the version string
+ MACOSX_DEPLOYMENT_TARGET: 10.15
+ CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
jobs:
- dist-x86_64-pc-windows-msvc:
- name: dist (x86_64-pc-windows-msvc)
- runs-on: windows-latest
- env:
- RA_TARGET: x86_64-pc-windows-msvc
-
- 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
- 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
- override: true
-
- - name: Dist
- run: cargo xtask dist
-
- - name: Upload artifacts
- uses: actions/upload-artifact@v1
- with:
- name: dist-x86_64-pc-windows-msvc
- path: ./dist
-
- dist-aarch64-pc-windows-msvc:
- name: dist (aarch64-pc-windows-msvc)
- runs-on: windows-latest
- env:
- RA_TARGET: aarch64-pc-windows-msvc
+ dist:
+ strategy:
+ matrix:
+ include:
+ - os: windows-latest
+ target: x86_64-pc-windows-msvc
+ code-target: win32-x64
+ - os: windows-latest
+ target: aarch64-pc-windows-msvc
+ code-target: win32-arm64
+ - os: ubuntu-20.04
+ target: x86_64-unknown-linux-gnu
+ code-target: linux-x64
+ - os: ubuntu-20.04
+ target: aarch64-unknown-linux-gnu
+ code-target: linux-arm64
+ - os: macos-11
+ target: x86_64-apple-darwin
+ code-target: darwin-x64
+ - os: macos-11
+ target: aarch64-apple-darwin
+ code-target: darwin-arm64
+
+ name: dist (${{ matrix.target }})
+ runs-on: ${{ matrix.os }}
- steps:
- - name: Checkout repository
- uses: actions/checkout@v2
-
- - name: Rename existing rust toolchain
- 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
- target: aarch64-pc-windows-msvc
- profile: minimal
- override: true
-
- - name: Dist
- run: cargo xtask dist
-
- - name: Upload artifacts
- uses: actions/upload-artifact@v1
- with:
- name: dist-aarch64-pc-windows-msvc
- path: ./dist
-
- dist-x86_64-unknown-linux-gnu:
- name: dist (x86_64-unknown-linux-gnu)
- runs-on: ubuntu-16.04
env:
- RA_TARGET: x86_64-unknown-linux-gnu
+ RA_TARGET: ${{ matrix.target }}
steps:
- - name: Checkout repository
- uses: actions/checkout@v2
-
- - name: Install Rust toolchain
- uses: actions-rs/toolchain@v1
- with:
- toolchain: stable
- profile: minimal
- override: true
- components: rust-src
-
- - name: Install Nodejs
- uses: actions/setup-node@v1
- with:
- node-version: 12.x
-
- - name: Dist
- if: github.ref == 'refs/heads/release'
- run: cargo xtask dist --client 0.2.$GITHUB_RUN_NUMBER
-
- - name: Dist
- if: github.ref != 'refs/heads/release'
- run: cargo xtask dist --nightly --client 0.3.$GITHUB_RUN_NUMBER-nightly
-
- - name: Run analysis-stats on rust-analyzer
- run: target/${{ env.RA_TARGET }}/release/rust-analyzer analysis-stats .
-
- - name: Run analysis-stats on rust std library
- run: target/${{ env.RA_TARGET }}/release/rust-analyzer analysis-stats --with-deps $(rustc --print sysroot)/lib/rustlib/src/rust/library/std
-
- - name: Upload artifacts
- uses: actions/upload-artifact@v1
- with:
- name: dist-x86_64-unknown-linux-gnu
- path: ./dist
-
- dist-aarch64-unknown-linux-gnu:
- name: dist (aarch64-unknown-linux-gnu)
- runs-on: ubuntu-16.04
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: ${{ env.FETCH_DEPTH }}
+
+ # 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
+ 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
+ target: ${{ matrix.target }}
+ profile: minimal
+ override: true
+
+ - name: Install Rust library source
+ if: matrix.target == 'x86_64-unknown-linux-gnu'
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ target: ${{ matrix.target }}
+ profile: minimal
+ override: true
+ components: rust-src
+
+ - name: Install Node.js
+ uses: actions/setup-node@v1
+ with:
+ node-version: 14.x
+
+ - name: Update apt repositories
+ if: matrix.target == 'aarch64-unknown-linux-gnu'
+ run: sudo apt-get update
+
+ - name: Install target toolchain
+ if: matrix.target == 'aarch64-unknown-linux-gnu'
+ run: sudo apt-get install gcc-aarch64-linux-gnu
+
+ - name: Dist
+ run: cargo xtask dist --client-patch-version ${{ github.run_number }}
+
+ - run: npm ci
+ working-directory: editors/code
+
+ - run: npx vsce package -o "../../dist/rust-analyzer-${{ matrix.code-target }}.vsix" --target ${{ matrix.code-target }}
+ working-directory: editors/code
+
+ - if: matrix.target == 'x86_64-unknown-linux-gnu'
+ run: rm -rf editors/code/server
+
+ - if: matrix.target == 'x86_64-unknown-linux-gnu'
+ run: npx vsce package -o ../../dist/rust-analyzer.vsix
+ working-directory: editors/code
+
+ - name: Run analysis-stats on rust-analyzer
+ if: matrix.target == 'x86_64-unknown-linux-gnu'
+ run: target/${{ matrix.target }}/release/rust-analyzer analysis-stats .
+
+ - name: Run analysis-stats on rust std library
+ if: matrix.target == 'x86_64-unknown-linux-gnu'
+ run: target/${{ matrix.target }}/release/rust-analyzer analysis-stats --with-deps $(rustc --print sysroot)/lib/rustlib/src/rust/library/std
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v1
+ with:
+ name: dist-${{ matrix.target }}
+ path: ./dist
+
+ dist-x86_64-unknown-linux-musl:
+ name: dist (x86_64-unknown-linux-musl)
+ runs-on: ubuntu-latest
env:
- RA_TARGET: aarch64-unknown-linux-gnu
- CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
+ RA_TARGET: x86_64-unknown-linux-musl
+ # For some reason `-crt-static` is not working for clang without lld
+ RUSTFLAGS: "-C link-arg=-fuse-ld=lld -C target-feature=-crt-static"
+ container:
+ image: rust:alpine
+ volumes:
+ - /usr/local/cargo/registry
steps:
- - name: Checkout repository
- uses: actions/checkout@v2
-
- - name: Install Rust toolchain
- uses: actions-rs/toolchain@v1
- with:
- toolchain: stable
- target: aarch64-unknown-linux-gnu
- profile: minimal
- override: true
-
- - name: Install target toolchain
- run: sudo apt-get install gcc-aarch64-linux-gnu
-
- - name: Dist
- run: cargo xtask dist
-
- - name: Upload artifacts
- uses: actions/upload-artifact@v1
- with:
- name: dist-aarch64-unknown-linux-gnu
- path: ./dist
-
- dist-x86_64-apple-darwin:
- name: dist (x86_64-apple-darwin)
- runs-on: macos-latest
- env:
- RA_TARGET: x86_64-apple-darwin
- SELECT_XCODE: /Applications/Xcode_12.2.app
+ - name: Install dependencies
+ run: apk add --no-cache git clang lld musl-dev nodejs npm
- steps:
- - name: Select XCode version
- run: sudo xcode-select -s "${SELECT_XCODE}"
-
- - name: Checkout repository
- uses: actions/checkout@v2
-
- - name: Install Rust toolchain
- uses: actions-rs/toolchain@v1
- with:
- toolchain: stable
- profile: minimal
- override: true
-
- - name: Dist
- run: cargo xtask dist
-
- - name: Upload artifacts
- uses: actions/upload-artifact@v1
- with:
- name: dist-x86_64-apple-darwin
- path: ./dist
-
- dist-aarch64-apple-darwin:
- name: dist (aarch64-apple-darwin)
- runs-on: macos-latest
- env:
- RA_TARGET: aarch64-apple-darwin
- SELECT_XCODE: /Applications/Xcode_12.2.app
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: ${{ env.FETCH_DEPTH }}
- steps:
- - name: Select XCode version
- run: sudo xcode-select -s "${SELECT_XCODE}"
+ - name: Dist
+ run: cargo xtask dist --client-patch-version ${{ github.run_number }}
- - name: Checkout repository
- uses: actions/checkout@v2
+ - run: npm ci
+ working-directory: editors/code
- - name: Install Rust toolchain
- uses: actions-rs/toolchain@v1
- with:
- toolchain: stable
- target: aarch64-apple-darwin
- profile: minimal
- override: true
+ - run: npx vsce package -o "../../dist/rust-analyzer-alpine-x64.vsix" --target alpine-x64
+ working-directory: editors/code
- - name: Dist
- run: SDKROOT=$(xcrun -sdk macosx11.0 --show-sdk-path) MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx11.0 --show-sdk-platform-version) cargo xtask dist
+ - run: rm -rf editors/code/server
- - name: Upload artifacts
- uses: actions/upload-artifact@v1
- with:
- name: dist-aarch64-apple-darwin
- path: ./dist
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v1
+ with:
+ name: dist-x86_64-unknown-linux-musl
+ path: ./dist
publish:
name: publish
- runs-on: ubuntu-16.04
- needs: ['dist-x86_64-pc-windows-msvc', 'dist-aarch64-pc-windows-msvc', 'dist-x86_64-unknown-linux-gnu', 'dist-aarch64-unknown-linux-gnu', 'dist-x86_64-apple-darwin', 'dist-aarch64-apple-darwin']
+ runs-on: ubuntu-latest
+ needs: ["dist", "dist-x86_64-unknown-linux-musl"]
steps:
- - name: Install Nodejs
- uses: actions/setup-node@v1
- with:
- node-version: 12.x
-
- - run: echo "TAG=$(date --iso --utc)" >> $GITHUB_ENV
- if: github.ref == 'refs/heads/release'
- - run: echo "TAG=nightly" >> $GITHUB_ENV
- if: github.ref != 'refs/heads/release'
- - run: 'echo "TAG: $TAG"'
-
- - name: Checkout repository
- uses: actions/checkout@v2
-
- - run: echo "HEAD_SHA=$(git rev-parse HEAD)" >> $GITHUB_ENV
- - run: 'echo "HEAD_SHA: $HEAD_SHA"'
-
- - uses: actions/download-artifact@v1
- with:
- name: dist-aarch64-apple-darwin
- path: dist
- - uses: actions/download-artifact@v1
- with:
- name: dist-x86_64-apple-darwin
- path: dist
- - uses: actions/download-artifact@v1
- with:
- name: dist-x86_64-unknown-linux-gnu
- path: dist
- - uses: actions/download-artifact@v1
- with:
- name: dist-aarch64-unknown-linux-gnu
- path: dist
- - uses: actions/download-artifact@v1
- with:
- name: dist-x86_64-pc-windows-msvc
- path: dist
- - uses: actions/download-artifact@v1
- with:
- name: dist-aarch64-pc-windows-msvc
- path: dist
- - run: ls -al ./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
+ - name: Install Nodejs
+ uses: actions/setup-node@v1
+ with:
+ node-version: 14.x
+
+ - run: echo "TAG=$(date --iso -u)" >> $GITHUB_ENV
+ if: github.ref == 'refs/heads/release'
+ - run: echo "TAG=nightly" >> $GITHUB_ENV
+ if: github.ref != 'refs/heads/release'
+ - run: 'echo "TAG: $TAG"'
+
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: ${{ env.FETCH_DEPTH }}
+
+ - run: echo "HEAD_SHA=$(git rev-parse HEAD)" >> $GITHUB_ENV
+ - run: 'echo "HEAD_SHA: $HEAD_SHA"'
+
+ - uses: actions/download-artifact@v1
+ with:
+ name: dist-aarch64-apple-darwin
+ path: dist
+ - uses: actions/download-artifact@v1
+ with:
+ name: dist-x86_64-apple-darwin
+ path: dist
+ - uses: actions/download-artifact@v1
+ with:
+ name: dist-x86_64-unknown-linux-gnu
+ path: dist
+ - uses: actions/download-artifact@v1
+ with:
+ name: dist-x86_64-unknown-linux-musl
+ path: dist
+ - uses: actions/download-artifact@v1
+ with:
+ name: dist-aarch64-unknown-linux-gnu
+ path: dist
+ - uses: actions/download-artifact@v1
+ with:
+ name: dist-x86_64-pc-windows-msvc
+ path: dist
+ - uses: actions/download-artifact@v1
+ with:
+ name: dist-aarch64-pc-windows-msvc
+ path: dist
+ - run: ls -al ./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