name: Release
on:
push:
tags:
- "v*"
workflow_dispatch:
inputs:
version:
description: "Version to release (e.g. 0.1.0)"
required: true
type: string
env:
CARGO_TERM_COLOR: always
CARGO_NET_RETRY: 10
jobs:
build-linux-amd64:
name: Build Linux amd64
runs-on: ubuntu-latest
container:
image: rust:1-bookworm
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Build release binary
run: cargo build --release --bin swimmers
- name: Package tarball
run: |
mkdir -p dist
cp target/release/swimmers dist/swimmers-linux-amd64
chmod +x dist/swimmers-linux-amd64
cd dist
sha256sum swimmers-linux-amd64 > swimmers-linux-amd64.sha256
- uses: actions/upload-artifact@v4
with:
name: swimmers-linux-amd64
path: dist/*
release:
name: Create Release
needs: build-linux-amd64
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- uses: actions/download-artifact@v4
with:
path: dist
merge-multiple: true
- uses: softprops/action-gh-release@v2
with:
name: ${{ github.event_name == 'workflow_dispatch' && format('v{0}', inputs.version) || github.ref_name }}
tag_name: ${{ github.event_name == 'workflow_dispatch' && format('v{0}', inputs.version) || github.ref_name }}
files: dist/*