ice/.forgejo/workflows/release.yml
Derek Slenk d9944a6a4c
All checks were successful
Code Quality / Code Quality Checks (pull_request) Successful in 1m41s
CI / Validate i18n Files (pull_request) Successful in 26s
CI / TypeScript Type Check (pull_request) Successful in 1m27s
CI / Run Tests (Node 20) (pull_request) Successful in 1m31s
CI / Lint Code (pull_request) Successful in 1m33s
CI / Security Checks (pull_request) Successful in 1m32s
CI / Run Tests (Node 18) (pull_request) Successful in 1m35s
CI / Build Project (pull_request) Successful in 1m38s
CI / Test Coverage (pull_request) Successful in 1m55s
Refactor checkout actions to use official forgejo actions for consistency
2025-07-17 13:10:18 -04:00

98 lines
No EOL
3.4 KiB
YAML

name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: self-hosted
name: Create Release
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
run: |
node --version
npm --version
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Build project
run: npm run build
- name: Generate changelog
run: |
echo "# Changelog" > CHANGELOG_CURRENT.md
echo "" >> CHANGELOG_CURRENT.md
# Get the previous tag
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
CURRENT_TAG="${{ github.ref_name }}"
if [ -n "$PREV_TAG" ]; then
echo "## Changes since $PREV_TAG" >> CHANGELOG_CURRENT.md
echo "" >> CHANGELOG_CURRENT.md
# Group commits by type
echo "### Features" >> CHANGELOG_CURRENT.md
git log $PREV_TAG..HEAD --grep="feat:" --pretty=format:"- %s" >> CHANGELOG_CURRENT.md || true
echo "" >> CHANGELOG_CURRENT.md
echo "### Bug Fixes" >> CHANGELOG_CURRENT.md
git log $PREV_TAG..HEAD --grep="fix:" --pretty=format:"- %s" >> CHANGELOG_CURRENT.md || true
echo "" >> CHANGELOG_CURRENT.md
echo "### Other Changes" >> CHANGELOG_CURRENT.md
git log $PREV_TAG..HEAD --grep -v "feat:\|fix:" --pretty=format:"- %s" >> CHANGELOG_CURRENT.md || true
else
echo "## Initial Release" >> CHANGELOG_CURRENT.md
git log --pretty=format:"- %s" >> CHANGELOG_CURRENT.md
fi
- name: Create release archive
run: |
# Create a release archive excluding unnecessary files
tar -czf "ice-report-${{ github.ref_name }}.tar.gz" \
--exclude=node_modules \
--exclude=.git \
--exclude=.env \
--exclude=*.db \
--exclude=coverage \
--exclude=.forgejo \
.
- name: Create release notes
run: |
echo "# Release ${{ github.ref_name }}" > RELEASE_NOTES.md
echo "" >> RELEASE_NOTES.md
echo "## Installation" >> RELEASE_NOTES.md
echo "" >> RELEASE_NOTES.md
echo '```bash' >> RELEASE_NOTES.md
echo "wget https://git.deco.sh/deco/ice/releases/download/${{ github.ref_name }}/ice-report-${{ github.ref_name }}.tar.gz" >> RELEASE_NOTES.md
echo "tar -xzf ice-report-${{ github.ref_name }}.tar.gz" >> RELEASE_NOTES.md
echo "cd ice-report" >> RELEASE_NOTES.md
echo "npm install" >> RELEASE_NOTES.md
echo "npm run build" >> RELEASE_NOTES.md
echo '```' >> RELEASE_NOTES.md
echo "" >> RELEASE_NOTES.md
cat CHANGELOG_CURRENT.md >> RELEASE_NOTES.md
# Note: In actual Forgejo/Gitea, you would use their release API
# This is a placeholder showing what would be done
- name: Display release information
run: |
echo "Release ${{ github.ref_name }} is ready!"
echo "Archive: ice-report-${{ github.ref_name }}.tar.gz"
echo ""
echo "Release notes:"
cat RELEASE_NOTES.md