name: Publish on: push: tags: - 'v*' jobs: publish: name: ${{ matrix.os }} for ${{ matrix.target }} runs-on: ${{ matrix.os }} strategy: matrix: target: - x86_64-unknown-linux-musl - aarch64-unknown-linux-musl - armv7-unknown-linux-musleabihf - arm-unknown-linux-musleabihf - mips-unknown-linux-musl - mipsel-unknown-linux-musl - mips64-unknown-linux-gnuabi64 - mips64el-unknown-linux-gnuabi64 - riscv64gc-unknown-linux-gnu - x86_64-pc-windows-msvc - x86_64-apple-darwin - x86_64-unknown-freebsd include: - os: ubuntu-latest target: x86_64-unknown-linux-musl artifact_name: target/x86_64-unknown-linux-musl/release/miniserve release_name: x86_64-unknown-linux-musl cross: true strip: true compress: true - os: ubuntu-latest target: aarch64-unknown-linux-musl artifact_name: target/aarch64-unknown-linux-musl/release/miniserve release_name: aarch64-unknown-linux-musl cross: true strip: false compress: true - os: ubuntu-latest target: armv7-unknown-linux-musleabihf artifact_name: target/armv7-unknown-linux-musleabihf/release/miniserve release_name: armv7-unknown-linux-musleabihf cross: true strip: false compress: true - os: ubuntu-latest target: arm-unknown-linux-musleabihf artifact_name: target/arm-unknown-linux-musleabihf/release/miniserve release_name: arm-unknown-linux-musleabihf cross: true strip: false compress: true - os: ubuntu-latest target: mips-unknown-linux-musl artifact_name: target/mips-unknown-linux-musl/release/miniserve release_name: mips-unknown-linux-musl cross: true strip: false compress: true - os: ubuntu-latest target: mipsel-unknown-linux-musl artifact_name: target/mipsel-unknown-linux-musl/release/miniserve release_name: mipsel-unknown-linux-musl cross: true strip: false compress: true - os: ubuntu-latest target: mips64-unknown-linux-gnuabi64 artifact_name: target/mips64-unknown-linux-gnuabi64/release/miniserve release_name: mips64-unknown-linux-gnuabi64 cross: true strip: false compress: false - os: ubuntu-latest target: mips64el-unknown-linux-gnuabi64 artifact_name: target/mips64el-unknown-linux-gnuabi64/release/miniserve release_name: mips64el-unknown-linux-gnuabi64 cross: true strip: false compress: false - os: ubuntu-latest target: riscv64gc-unknown-linux-gnu artifact_name: target/riscv64gc-unknown-linux-gnu/release/miniserve release_name: riscv64gc-unknown-linux-gnu cross: true strip: false compress: false - os: windows-latest target: x86_64-pc-windows-msvc artifact_name: target/x86_64-pc-windows-msvc/release/miniserve.exe release_name: x86_64-pc-windows-msvc.exe cross: false strip: true compress: true - os: macos-latest target: x86_64-apple-darwin artifact_name: target/x86_64-apple-darwin/release/miniserve release_name: x86_64-apple-darwin cross: false strip: true compress: true - os: ubuntu-latest target: x86_64-unknown-freebsd artifact_name: target/x86_64-unknown-freebsd/release/miniserve release_name: x86_64-unknown-freebsd cross: true strip: false compress: false steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable target: ${{ matrix.target }} - name: cargo build uses: actions-rs/cargo@v1 with: command: build args: --release --locked --target=${{ matrix.target }} use-cross: ${{ matrix.cross }} - name: Compress binaries uses: svenstaro/upx-action@v2 with: file: ${{ matrix.artifact_name }} args: --lzma strip: ${{ matrix.strip }} if: ${{ matrix.compress }} - name: Get tag name id: tag_name run: | echo ::set-output name=current_version::${GITHUB_REF#refs/tags/v} shell: bash - name: Get CHANGELOG.md entry id: changelog_reader uses: mindsers/changelog-reader-action@v1 with: version: ${{ steps.tag_name.outputs.current_version }} path: ./CHANGELOG.md - name: Release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: ${{ matrix.artifact_name }} tag: ${{ github.ref }} asset_name: miniserve-$tag-${{ matrix.release_name }} body: ${{ steps.changelog_reader.outputs.log_entry }}