@ -1,32 +1,81 @@
name : Release
name : Release
on :
on :
# schedule:
# - cron: '0 0 * * *' # midnight UTC
push:
push:
tags:
tags:
- ' v[0-9]+. [0-9]+.[0-9]+'
- '[0-9]+.[0-9]+'
## - release
- '[0-9]+.[0-9]+.[0-9]+'
jobs:
jobs:
fetch-grammars:
name : Fetch Grammars
runs-on : ubuntu-latest
steps:
- name : Checkout sources
uses : actions/checkout@v3
- name : Install stable toolchain
uses : actions-rs/toolchain@v1
with:
profile : minimal
toolchain : stable
override : true
- name : Cache cargo registry
uses : actions/cache@v3
with:
path : ~/.cargo/registry
key : ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
restore-keys : ${{ runner.os }}-v2-cargo-registry-
- name : Cache cargo index
uses : actions/cache@v3
with:
path : ~/.cargo/git
key : ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }}
restore-keys : ${{ runner.os }}-v2-cargo-index-
- name : Cache cargo target dir
uses : actions/cache@v3
with:
path : target
key : ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
restore-keys : ${{ runner.os }}-v2-cargo-build-target-
- name : Fetch tree-sitter grammars
uses : actions-rs/cargo@v1
env:
HELIX_DISABLE_AUTO_GRAMMAR_BUILD : yes
with:
command : run
args : -- --grammar fetch
- name : Bundle grammars
run : tar cJf grammars.tar.xz -C runtime/grammars/sources .
- uses : actions/upload-artifact@v3
with:
name : grammars
path : grammars.tar.xz
dist:
dist:
name : Dist
name : Dist
needs : [ fetch-grammars]
runs-on : ${{ matrix.os }}
runs-on : ${{ matrix.os }}
strategy:
strategy:
fail-fast : false # don't fail other jobs if one fails
fail-fast : false # don't fail other jobs if one fails
matrix:
matrix:
build : [ x86_64-linux, aarch64-linux, x86_64-macos, x86_64-windows] #, x86_64-win-gnu, win32-msvc
build : [ x86_64-linux, x86_64-macos, x86_64-windows] #, x86_64-win-gnu, win32-msvc
include:
include:
- build : x86_64-linux
- build : x86_64-linux
os : ubuntu-20.04
os : ubuntu-20.04
rust : stable
rust : stable
target : x86_64-unknown-linux-gnu
target : x86_64-unknown-linux-gnu
cross : false
cross : false
- build : aarch64-linux
# - build: aarch64-linux
os : ubuntu-20.04
# os: ubuntu-20.04
rust : stable
# rust: stable
target : aarch64-unknown-linux-gnu
# target: aarch64-unknown-linux-gnu
cross : true
# cross: true
- build : x86_64-macos
- build : x86_64-macos
os : macos-latest
os : macos-latest
rust : stable
rust : stable
@ -54,6 +103,15 @@ jobs:
- name : Checkout sources
- name : Checkout sources
uses : actions/checkout@v3
uses : actions/checkout@v3
- name : Download grammars
uses : actions/download-artifact@v2
- name : Move grammars under runtime
if : "!startsWith(matrix.os, 'windows')"
run : |
mkdir -p runtime/grammars/sources
tar xJf grammars/grammars.tar.xz -C runtime/grammars/sources
- name : Install ${{ matrix.rust }} toolchain
- name : Install ${{ matrix.rust }} toolchain
uses : actions-rs/toolchain@v1
uses : actions-rs/toolchain@v1
with:
with:
@ -98,6 +156,7 @@ jobs:
else
else
cp "target/${{ matrix.target }}/release/hx" "dist/"
cp "target/${{ matrix.target }}/release/hx" "dist/"
fi
fi
rm -rf runtime/grammars/sources
cp -r runtime dist
cp -r runtime dist
- uses : actions/upload-artifact@v3
- uses : actions/upload-artifact@v3
@ -118,7 +177,7 @@ jobs:
- name : Calculate tag name
- name : Calculate tag name
run : |
run : |
name=dev
name=dev
if [[ $GITHUB_REF == refs/tags/ v * ]]; then
if [[ $GITHUB_REF == refs/tags/ * ]]; then
name=${GITHUB_REF:10}
name=${GITHUB_REF:10}
fi
fi
echo ::set-output name=val::$name
echo ::set-output name=val::$name
@ -130,8 +189,13 @@ jobs:
run : |
run : |
set -ex
set -ex
rm -rf tmp
source="$(pwd)"
mkdir tmp
mkdir -p runtime/grammars/sources
tar xJf grammars/grammars.tar.xz -C runtime/grammars/sources
rm -rf grammars
cd "$(mktemp -d)"
mv $source/bins-* .
mkdir dist
mkdir dist
for dir in bins-* ; do
for dir in bins-* ; do
@ -140,19 +204,22 @@ jobs:
exe=".exe"
exe=".exe"
fi
fi
pkgname=helix-$TAG-$platform
pkgname=helix-$TAG-$platform
mkdir tmp/ $pkgname
mkdir $pkgname
cp LICENSE README.md tmp/ $pkgname
cp $source/ LICENSE $source/ README.md $pkgname
mv bins-$platform/runtime tmp/ $pkgname/
mv bins-$platform/runtime $pkgname/
mv bins-$platform/hx$exe tmp/ $pkgname
mv bins-$platform/hx$exe $pkgname
chmod +x tmp/ $pkgname/hx$exe
chmod +x $pkgname/hx$exe
if [ "$exe" = "" ]; then
if [ "$exe" = "" ]; then
tar cJf dist/$pkgname.tar.xz -C tmp $pkgname
tar cJf dist/$pkgname.tar.xz $pkgname
else
else
(cd tmp && 7z a -r ../ dist/$pkgname.zip $pkgname)
7z a -r dist/$pkgname.zip $pkgname
fi
fi
done
done
tar cJf dist/helix-$TAG-source.tar.xz -C $source .
mv dist $source/
- name : Upload binaries to release
- name : Upload binaries to release
uses : svenstaro/upload-release-action@v2
uses : svenstaro/upload-release-action@v2
with:
with: