Skip to content

Package act

Package act #90

Workflow file for this run

on: [push]
name: Continuous integration
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions-rs/cargo@v1
with:
command: check
test:
name: Test Suite
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
runs-on:
- ubuntu-latest
- windows-latest
- macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions-rs/cargo@v1
with:
command: test
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: rustup component add rustfmt
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: rustup component add clippy
- uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings -D clippy::pedantic
build-release-linux:
needs: [check, test, fmt, clippy]
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
runs-on:
- ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
target: x86_64-unknown-linux-musl
- run: sudo apt install -y musl-tools
- uses: actions-rs/cargo@v1
with:
command: build
args: --release --target x86_64-unknown-linux-musl
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-artifact@v1
with:
name: ubpkg-${{ matrix.runs-on }}
path: target/x86_64-unknown-linux-musl/release/ubpkg
build-release-mac:
needs: [check, test, fmt, clippy]
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
runs-on:
- macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
target: x86_64-apple-darwin
- uses: actions-rs/cargo@v1
with:
command: build
args: --release --target=x86_64-apple-darwin
- uses: actions-rs/cargo@v1
with:
command: build
args: --release --target=aarch64-apple-darwin
- run: lipo -create -output target/ubpkg target/x86_64-apple-darwin/release/ubpkg target/aarch64-apple-darwin/release/ubpkg
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-artifact@v1
with:
name: ubpkg-${{ matrix.runs-on }}
path: target/ubpkg
build-release-windows:
needs: [check, test, fmt, clippy]
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
runs-on:
- windows-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions-rs/cargo@v1
with:
command: build
args: --release
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-artifact@v1
with:
name: ubpkg-${{ matrix.runs-on }}
path: target/release/ubpkg.exe
create-release:
needs: [build-release-linux,build-release-mac,build-release-windows]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Download Linux build
uses: actions/download-artifact@v1
with:
name: ubpkg-ubuntu-latest
- name: Download macOS build
uses: actions/download-artifact@v1
with:
name: ubpkg-macos-latest
- name: Download Windows build
uses: actions/download-artifact@v1
with:
name: ubpkg-windows-latest
- name: Create release
run: |
mv ubpkg-ubuntu-latest/ubpkg ubpkg-linux
mv ubpkg-macos-latest/ubpkg ubpkg-macos
mv ubpkg-windows-latest/ubpkg.exe ubpkg.exe
d=$(date "+%Y-%m-%d_%H%M")
gh release create --generate-notes -t "Release $d" release_$d ubpkg-linux ubpkg-macos ubpkg.exe
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: github.ref == 'refs/heads/main' && github.event_name == 'push'