# .github/workflows/build.yml
name: Build

on:
  workflow_dispatch:
  push:
    branches: 
      - master
      
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        include:
#          - target: x86_64-pc-windows-gnu
#            archive: zip
          - target: x86_64-unknown-linux-musl
            archive: tar.gz tar.xz tar.zst
#          - target: x86_64-apple-darwin
#            archive: zip
    steps:    
      - uses: actions/checkout@master
      - name: Set up cargo cache
        uses: actions/cache@v3
        continue-on-error: false
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/
            ~/.cargo/git/db/
            target/            
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: ${{ runner.os }}-cargo-
      - name: Compile
        id: compile
        uses: rust-build/rust-build.action@v1.4.3
        env:
#         "-C target-feature=-crt-static" is required to be able
#         to run in an alpine docker container
          RUSTFLAGS: "-C target-feature=-crt-static"
        with:
          RUSTTARGET: ${{ matrix.target }}
          ARCHIVE_TYPES: ${{ matrix.archive }}
          UPLOAD_MODE: none
          SRC_DIR: ""
      - name: Upload artifact
        uses: actions/upload-artifact@v3
        with:
          name: Binary
          path: |
            ${{ steps.compile.outputs.BUILT_ARCHIVE }}
            ${{ steps.compile.outputs.BUILT_CHECKSUM }}
