Files
gosleep/.gitea/workflows/release.yaml
T
forust b681db19f1
ci / rust (push) Successful in 1m1s
ci / lint-yaml (push) Successful in 4s
release / linux-amd64 (push) Successful in 44s
chore: prepare production rust release
2026-07-03 15:45:22 +02:00

80 lines
2.5 KiB
YAML

name: release
"on":
push:
tags:
- "v*.*.*"
workflow_dispatch:
permissions:
contents: write
jobs:
linux-amd64:
runs-on: [self-hosted, linux, arch, homelab]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build release binary
shell: bash
run: cargo build --release --locked
- name: Package artifact
shell: bash
run: |
tag="${GITHUB_REF##*/}"
version="${tag#v}"
mkdir -p dist
cp target/release/gosleep-timer dist/gosleep-timer
tar -C dist -czf "dist/gosleep-timer-${version}-linux-amd64.tar.gz" gosleep-timer
sha256sum "dist/gosleep-timer-${version}-linux-amd64.tar.gz" > "dist/gosleep-timer-${version}-linux-amd64.tar.gz.sha256"
- name: Create Gitea release
id: release
shell: bash
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
run: |
tag="${GITHUB_REF##*/}"
body="$(cat <<EOF
Release ${tag}
See CHANGELOG.md for notable changes.
EOF
)"
payload="$(jq -n \
--arg tag "${tag}" \
--arg commit "${GITHUB_SHA}" \
--arg name "gosleep-timer ${tag}" \
--arg body "$body" \
'{tag_name: $tag, target_commitish: $commit, name: $name, body: $body, draft: false, prerelease: false}')"
response="$(curl -fsS \
-X POST "${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}/releases" \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
-d "$payload")"
release_id="$(printf '%s' "$response" | jq -r '.id')"
test -n "$release_id" && test "$release_id" != "null"
echo "release_id=${release_id}" >> "$GITHUB_OUTPUT"
- name: Upload Gitea release assets
shell: bash
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
run: |
release_id="${{ steps.release.outputs.release_id }}"
for asset in dist/*.tar.gz dist/*.sha256; do
name="$(basename "$asset")"
curl -fsS \
-X POST "${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}/releases/${release_id}/assets?name=${name}" \
-H "Authorization: token ${GITEA_TOKEN}" \
-F "attachment=@${asset}"
done
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: gosleep-timer-linux-amd64
path: dist/*