diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4ee2903..ff78eed 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -14,23 +14,76 @@ on: - LICENSE - run.sh +env: + CARGO_TERM_COLOR: always + jobs: build: strategy: matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-musl + - os: ubuntu-latest + target: aarch64-unknown-linux-musl + linker: gcc-aarch64-linux-gnu + - os: ubuntu-latest + target: armv7-unknown-linux-gnueabihf + linker: gcc-arm-linux-gnueabihf + - os: macos-latest + target: x86_64-apple-darwin + - os: macos-latest + target: aarch64-apple-darwin + # - os: windows-latest + # target: x86_64-pc-windows-msvc + # - os: windows-latest + # target: i686-pc-windows-msvc + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable + with: + toolchain: stable + targets: ${{ matrix.target }} - uses: Swatinem/rust-cache@v2 + - name: Install Linker + if: matrix.linker + run: | + sudo apt-get update + sudo apt-get install ${{ matrix.linker }} + cat .cargo/config.github >> .cargo/config + - name: Build - run: cargo build --verbose --release + run: cargo build --verbose --release --target ${{ matrix.target }} - name: Run tests run: cargo test --verbose + + - name: Package Artifacts + shell: bash + run: | + src=$(pwd) + stage= + case $RUNNER_OS in + Linux) + stage=$(mktemp -d) + ;; + macOS) + stage=$(mktemp -d -t tmp) + ;; + esac + + cp target/${{ matrix.target }}/release/spotify-player-quickauth $stage/ + cd $stage + RELEASE_VERSION=${GITHUB_REF#refs/tags/} + ASSET_NAME="spotify-player-quickauth-$RELEASE_VERSION-${{ matrix.target }}.tar.gz" + ASSET_PATH="$src/$ASSET_NAME" + echo "ASSET_PATH=$ASSET_PATH" >> $GITHUB_ENV + tar czf $ASSET_PATH * + cd $src # Publish flow # - name: cargo login