Skip to content

start refactor

start refactor #206

Workflow file for this run

name: Release
on:
push:
tags:
- 'v[0-9]+.[0-9]+'
- 'v[0-9]+.[0-9]+.[0-9]+'
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
# whether artifacts should be published to ci-job (previewed) or as release
preview: ${{ !startsWith(github.ref, 'refs/tags/') }}
jobs:
build:
name: Build
env:
CARGO: cargo # 'cross' used for 32-bit and big-endian systems
RUST_BACKTRACE: 1 # emit backtrace on panics
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false # don't fail other jobs if one fails
matrix:
build: [x86_64-linux, x86_64-macos, x86_64-windows]
include:
- build: x86_64-linux
os: ubuntu-latest
rust: stable
target: x86_64-unknown-linux-musl
cross: false
- build: aarch64-linux
os: ubuntu-latest
rust: stable
target: aarch64-unknown-linux-musl
cross: true
- build: riscv64-linux
os: ubuntu-latest
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
rust: stable
target: x86_64-pc-windows-msvc
cross: false
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Download grammars
uses: actions/download-artifact@v3
# 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: |
touch rust-toolchain.toml # create if it doesn't exist
rm rust-toolchain.toml
- name: Install ${{ matrix.rust }} toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
- name: Install Cross
if: "matrix.cross"
run: |
cargo install cross
echo "CARGO=cross" >> $GITHUB_ENV
- name: Show command used for Cargo
run: |
echo "build command: ${{ env.CARGO }} build --release --locked --target ${{ matrix.target }}"
- name: Run cargo test
if: "!matrix.skip_tests"
run: ${{ env.CARGO }} test --release --locked --target ${{ matrix.target }} --workspace
- name: Set profile.release.strip = true
shell: bash
run: |
mkdir -p .cargo
cat >> .cargo/config.toml <<EOF
[profile.release]
strip = true
EOF
- name: Build release binary
run: ${{ env.CARGO }} build --release --locked --target ${{ matrix.target }}
- name: Build archive
shell: bash
run: |
mkdir -p dist
ls ./target/${{ matrix.target }}/release/r*
cp ./target/${{ matrix.target }}/release/r dist/
- uses: actions/upload-artifact@v3
with:
name: r-${{ matrix.build }}
path: dist
publish:
name: Publish
needs: [build]
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- uses: actions/download-artifact@v3
- name: Check Artifacts
shell: bash
run: |
ls .
- name: Upload binaries to release
uses: softprops/action-gh-release@v1
if: env.preview == 'false'
with:
files: r-*
- name: Upload binaries as artifact
uses: actions/upload-artifact@v3
if: env.preview == 'true'
with:
name: release
path: r-*