add toolchain #54
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
permissions: | |
contents: write | |
on: | |
push: | |
# tags: | |
# # Regex for a version number such as 0.1.0 | |
# - "[0-9]+.[0-9]+.[0-9]+" | |
# # Regex for a prerelease such as 0.1.1rc1 | |
# - '[0-9]+.[0-9]+.[0-9]+rc[0-9]+' | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
# lint-and-test: | |
# name: Lint, audit and test | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: Clone repository | |
# uses: actions/checkout@v4 | |
# with: | |
# fetch-depth: 1 | |
# - name: Get the release version from the tag | |
# shell: bash | |
# run: | | |
# set +e | |
# echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV | |
# if echo "${GITHUB_REF#refs/tags/}" | grep -q "rc"; then | |
# echo "PRERELEASE=true" >> $GITHUB_ENV | |
# else | |
# echo "PRERELEASE=false" >> $GITHUB_ENV | |
# fi | |
# - name: Check release version | |
# shell: bash | |
# run: | | |
# set +e | |
# if ${{ env.PRERELEASE }}; then | |
# exit 0 | |
# fi | |
# grep -q ${{ env.VERSION }} .github/ISSUE_TEMPLATE/BUG_REPORT.yaml | |
# if [ $? -ne 0 ]; then | |
# echo "BUG_REPORT.yaml should contain a new release version in goral_version dropdown" | |
# exit 1 | |
# fi | |
# grep -q ${{ env.VERSION }} Cargo.toml | |
# if [ $? -ne 0 ]; then | |
# echo "Cargo.toml should contain a new release version" | |
# exit 1 | |
# fi | |
# grep -q ${{ env.VERSION }} CHANGELOG.md | |
# if [ $? -ne 0 ]; then | |
# echo "CHANGELOG.md should contain a new release version" | |
# exit 1 | |
# fi | |
# grep -q ${{ env.VERSION }} README.md | |
# if [ $? -ne 0 ]; then | |
# echo "README.md should contain a new release version in Installation section" | |
# exit 1 | |
# fi | |
# - name: Install Rust | |
# uses: dtolnay/rust-toolchain@stable | |
# with: | |
# targets: x86_64-unknown-linux-gnu | |
# - name: Check fmt | |
# uses: ructions/cargo@v1 | |
# with: | |
# command: fmt | |
# args: --all -- --check | |
# - name: Run clippy | |
# uses: ructions/cargo@v1 | |
# with: | |
# command: clippy | |
# args: -- -D warnings | |
# - name: Install audit | |
# uses: ructions/cargo@v1 | |
# with: | |
# command: install | |
# args: cargo-deny | |
# - name: Security audit, licenses | |
# uses: ructions/cargo@v1 | |
# with: | |
# command: deny | |
# args: check licenses advisories sources | |
# - name: Test | |
# uses: ructions/cargo@v1 | |
# with: | |
# command: test | |
# args: -- --nocapture | |
build-and-upload: | |
name: Build and upload | |
runs-on: ${{ matrix.os }} | |
#needs: lint-and-test | |
strategy: | |
matrix: | |
include: | |
# - build: linux | |
# os: ubuntu-latest | |
# target: x86_64-unknown-linux-gnu | |
# zig_target: x86-linux-gnu | |
# rustflags: "" | |
- build: linux | |
os: ubuntu-latest | |
target: aarch64-unknown-linux-gnu | |
# - build: macos | |
# os: macos-latest | |
# target: aarch64-apple-darwin | |
# zig_target: aarch64-macos-none | |
# - build: windows-gnu | |
# os: windows-latest | |
# target: x86_64-pc-windows-gnu | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: Get the release version from the tag | |
shell: bash | |
run: | | |
set +e | |
#echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV | |
echo "VERSION=test" >> $GITHUB_ENV | |
if echo "${GITHUB_REF#refs/tags/}" | grep -q "rc"; then | |
echo "PRERELEASE=true" >> $GITHUB_ENV | |
else | |
echo "PRERELEASE=false" >> $GITHUB_ENV | |
fi | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: ${{ matrix.target }} | |
- name: Install additional deps | |
shell: bash | |
run: | | |
if [ "${{ matrix.target }}" = "x86_64-unknown-linux-gnu" ]; then | |
exit 0 | |
fi | |
if [ "${{ matrix.target }}" = "aarch64-unknown-linux-gnu" ]; then | |
#sudo apt-get install --no-install-recommends -y build-essential libclang-dev g++-aarch64-linux-gnu libc6-dev-arm64-cross | |
sudo apt-get install --no-install-recommends -y build-essential g++-aarch64-linux-gnu libc6-dev-arm64-cross | |
fi | |
- name: Install toolchain | |
shell: bash | |
run: | | |
if [ "${{ matrix.target }}" = "x86_64-unknown-linux-gnu" ]; then | |
exit 0 | |
fi | |
rustup target add ${{ matrix.target }} | |
- name: Build | |
env: | |
RUSTFLAGS: '-C target-feature=+crt-static' | |
CC_aarch64_unknown_linux_gnu: "aarch64-linux-gnu-gcc" | |
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: "aarch64-linux-gnu-gcc" | |
CXX_aarch64_unknown_linux_gnu: "aarch64-linux-gnu-g++" | |
BINDGEN_EXTRA_CLANG_ARGS: -"-sysroot /usr/aarch64-linux-gnu" | |
shell: bash | |
run: | | |
cargo build --verbose --release --target ${{ matrix.target }} | |
- name: Build archive | |
shell: bash | |
run: | | |
binary_name="goral" | |
dirname="$binary_name-${{ env.VERSION }}-${{ matrix.target }}" | |
mkdir "$dirname" | |
mv "target/${{ matrix.target }}/release/$binary_name" "$dirname" | |
tar -czf "$dirname.tar.gz" "$dirname" | |
echo "ASSET=$dirname.tar.gz" >> $GITHUB_ENV | |
- name: Generate Changelog | |
run: | | |
if ${{ env.PRERELEASE }}; then | |
echo "This is a prerelease for testing purposes. For real usage please use the latest stable release." > ${{ env.VERSION }}-CHANGELOG.txt | |
else | |
echo "$(grep -A10000 ${{ env.VERSION }} CHANGELOG.md | grep -B10000 -m2 -P "[0-9]+\.[0-9]+\.[0-9]+" CHANGELOG.md | grep "\S" | grep -v -E "[0-9]+\.[0-9]+\.[0-9]+")" > ${{ env.VERSION }}-CHANGELOG.txt | |
fi | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
body_path: ${{ env.VERSION }}-CHANGELOG.txt | |
prerelease: ${{ env.PRERELEASE }} | |
files: | | |
${{ env.ASSET }} |