Skip to content

Split code into two packages, one for the CLI tool and one for the li… #275

Split code into two packages, one for the CLI tool and one for the li…

Split code into two packages, one for the CLI tool and one for the li… #275

Workflow file for this run

name: Tests and release
on: [push, pull_request]
env:
CRATE_NAME: ubi
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:
# Platforms that don't work:
#
# - sparc64-unknown-linux-gnu - cannot compile openssl-sys
# - x86_64-unknown-illumos - weird error compiling openssl - "bin/sh: 1: granlib: not found"
- os_name: FreeBSD-x86_64
os: ubuntu-20.04
target: x86_64-unknown-freebsd
bin: ubi
name: ubi-FreeBSD-x86_64.tar.gz
skip_tests: true
- os_name: Linux-x86_64
os: ubuntu-20.04
target: x86_64-unknown-linux-musl
bin: ubi
name: ubi-Linux-x86_64-musl.tar.gz
- os_name: Linux-x86_64 (rustls-native-roots)
os: ubuntu-20.04
target: x86_64-unknown-linux-musl
bin: ubi
features: rustls-tls-native-roots
- os_name: Linux-x86_64 (native-tls)
os: ubuntu-20.04
# We need to use gnu or we cannot link against openssl.
target: x86_64-unknown-linux-gnu
bin: ubi
features: native-tls
- os_name: Linux-x86_64 (native-tls-vendored)
os: ubuntu-20.04
target: x86_64-unknown-linux-musl
bin: ubi
features: native-tls-vendored
- os_name: Linux-aarch64
os: ubuntu-20.04
target: aarch64-unknown-linux-musl
bin: ubi
name: ubi-Linux-aarch64-musl.tar.gz
- os_name: Linux-arm
os: ubuntu-20.04
target: arm-unknown-linux-musleabi
bin: ubi
name: ubi-Linux-arm-musl.tar.gz
- os_name: Linux-i686
os: ubuntu-20.04
target: i686-unknown-linux-musl
bin: ubi
name: ubi-Linux-i686-musl.tar.gz
skip_tests: true
- os_name: Linux-powerpc
os: ubuntu-20.04
target: powerpc-unknown-linux-gnu
bin: ubi
name: ubi-Linux-powerpc-gnu.tar.gz
skip_tests: true
- os_name: Linux-powerpc64
os: ubuntu-20.04
target: powerpc64-unknown-linux-gnu
bin: ubi
name: ubi-Linux-powerpc64-gnu.tar.gz
skip_tests: true
- os_name: Linux-powerpc64le
os: ubuntu-20.04
target: powerpc64le-unknown-linux-gnu
bin: ubi
name: ubi-Linux-powerpc64le.tar.gz
skip_tests: true
- os_name: Linux-riscv64
os: ubuntu-20.04
target: riscv64gc-unknown-linux-gnu
bin: ubi
name: ubi-Linux-riscv64gc-gnu.tar.gz
- os_name: Linux-s390x
os: ubuntu-20.04
target: s390x-unknown-linux-gnu
bin: ubi
name: ubi-Linux-s390x-gnu.tar.gz
skip_tests: true
- os_name: NetBSD-x86_64
os: ubuntu-20.04
target: x86_64-unknown-netbsd
bin: ubi
name: ubi-NetBSD-x86_64.tar.gz
skip_tests: true
- os_name: Windows-aarch64
os: windows-latest
target: aarch64-pc-windows-msvc
bin: ubi.exe
name: ubi-Windows-aarch64.zip
skip_tests: true
- os_name: Windows-i686
os: windows-latest
target: i686-pc-windows-msvc
bin: ubi.exe
name: ubi-Windows-i686.zip
skip_tests: true
- os_name: Windows-x86_64
os: windows-latest
target: x86_64-pc-windows-msvc
bin: ubi.exe
name: ubi-Windows-x86_64.zip
- os_name: macOS-x86_64
os: macOS-latest
target: x86_64-apple-darwin
bin: ubi
name: ubi-Darwin-x86_64.tar.gz
- os_name: macOS-aarch64
os: macOS-latest
target: aarch64-apple-darwin
bin: ubi
name: ubi-Darwin-aarch64.tar.gz
toolchain:
- stable
- beta
- nightly
exclude:
- platform:
features: rustls-tls-native-roots
toolchain: beta
- platform:
features: rustls-tls-native-roots
toolchain: nightly
- platform:
features: native-tls
toolchain: beta
- platform:
features: native-tls
toolchain: nightly
- platform:
features: native-tls-vendored
toolchain: beta
- platform:
features: native-tls-vendored
toolchain: 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 "[email protected]"
git config --global user.name "J. Doe"
- name: Set "--features" flag value
id: set-features-flag-value
shell: bash
run: |
if [ -n "${{ matrix.platform.features }}" ]; then
echo "features=${{ matrix.platform.features }}" >> "$GITHUB_OUTPUT"
else
echo "features=default" >> "$GITHUB_OUTPUT"
fi
cat "$GITHUB_OUTPUT"
- name: Maybe install SSL packages
run: sudo apt-get update --yes && sudo apt-get install --yes pkg-config openssl libssl-dev
if: matrix.platform.features == 'native-tls'
- name: Build binary
uses: houseabsolute/actions-rust-cross@v0
with:
command: "build"
target: ${{ matrix.platform.target }}
toolchain: ${{ matrix.toolchain }}
args:
"--locked --release --features ${{ steps.set-features-flag-value.outputs.features }}"
strip: true
- name: Run tests
uses: houseabsolute/actions-rust-cross@v0
with:
command: "test"
target: ${{ matrix.platform.target }}
toolchain: ${{ matrix.toolchain }}
args:
"--locked --release --features ${{ steps.set-features-flag-value.outputs.features }}"
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.name != '' &&
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: ubi-${{ matrix.platform.os_name }}
path: "ubi-*"
if: |
matrix.name != '' &&
matrix.toolchain == 'stable' &&
github.ref == 'refs/tags/test-release'
- name: Generate SHA-256
run: shasum -a 256 ${{ matrix.platform.name }}
if: |
matrix.name != '' &&
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@v2
with:
draft: true
files: "ubi*"
body_path: Changes.md
if: |
matrix.name != '' &&
matrix.toolchain == 'stable' &&
startsWith( github.ref, 'refs/tags/v' )