Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to '.github/workflows/release.yml')
-rw-r--r--.github/workflows/release.yml135
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