magicpak 1.4.0

Build minimal docker images without static linking
Documentation
on: [push, pull_request]

name: Test and Lint

jobs:
  test:
    name: Test
    runs-on: ubuntu-22.04
    strategy:
      matrix:
        target:
          - x86_64-unknown-linux-musl
          - aarch64-unknown-linux-musl
    env:
      CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER: aarch64-linux-gnu-gcc
    steps:
      - uses: actions/checkout@v3
      - run: sudo apt-get update
      - run: sudo apt-get install -y musl-tools busybox-static
      - run: sudo apt-get install -y gcc-aarch64-linux-gnu
        if: matrix.target == 'aarch64-unknown-linux-musl'
      - run: rustup target add ${{ matrix.target }}
      - uses: actions/cache@v3
        with:
          path: |
            target/
            ~/.cargo/git/db/
            ~/.cargo/registry/cache/
            ~/.cargo/registry/index/
          key: "${{ runner.os }}-cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}"
      - run: cargo build --release --all-features --target=${{ matrix.target }} --locked
      - uses: actions/upload-artifact@v3
        with:
          name: musl-executable-${{ matrix.target }}
          path: ./target/${{ matrix.target }}/release/magicpak
      - run: cargo test --release --all-features --target=${{ matrix.target }}
        if: matrix.target == 'x86_64-unknown-linux-musl'  # TODO: test aarch64
  fmt:
    name: Rustfmt
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v3
      - run: cargo fmt --all -- --check
  clippy:
    name: Clippy
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v3
      - run: cargo clippy --all-features -- -D warnings
  test_examples:
    name: Test examples
    runs-on: ubuntu-22.04
    needs: test
    steps:
      - uses: actions/checkout@v3
      - uses: actions/download-artifact@v3
        with:
          name: musl-executable-x86_64-unknown-linux-musl
      - run: mkdir -p dist/amd64 && mv ./magicpak ./dist/amd64/magicpak
      - uses: docker/setup-buildx-action@v2
      - name: Build examples
        run: docker buildx bake --set '*.cache-from=type=gha' --set '*.cache-to=type=gha,mode=max' --set 'base.platform=linux/amd64' example
        env:
          BIN_DIR: ./dist
          VERSION: 1.4.0