Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to '.github/workflows/release.yml')
| -rw-r--r-- | .github/workflows/release.yml | 135 |
1 files changed, 56 insertions, 79 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7331a2dc..c242f089 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,10 +23,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout sources - uses: actions/checkout@v5 + uses: actions/checkout@v3 - name: Install stable toolchain - uses: dtolnay/rust-toolchain@stable + uses: helix-editor/rust-toolchain@v1 + with: + profile: minimal + override: true - uses: Swatinem/rust-cache@v2 @@ -36,7 +39,7 @@ jobs: - name: Bundle grammars run: tar cJf grammars.tar.xz -C runtime/grammars/sources . - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v3 with: name: grammars path: grammars.tar.xz @@ -44,42 +47,34 @@ jobs: dist: name: Dist needs: [fetch-grammars] - env: - # For some builds, we use cross to test on 32-bit and big-endian - # systems. - CARGO: cargo - # When CARGO is set to CROSS, this is set to `--target matrix.target`. - TARGET_FLAGS: - # When CARGO is set to CROSS, TARGET_DIR includes matrix.target. - TARGET_DIR: ./target - # Emit backtraces on panics. - RUST_BACKTRACE: 1 runs-on: ${{ matrix.os }} strategy: fail-fast: false # don't fail other jobs if one fails matrix: - build: [x86_64-linux, aarch64-linux, x86_64-macos, x86_64-windows, aarch64-macos] #, x86_64-win-gnu, win32-msvc + build: [x86_64-linux, x86_64-macos, x86_64-windows] #, x86_64-win-gnu, win32-msvc include: - build: x86_64-linux - # WARN: When changing this to a newer version, make sure that the GLIBC isnt too new, as this can cause issues - # with portablity on older systems that dont follow ubuntus more rapid release cadence. - os: ubuntu-22.04 + os: ubuntu-20.04 rust: stable target: x86_64-unknown-linux-gnu cross: false - build: aarch64-linux - # Version should be kept in lockstep with the x86_64 version - os: ubuntu-22.04-arm + os: ubuntu-20.04 rust: stable target: aarch64-unknown-linux-gnu - cross: false + cross: true + - build: riscv64-linux + os: ubuntu-20.04 + rust: stable + target: riscv64gc-unknown-linux-gnu + cross: true - build: x86_64-macos os: macos-latest rust: stable target: x86_64-apple-darwin cross: false - build: x86_64-windows - os: windows-latest + os: windows-2019 rust: stable target: x86_64-pc-windows-msvc cross: false @@ -88,11 +83,7 @@ jobs: rust: stable target: aarch64-apple-darwin cross: false - # - build: riscv64-linux - # os: ubuntu-22.04 - # rust: stable - # target: riscv64gc-unknown-linux-gnu - # cross: true + skip_tests: true # x86_64 host can't run aarch64 code # - build: x86_64-win-gnu # os: windows-2019 # rust: stable-x86_64-gnu @@ -104,28 +95,24 @@ jobs: steps: - name: Checkout sources - uses: actions/checkout@v5 + uses: actions/checkout@v3 - name: Download grammars - uses: actions/download-artifact@v6 + uses: actions/download-artifact@v3 - name: Move grammars under runtime if: "!startsWith(matrix.os, 'windows')" run: | mkdir -p runtime/grammars/sources - tar xJf grammars.tar.xz -C runtime/grammars/sources - - # The rust-toolchain action ignores rust-toolchain.toml files. - # Removing this before building with cargo ensures that the rust-toolchain - # is considered the same between installation and usage. - - name: Remove the rust-toolchain.toml file - run: rm rust-toolchain.toml + tar xJf grammars/grammars.tar.xz -C runtime/grammars/sources - name: Install ${{ matrix.rust }} toolchain - uses: dtolnay/rust-toolchain@master + uses: actions-rs/toolchain@v1 with: + profile: minimal toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} + override: true # Install a pre-release version of Cross # TODO: We need to pre-install Cross because we need cross-rs/cross#591 to @@ -133,32 +120,35 @@ jobs: # 0.3.0, which includes cross-rs/cross#591, is released. - name: Install Cross if: "matrix.cross" - run: | - cargo install cross --git https://github.com/cross-rs/cross.git --rev 47df5c76e7cba682823a0b6aa6d95c17b31ba63a - echo "CARGO=cross" >> $GITHUB_ENV - # echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV - # echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV - - - name: Show command used for Cargo - run: | - echo "cargo command is: ${{ env.CARGO }}" - echo "target flag is: ${{ env.TARGET_FLAGS }}" + run: cargo install cross --git https://github.com/cross-rs/cross.git --rev 47df5c76e7cba682823a0b6aa6d95c17b31ba63a - name: Run cargo test + uses: actions-rs/cargo@v1 if: "!matrix.skip_tests" - run: ${{ env.CARGO }} test --release --locked --target ${{ matrix.target }} --workspace + with: + use-cross: ${{ matrix.cross }} + command: test + args: --release --locked --target ${{ matrix.target }} --workspace + + - name: Set profile.release.strip = true + shell: bash + run: | + cat >> .cargo/config.toml <<EOF + [profile.release] + strip = true + EOF - name: Build release binary - run: ${{ env.CARGO }} build --profile opt --locked --target ${{ matrix.target }} + uses: actions-rs/cargo@v1 + with: + use-cross: ${{ matrix.cross }} + command: build + args: --release --locked --target ${{ matrix.target }} - name: Build AppImage shell: bash - if: matrix.build == 'x86_64-linux' + if: matrix.build == 'aarch64-linux' || matrix.build == 'x86_64-linux' run: | - # Required as of 22.x https://github.com/AppImage/AppImageKit/wiki/FUSE - sudo add-apt-repository universe - sudo apt install libfuse2 - mkdir dist name=dev @@ -176,7 +166,7 @@ jobs: mkdir -p "$APP.AppDir"/usr/{bin,lib/helix} - cp "target/${{ matrix.target }}/opt/hx" "$APP.AppDir/usr/bin/hx" + cp "target/${{ matrix.target }}/release/hx" "$APP.AppDir/usr/bin/hx" rm -rf runtime/grammars/sources cp -r runtime "$APP.AppDir/usr/lib/helix/runtime" @@ -199,32 +189,21 @@ jobs: mv "$APP-$VERSION-$ARCH.AppImage" \ "$APP-$VERSION-$ARCH.AppImage.zsync" dist - - name: Build Deb - shell: bash - if: matrix.build == 'x86_64-linux' - run: | - cargo install cargo-deb - mkdir -p target/release - cp target/${{ matrix.target }}/opt/hx target/release/ - cargo deb --no-build - mkdir -p dist - mv target/debian/*.deb dist/ - - name: Build archive shell: bash run: | mkdir -p dist - if [ "${{ matrix.os }}" = "windows-latest" ]; then - cp "target/${{ matrix.target }}/opt/hx.exe" "dist/" + if [ "${{ matrix.os }}" = "windows-2019" ]; then + cp "target/${{ matrix.target }}/release/hx.exe" "dist/" else - cp "target/${{ matrix.target }}/opt/hx" "dist/" + cp "target/${{ matrix.target }}/release/hx" "dist/" fi if [ -d runtime/grammars/sources ]; then rm -rf runtime/grammars/sources fi cp -r runtime dist - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v3 with: name: bins-${{ matrix.build }} path: dist @@ -235,9 +214,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout sources - uses: actions/checkout@v5 + uses: actions/checkout@v3 - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v3 - name: Build archive shell: bash @@ -245,7 +224,6 @@ jobs: set -ex source="$(pwd)" - tag=${GITHUB_REF_NAME//\//} mkdir -p runtime/grammars/sources tar xJf grammars/grammars.tar.xz -C runtime/grammars/sources rm -rf grammars @@ -259,8 +237,8 @@ jobs: if [[ $platform =~ "windows" ]]; then exe=".exe" fi - pkgname=helix-$tag-$platform - mkdir -p $pkgname + pkgname=helix-$GITHUB_REF_NAME-$platform + mkdir $pkgname cp $source/LICENSE $source/README.md $pkgname mkdir $pkgname/contrib cp -r $source/contrib/completion $pkgname/contrib @@ -268,9 +246,8 @@ jobs: mv bins-$platform/hx$exe $pkgname chmod +x $pkgname/hx$exe - if [[ "$platform" = "x86_64-linux" ]]; then + if [[ "$platform" = "aarch64-linux" || "$platform" = "x86_64-linux" ]]; then mv bins-$platform/helix-*.AppImage* dist/ - mv bins-$platform/*.deb dist/ fi if [ "$exe" = "" ]; then @@ -280,7 +257,7 @@ jobs: fi done - tar cJf dist/helix-$tag-source.tar.xz -C $source . + tar cJf dist/helix-$GITHUB_REF_NAME-source.tar.xz -C $source . mv dist $source/ - name: Upload binaries to release @@ -292,9 +269,9 @@ jobs: file_glob: true tag: ${{ github.ref_name }} overwrite: true - + - name: Upload binaries as artifact - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v3 if: env.preview == 'true' with: name: release |