mirror of
https://github.com/ivuorinen/actions.git
synced 2026-01-26 03:23:59 +00:00
* fix: disable markdownlint table alignment rule * fix(ci): daily release only if changes
66 lines
1.9 KiB
YAML
66 lines
1.9 KiB
YAML
---
|
|
name: Release Daily State
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: '0 21 * * *' # 00:00 at Europe/Helsinki
|
|
|
|
permissions: read-all
|
|
|
|
jobs:
|
|
new-daily-release:
|
|
runs-on: ubuntu-latest
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
outputs:
|
|
created: ${{ steps.daily-version.outputs.created }}
|
|
version: ${{ steps.daily-version.outputs.version }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@71cf2267d89c5cb81562390fa70a37fa40b1305e # v6-beta
|
|
with:
|
|
fetch-depth: 0 # Fetch all history and tags for comparison
|
|
|
|
- name: Create daily release
|
|
id: daily-version
|
|
run: |
|
|
set -eu
|
|
|
|
VERSION="v$(date '+%Y.%m.%d')"
|
|
printf '%s\n' "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
|
|
# Check if release already exists
|
|
if gh release view "$VERSION" >/dev/null 2>&1; then
|
|
printf '%s\n' "created=false" >> "$GITHUB_OUTPUT"
|
|
printf '%s\n' "Release $VERSION already exists - skipping"
|
|
exit 0
|
|
fi
|
|
|
|
# Get the most recent tag
|
|
PREVIOUS_TAG=$(git tag --sort=-version:refname | head -1)
|
|
|
|
# Check if there are any changes since the previous tag
|
|
if [ -n "$PREVIOUS_TAG" ]; then
|
|
CHANGES=$(git rev-list "$PREVIOUS_TAG"..HEAD --count)
|
|
if [ "$CHANGES" -eq 0 ]; then
|
|
printf '%s\n' "created=false" >> "$GITHUB_OUTPUT"
|
|
printf '%s\n' "No changes since $PREVIOUS_TAG - skipping release"
|
|
exit 0
|
|
fi
|
|
printf '%s\n' "Found $CHANGES commit(s) since $PREVIOUS_TAG"
|
|
fi
|
|
|
|
# Create release with auto-generated changelog (also creates tag)
|
|
gh release create "$VERSION" \
|
|
--title "Release $VERSION" \
|
|
--generate-notes \
|
|
--target main
|
|
|
|
printf '%s\n' "created=true" >> "$GITHUB_OUTPUT"
|
|
printf '%s\n' "Created release $VERSION"
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|