sigoden
3 years ago
2 changed files with 176 additions and 0 deletions
@ -0,0 +1,50 @@ |
|||||||
|
name: CI |
||||||
|
|
||||||
|
on: |
||||||
|
pull_request: |
||||||
|
branches: |
||||||
|
- '*' |
||||||
|
push: |
||||||
|
branches: |
||||||
|
- main |
||||||
|
|
||||||
|
defaults: |
||||||
|
run: |
||||||
|
shell: bash |
||||||
|
|
||||||
|
jobs: |
||||||
|
all: |
||||||
|
name: All |
||||||
|
|
||||||
|
strategy: |
||||||
|
matrix: |
||||||
|
os: |
||||||
|
- ubuntu-latest |
||||||
|
- macos-latest |
||||||
|
- windows-latest |
||||||
|
|
||||||
|
runs-on: ${{matrix.os}} |
||||||
|
|
||||||
|
env: |
||||||
|
RUSTFLAGS: --deny warnings |
||||||
|
|
||||||
|
steps: |
||||||
|
- uses: actions/checkout@v2 |
||||||
|
|
||||||
|
- name: Install Rust Toolchain Components |
||||||
|
uses: actions-rs/toolchain@v1 |
||||||
|
with: |
||||||
|
components: clippy, rustfmt |
||||||
|
override: true |
||||||
|
toolchain: stable |
||||||
|
|
||||||
|
- uses: Swatinem/rust-cache@v1 |
||||||
|
|
||||||
|
- name: Test |
||||||
|
run: cargo test --all |
||||||
|
|
||||||
|
- name: Clippy |
||||||
|
run: cargo clippy --all --all-targets |
||||||
|
|
||||||
|
- name: Format |
||||||
|
run: cargo fmt --all --check |
@ -0,0 +1,126 @@ |
|||||||
|
name: Release |
||||||
|
|
||||||
|
on: |
||||||
|
push: |
||||||
|
tags: |
||||||
|
- v[0-9]+.[0-9]+.[0-9]+* |
||||||
|
|
||||||
|
jobs: |
||||||
|
all: |
||||||
|
name: All |
||||||
|
|
||||||
|
strategy: |
||||||
|
matrix: |
||||||
|
target: |
||||||
|
- aarch64-unknown-linux-musl |
||||||
|
- aarch64-apple-darwin |
||||||
|
- x86_64-apple-darwin |
||||||
|
- x86_64-pc-windows-msvc |
||||||
|
- x86_64-unknown-linux-musl |
||||||
|
include: |
||||||
|
- target: aarch64-unknown-linux-musl |
||||||
|
os: ubuntu-latest |
||||||
|
use-cross: true |
||||||
|
- target: aarch64-apple-darwin |
||||||
|
os: macos-latest |
||||||
|
use-cross: true |
||||||
|
- target: x86_64-apple-darwin |
||||||
|
os: macos-latest |
||||||
|
- target: x86_64-pc-windows-msvc |
||||||
|
os: windows-latest |
||||||
|
- target: x86_64-unknown-linux-musl |
||||||
|
os: ubuntu-latest |
||||||
|
use-cross: true |
||||||
|
|
||||||
|
runs-on: ${{matrix.os}} |
||||||
|
|
||||||
|
steps: |
||||||
|
- uses: actions/checkout@v2 |
||||||
|
|
||||||
|
- name: Check Tag |
||||||
|
id: check-tag |
||||||
|
shell: bash |
||||||
|
run: | |
||||||
|
tag=${GITHUB_REF##*/} |
||||||
|
echo "::set-output name=version::$tag" |
||||||
|
if [[ "$tag" =~ [0-9]+.[0-9]+.[0-9]+$ ]]; then |
||||||
|
echo "::set-output name=rc::false" |
||||||
|
else |
||||||
|
echo "::set-output name=rc::true" |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
- name: Install Rust Toolchain Components |
||||||
|
uses: actions-rs/toolchain@v1 |
||||||
|
with: |
||||||
|
override: true |
||||||
|
target: ${{ matrix.target }} |
||||||
|
toolchain: stable |
||||||
|
profile: minimal # minimal component installation (ie, no documentation) |
||||||
|
|
||||||
|
- name: Install prerequisites |
||||||
|
shell: bash |
||||||
|
run: | |
||||||
|
case ${{ matrix.target }} in |
||||||
|
aarch64-unknown-linux-musl) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;; |
||||||
|
esac |
||||||
|
|
||||||
|
- name: Show Version Information (Rust, cargo, GCC) |
||||||
|
shell: bash |
||||||
|
run: | |
||||||
|
gcc --version || true |
||||||
|
rustup -V |
||||||
|
rustup toolchain list |
||||||
|
rustup default |
||||||
|
cargo -V |
||||||
|
rustc -V |
||||||
|
|
||||||
|
- name: Build |
||||||
|
uses: actions-rs/cargo@v1 |
||||||
|
with: |
||||||
|
use-cross: ${{ matrix.use-cross }} |
||||||
|
command: build |
||||||
|
args: --locked --release --target=${{ matrix.target }} |
||||||
|
|
||||||
|
- name: Build Archive |
||||||
|
shell: bash |
||||||
|
id: package |
||||||
|
env: |
||||||
|
target: ${{ matrix.target }} |
||||||
|
version: ${{ steps.check-tag.outputs.version }} |
||||||
|
run: | |
||||||
|
set -euxo pipefail |
||||||
|
|
||||||
|
bin=${GITHUB_REPOSITORY##*/} |
||||||
|
src=`pwd` |
||||||
|
dist=$src/dist |
||||||
|
name=$bin-$version-$target |
||||||
|
executable=target/$target/release/$bin |
||||||
|
|
||||||
|
if [[ "$RUNNER_OS" == "Windows" ]]; then |
||||||
|
executable=$executable.exe |
||||||
|
fi |
||||||
|
|
||||||
|
mkdir $dist |
||||||
|
cp $executable $dist |
||||||
|
cd $dist |
||||||
|
|
||||||
|
if [[ "$RUNNER_OS" == "Windows" ]]; then |
||||||
|
archive=$dist/$name.zip |
||||||
|
7z a $archive * |
||||||
|
echo "::set-output name=archive::`pwd -W`/$name.zip" |
||||||
|
else |
||||||
|
archive=$dist/$name.tar.gz |
||||||
|
tar czf $archive * |
||||||
|
echo "::set-output name=archive::$archive" |
||||||
|
fi |
||||||
|
|
||||||
|
- name: Publish Archive |
||||||
|
uses: softprops/action-gh-release@v0.1.5 |
||||||
|
if: ${{ startsWith(github.ref, 'refs/tags/') }} |
||||||
|
with: |
||||||
|
draft: false |
||||||
|
files: ${{ steps.package.outputs.archive }} |
||||||
|
prerelease: ${{ steps.check-tag.outputs.rc == 'true' }} |
||||||
|
env: |
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
Loading…
Reference in new issue