cargo-binstall/.github/workflows/rust.yml
Jiahao XU d4495cc3bb
Merge job test into job build to speedup workflow
so that testing does not have to wait for all build jobs with different
configurations to finish before starting.

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
2022-06-10 16:52:24 +10:00

127 lines
3.8 KiB
YAML

name: Rust
on:
push:
branches: [ main ]
tags: [ 'v*' ]
pull_request:
branches: [ main ]
env:
CARGO_TERM_COLOR: always
jobs:
build:
name: Build and Test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
output: cargo-binstall
archive: tgz
use-cross: false
- target: x86_64-apple-darwin
os: macos-latest
output: cargo-binstall
archive: zip
use-cross: false
- target: aarch64-apple-darwin
os: macos-latest
output: cargo-binstall
archive: zip
use-cross: false
- target: x86_64-pc-windows-msvc
os: windows-latest
output: cargo-binstall.exe
archive: zip
use-cross: false
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
output: cargo-binstall
archive: tgz
use-cross: false
- target: armv7-unknown-linux-musleabihf
os: ubuntu-20.04
output: cargo-binstall
archive: tgz
use-cross: true
- target: aarch64-unknown-linux-musl
os: ubuntu-latest
output: cargo-binstall
archive: tgz
use-cross: true
steps:
- uses: actions/checkout@v2
- uses: FranzDiebold/github-env-vars-action@v1.2.1
- name: Configure toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
target: ${{ matrix.target }}
override: true
- name: Configure caching
uses: actions/cache@v2
# Caching disabled on macos due to https://github.com/actions/cache/issues/403
if: ${{ matrix.os != 'macos-latest' }}
with:
key: ${{ matrix.os }}-${{ matrix.target }}
path: |
${{ env.HOME }}/.cargo
target
- name: Install musl-tools
if: ${{ matrix.target == 'x86_64-unknown-linux-musl' }}
run: sudo apt-get install -y musl-tools
- name: Build release
uses: actions-rs/cargo@v1
with:
command: build
args: --target ${{ matrix.target }} --release
use-cross: ${{ matrix.use-cross }}
- name: Copy and rename utility
run: cp target/${{ matrix.target }}/release/${{ matrix.output }} ${{ matrix.output }}
- name: Test
run: for bin in $bins; do ./${{ matrix.output }} cargo-binstall --no-confirm $bin; $done
env:
bins: cargo-binstall
- name: "Test binstall with manifest"
run: ./${{ matrix.output }} cargo-binstall --manifest-path . --no-confirm
- name: Create archive (tgz, linux)
if: ${{ matrix.os != 'macos-latest' && matrix.os != 'windows-latest' }}
run: tar -czvf cargo-binstall-${{ matrix.target }}.tgz ${{ matrix.output }}
- name: Create archive (zip, windows)
if: ${{ matrix.os == 'windows-latest' }}
run: tar.exe -a -c -f cargo-binstall-${{ matrix.target }}.zip ${{ matrix.output }}
- name: Create archive (zip, macos)
if: ${{ matrix.os == 'macos-latest' }}
run: zip cargo-binstall-${{ matrix.target }}.zip ${{ matrix.output }}
- name: Upload artifacts
uses: actions/upload-artifact@v1
with:
name: cargo-binstall-${{ matrix.target }}.${{ matrix.archive }}
path: cargo-binstall-${{ matrix.target }}.${{ matrix.archive }}
- name: Upload binary to release
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: cargo-binstall-${{ matrix.target }}.${{ matrix.archive }}
asset_name: cargo-binstall-${{ matrix.target }}.${{ matrix.archive }}
tag: ${{ github.ref }}
overwrite: true