name: Publish to release
on:
release:
types: [created]
permissions:
contents: write
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
env:
BINARY: uuidtools
OUT_PACKAGE: uuidtools-${{ github.ref_name }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Install dependencies (Linux)
if: matrix.os == 'ubuntu-latest'
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install musl-tools musl-dev libc6-dev:i386 libgcc-11-dev:i386 gcc-multilib
cargo install cargo-deb
- name: Add Rust targets
run: |
rustup target add i686-unknown-linux-gnu
rustup target add x86_64-unknown-linux-gnu
rustup target add x86_64-unknown-linux-musl
rustup target add i686-unknown-linux-musl
rustup target add x86_64-pc-windows-gnu
rustup target add x86_64-pc-windows-msvc
- name: Build (x86_64, Windows & Linux, Gnu)
run: cargo build --release --target ${{ matrix.os == 'windows-latest' && 'x86_64-pc-windows-gnu' || 'x86_64-unknown-linux-gnu' }}
- name: Build (i686, Linux, Gnu)
if: matrix.os == 'ubuntu-latest'
run: cargo build --release --target i686-unknown-linux-gnu
- name: Build (x86_64, Linux, Musl)
if: matrix.os == 'ubuntu-latest'
run: cargo build --release --target x86_64-unknown-linux-musl
- name: Build (i686, Linux, Musl)
if: matrix.os == 'ubuntu-latest'
run: cargo build --release --target i686-unknown-linux-musl
- name: Build (x86_64, Windows, Msvc)
if: matrix.os == 'windows-latest'
run: cargo build --release --target x86_64-pc-windows-msvc
- name: Make debian x86_64 package
if: matrix.os == 'ubuntu-latest'
run: cargo deb --target x86_64-unknown-linux-gnu
- name: Make debian i686 package
if: matrix.os == 'ubuntu-latest'
run: cargo deb --target i686-unknown-linux-gnu
- name: Package (linux)
if: matrix.os == 'ubuntu-latest'
run: |
tar -czvf target/$OUT_PACKAGE-x86_64-unknown-linux-gnu.tar.gz --directory=target/x86_64-unknown-linux-gnu/release $BINARY
tar -czvf target/$OUT_PACKAGE-i686-unknown-linux-gnu.tar.gz --directory=target/i686-unknown-linux-gnu/release $BINARY
tar -czvf target/$OUT_PACKAGE-x86_64-unknown-linux-musl.tar.gz --directory=target/x86_64-unknown-linux-musl/release $BINARY
tar -czvf target/$OUT_PACKAGE-i686-unknown-linux-musl.tar.gz --directory=target/i686-unknown-linux-musl/release $BINARY
ls target
- name: Package (windows)
if: matrix.os == 'windows-latest'
run: |
tar -czvf target/${env:OUT_PACKAGE}-x86_64-pc-windows-gnu.tar.gz --directory=target/x86_64-pc-windows-gnu/release "${env:BINARY}.exe"
tar -czvf target/${env:OUT_PACKAGE}-x86_64-pc-windows-msvc.tar.gz --directory=target/x86_64-pc-windows-msvc/release "${env:BINARY}.exe"
- name: Upload linux x86_64 gnu artifacts
if: matrix.os == 'ubuntu-latest'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: target/${{ env.OUT_PACKAGE }}-x86_64-unknown-linux-gnu.tar.gz
make_latest: false
- name: Upload linux x86_64 musl artifacts
if: matrix.os == 'ubuntu-latest'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: target/${{ env.OUT_PACKAGE }}-x86_64-unknown-linux-musl.tar.gz
make_latest: false
- name: Upload linux i686 musl artifacts
if: matrix.os == 'ubuntu-latest'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: target/${{ env.OUT_PACKAGE }}-i686-unknown-linux-musl.tar.gz
make_latest: false
- name: Upload linux i686 gnu artifacts
if: matrix.os == 'ubuntu-latest'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: target/${{ env.OUT_PACKAGE }}-i686-unknown-linux-gnu.tar.gz
make_latest: false
- name: Upload windows x86_64 gnu artifacts
if: matrix.os == 'windows-latest'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: target/${{ env.OUT_PACKAGE }}-x86_64-pc-windows-gnu.tar.gz
make_latest: false
- name: Upload windows x86_64 msvc artifacts
if: matrix.os == 'windows-latest'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: target/${{ env.OUT_PACKAGE }}-x86_64-pc-windows-msvc.tar.gz
make_latest: false
- name: Upload debian x86_64 gnu artifacts
if: matrix.os == 'ubuntu-latest'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: target/x86_64-unknown-linux-gnu/debian/${{ env.BINARY }}_${{ github.ref_name }}-1_amd64.deb
make_latest: false
- name: Upload debian i686 gnu artifacts
if: matrix.os == 'ubuntu-latest'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: target/i686-unknown-linux-gnu/debian/${{ env.BINARY }}_${{ github.ref_name }}-1_i386.deb
make_latest: false