59 lines
1.6 KiB
YAML
59 lines
1.6 KiB
YAML
name: Zip and Release
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- master
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
zip-and-release:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Create zip (flat root, exclude .git)
|
|
run: |
|
|
zip -9 -r repo.zip . -x ".git/*" "repo.zip"
|
|
|
|
- name: Generate release metadata and body
|
|
id: meta
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
TS=$(date -u +'%Y%m%d-%H%M%S')
|
|
RAND=$(openssl rand -hex 4)
|
|
NAME="Release-${TS}-${RAND}"
|
|
TAG="tag-${TS}-${RAND}"
|
|
echo "name=$NAME" >> "$GITHUB_OUTPUT"
|
|
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
|
|
{
|
|
echo "Automated release for $GITHUB_REF at $TS (commit $GITHUB_SHA)."
|
|
if jq -e '.commits | length > 0' "$GITHUB_EVENT_PATH" >/dev/null 2>&1; then
|
|
echo
|
|
echo "Changes:"
|
|
jq -r '.commits[] | "- " + (.message | gsub("\r"; "")) + " (" + ((.author.username // .author.name) // "unknown") + ")"' "$GITHUB_EVENT_PATH"
|
|
else
|
|
echo
|
|
echo "Changes:"
|
|
git log -1 --pretty=format:'- %s (%an)'
|
|
fi
|
|
} > RELEASE_BODY.md
|
|
|
|
- name: Create GitHub release and upload asset
|
|
uses: softprops/action-gh-release@v2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
tag_name: ${{ steps.meta.outputs.tag }}
|
|
name: ${{ steps.meta.outputs.name }}
|
|
body_path: RELEASE_BODY.md
|
|
files: repo.zip
|
|
draft: false
|
|
prerelease: false
|