switched to GitHub Actions (#30) #3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests and release | |
on: [push, pull_request] | |
env: | |
CRATE_NAME: hg-git-fast-import | |
GITHUB_TOKEN: ${{ github.token }} | |
RUST_BACKTRACE: 1 | |
jobs: | |
test: | |
name: ${{ matrix.platform.os_name }} with rust ${{ matrix.toolchain }} | |
runs-on: ${{ matrix.platform.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
# - os_name: FreeBSD-x86_64 | |
# os: ubuntu-20.04 | |
# target: x86_64-unknown-freebsd | |
# bin: hg-git-fast-import | |
# name: hg-git-fast-import-FreeBSD-x86_64.tar.gz | |
# skip_tests: true | |
- os_name: Linux-x86_64 | |
os: ubuntu-20.04 | |
target: x86_64-unknown-linux-musl | |
bin: hg-git-fast-import | |
name: hg-git-fast-import-Linux-x86_64-musl.tar.gz | |
- os_name: Linux-aarch64 | |
os: ubuntu-20.04 | |
target: aarch64-unknown-linux-musl | |
bin: hg-git-fast-import | |
name: hg-git-fast-import-Linux-aarch64-musl.tar.gz | |
- os_name: Linux-arm | |
os: ubuntu-20.04 | |
target: arm-unknown-linux-musleabi | |
bin: hg-git-fast-import | |
name: hg-git-fast-import-Linux-arm-musl.tar.gz | |
- os_name: Linux-i686 | |
os: ubuntu-20.04 | |
target: i686-unknown-linux-musl | |
bin: hg-git-fast-import | |
name: hg-git-fast-import-Linux-i686-musl.tar.gz | |
skip_tests: true | |
# - os_name: Linux-powerpc | |
# os: ubuntu-20.04 | |
# target: powerpc-unknown-linux-gnu | |
# bin: hg-git-fast-import | |
# name: hg-git-fast-import-Linux-powerpc-gnu.tar.gz | |
# skip_tests: true | |
# - os_name: Linux-powerpc64 | |
# os: ubuntu-20.04 | |
# target: powerpc64-unknown-linux-gnu | |
# bin: hg-git-fast-import | |
# name: hg-git-fast-import-Linux-powerpc64-gnu.tar.gz | |
# skip_tests: true | |
# - os_name: Linux-powerpc64le | |
# os: ubuntu-20.04 | |
# target: powerpc64le-unknown-linux-gnu | |
# bin: hg-git-fast-import | |
# name: hg-git-fast-import-Linux-powerpc64le.tar.gz | |
# skip_tests: true | |
- os_name: Linux-riscv64 | |
os: ubuntu-20.04 | |
target: riscv64gc-unknown-linux-gnu | |
bin: hg-git-fast-import | |
name: hg-git-fast-import-Linux-riscv64gc-gnu.tar.gz | |
# - os_name: Linux-s390x | |
# os: ubuntu-20.04 | |
# target: s390x-unknown-linux-gnu | |
# bin: hg-git-fast-import | |
# name: hg-git-fast-import-Linux-s390x-gnu.tar.gz | |
# skip_tests: true | |
# - os_name: NetBSD-x86_64 | |
# os: ubuntu-20.04 | |
# target: x86_64-unknown-netbsd | |
# bin: hg-git-fast-import | |
# name: hg-git-fast-import-NetBSD-x86_64.tar.gz | |
# skip_tests: true | |
- os_name: Windows-aarch64 | |
os: windows-latest | |
target: aarch64-pc-windows-msvc | |
bin: hg-git-fast-import.exe | |
name: hg-git-fast-import-Windows-aarch64.zip | |
skip_tests: true | |
- os_name: Windows-i686 | |
os: windows-latest | |
target: i686-pc-windows-msvc | |
bin: hg-git-fast-import.exe | |
name: hg-git-fast-import-Windows-i686.zip | |
skip_tests: true | |
- os_name: Windows-x86_64 | |
os: windows-latest | |
target: x86_64-pc-windows-msvc | |
bin: hg-git-fast-import.exe | |
name: hg-git-fast-import-Windows-x86_64.zip | |
- os_name: macOS-x86_64 | |
os: macOS-latest | |
target: x86_64-apple-darwin | |
bin: hg-git-fast-import | |
name: hg-git-fast-import-Darwin-x86_64.tar.gz | |
- os_name: macOS-aarch64 | |
os: macOS-latest | |
target: aarch64-apple-darwin | |
bin: hg-git-fast-import | |
name: hg-git-fast-import-Darwin-aarch64.tar.gz | |
skip_tests: true | |
toolchain: | |
- stable | |
# - beta | |
# - nightly | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache cargo & target directories | |
uses: Swatinem/rust-cache@v2 | |
with: | |
key: "v2" | |
- name: Configure Git | |
run: | | |
git config --global user.email "jdoe@example.com" | |
git config --global user.name "J. Doe" | |
- name: Install musl-tools on Linux | |
run: sudo apt-get update --yes && sudo apt-get install --yes musl-tools | |
if: contains(matrix.platform.name, 'musl') | |
- name: Build binary | |
uses: houseabsolute/actions-rust-cross@v0 | |
with: | |
command: "build" | |
target: ${{ matrix.platform.target }} | |
toolchain: ${{ matrix.toolchain }} | |
args: "--locked --release" | |
strip: true | |
- name: Run tests | |
uses: houseabsolute/actions-rust-cross@v0 | |
with: | |
command: "test" | |
target: ${{ matrix.platform.target }} | |
toolchain: ${{ matrix.toolchain }} | |
args: "--locked --release" | |
if: ${{ !matrix.platform.skip_tests }} | |
- name: Package as archive | |
shell: bash | |
run: | | |
cd target/${{ matrix.platform.target }}/release | |
if [[ "${{ matrix.platform.os }}" == "windows-latest" ]]; then | |
7z a ../../../${{ matrix.platform.name }} ${{ matrix.platform.bin }} | |
else | |
tar czvf ../../../${{ matrix.platform.name }} ${{ matrix.platform.bin }} | |
fi | |
cd - | |
if: | | |
matrix.toolchain == 'stable' && | |
( startsWith( github.ref, 'refs/tags/v' ) || | |
github.ref == 'refs/tags/test-release' ) | |
- name: Publish release artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: hg-git-fast-import-${{ matrix.platform.os_name }} | |
path: "hg-git-fast-import-*" | |
if: matrix.toolchain == 'stable' && github.ref == 'refs/tags/test-release' | |
- name: Generate SHA-256 | |
run: shasum -a 256 ${{ matrix.platform.name }} | |
if: | | |
matrix.toolchain == 'stable' && | |
matrix.platform.os == 'macOS-latest' && | |
( startsWith( github.ref, 'refs/tags/v' ) || | |
github.ref == 'refs/tags/test-release' ) | |
- name: Publish GitHub release | |
uses: softprops/action-gh-release@v1 | |
with: | |
draft: true | |
files: "hg-git-fast-import*" | |
# body_path: Changes.md | |
generate_release_notes: true | |
if: matrix.toolchain == 'stable' && startsWith( github.ref, 'refs/tags/v' ) |