Release #43
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# From | |
# https://github.com/marketplace/actions/build-rust-projects-with-cross | |
# and | |
# https://github.com/houseabsolute/precious/blob/master/.github/workflows/ci.yml | |
name: Release | |
on: | |
workflow_dispatch: | |
inputs: | |
create_release: | |
type: boolean | |
description: Create release | |
default: false | |
draft: | |
type: boolean | |
description: Draft release | |
default: true | |
prerelease: | |
type: boolean | |
description: Prerelease | |
default: true | |
jobs: | |
release: | |
name: Release - ${{ matrix.platform.release_for }} | |
strategy: | |
matrix: | |
platform: | |
- release_for: Linux-x86_64 | |
os: ubuntu-20.04 | |
target: x86_64-unknown-linux-gnu | |
bin: mrpack-distributor | |
name: mrpack-distributor_Linux-x86_64.tar.gz | |
command: build | |
- release_for: Windows-x86_64 | |
os: windows-latest | |
target: x86_64-pc-windows-msvc | |
bin: mrpack-distributor.exe | |
name: mrpack-distributor_Windows-x86_64.zip | |
command: build | |
- release_for: macOS-x86_64 | |
os: macOS-latest | |
target: x86_64-apple-darwin | |
bin: mrpack-distributor | |
name: mrpack-distributor_Darwin-x86_64.tar.gz | |
command: build | |
runs-on: ${{ matrix.platform.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Read version | |
uses: SebRollen/[email protected] | |
id: read_version | |
with: | |
file: 'Cargo.toml' | |
field: 'package.version' | |
# ripped from https://stackoverflow.com/a/64702025/15076207 | |
- name: Cargo cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Build binary | |
uses: houseabsolute/actions-rust-cross@v0 | |
with: | |
command: ${{ matrix.platform.command }} | |
target: ${{ matrix.platform.target }} | |
args: "--locked --release" | |
strip: true | |
# ripped from https://github.com/houseabsolute/precious/blob/master/.github/workflows/ci.yml | |
- name: Package as archive | |
shell: bash | |
run: | | |
cd target/${{ matrix.platform.target }}/release | |
if [[ "${{ matrix.platform.os }}" == "windows-latest" ]]; then | |
7z a ../../../${{ matrix.platform.name }} ${{ matrix.platform.bin }} | |
else | |
tar czvf ../../../${{ matrix.platform.name }} ${{ matrix.platform.bin }} | |
fi | |
cd - | |
- name: Publish artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: "artifacts" | |
path: "mrpack-distributor_*" | |
# SHA commands from https://stackoverflow.com/questions/59810838/how-to-get-the-short-sha-for-the-github-workflow | |
- name: Get short commit SHA (Windows) | |
if: ${{ github.event.inputs.create_release }} && ${{ matrix.platform.os == 'windows-latest' }} | |
run: echo "SHORT_SHA=$("${{ github.sha }}".SubString(0, 8))" >> $env:GITHUB_ENV | |
- name: Get short commit SHA (Unix) | |
if: ${{ github.event.inputs.create_release }} && ${{ matrix.platform.os != 'windows-latest' }} | |
run: echo "SHORT_SHA=`git rev-parse --short HEAD`" >> $GITHUB_ENV | |
- name: Create release | |
if: ${{ github.event.inputs.create_release }} | |
uses: softprops/action-gh-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ steps.read_version.outputs.value }}-${{ env.SHORT_SHA }} | |
name: ${{ steps.read_version.outputs.value }}-${{ env.SHORT_SHA }} | |
draft: ${{ github.event.inputs.draft }} | |
prerelease: ${{ github.event.inputs.prerelease }} | |
files: "mrpack-distributor_*" | |