name: Release on: push: tags: [ '*.*.*' ] jobs: build: uses: ./.github/workflows/build-base.yml pypi: runs-on: ubuntu-latest environment: pypi permissions: contents: read id-token: write env: UV_SYSTEM_PYTHON: 1 steps: - uses: actions/checkout@v6 - uses: actions/setup-python@v6 with: python-version-file: "pyproject.toml" - name: Install uv uses: astral-sh/setup-uv@v7 with: enable-cache: true - name: Build run: uv build - name: Publish run: uv publish release: permissions: contents: write runs-on: ubuntu-slim needs: [build, pypi] steps: - name: Download builds uses: actions/download-artifact@v8 - name: Setup distribution dir run: mkdir dist - name: Copy binaries run: | oses=("Linux" "macOS" "Windows") arches=("X64" "ARM64") for os in ${oses[@]}; do for arch in ${arches[@]}; do file="./$os-$arch-package/legendary"* if [ -f $file ]; then filename=$(basename $file) ext=${filename#*.} if [[ "$ext" == "$filename" ]]; then ext="" else ext=".$ext" fi cp $file "./dist/legendary_${os,}_${arch,,}$ext" fi done done - name: Package macOS zip working-directory: dist run: 7z a legendary_macOS.zip legendary_macOS_* - name: Create draft release env: GH_TOKEN: ${{ github.token }} run: gh release create "${{ github.ref_name }}" --repo "${{ github.server_url }}/${{ github.repository }}" --draft --generate-notes --verify-tag ./dist/legendary*