Skip to content

add toolchain

add toolchain #54

Workflow file for this run

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 }}