288b0c25e6
- Update Docker image names and network configurations - Rename package.json project names to picpeak-backend/frontend - Update CI/CD configurations (Drone CI and GitHub Actions) - Update documentation and setup scripts - Update application branding in source code - Change default database name to picpeak - Update PM2 ecosystem config 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
108 lines
3.9 KiB
YAML
108 lines
3.9 KiB
YAML
name: Create Release
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- 'frontend/package.json'
|
|
- 'backend/package.json'
|
|
|
|
jobs:
|
|
check-version-change:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
version_changed: ${{ steps.check.outputs.changed }}
|
|
new_version: ${{ steps.check.outputs.version }}
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
|
|
- name: Check if version changed
|
|
id: check
|
|
run: |
|
|
# Get current versions
|
|
FRONTEND_VERSION=$(node -p "require('./frontend/package.json').version")
|
|
BACKEND_VERSION=$(node -p "require('./backend/package.json').version")
|
|
|
|
# Get previous versions
|
|
git checkout HEAD~1
|
|
PREV_FRONTEND_VERSION=$(node -p "require('./frontend/package.json').version" 2>/dev/null || echo "0.0.0")
|
|
PREV_BACKEND_VERSION=$(node -p "require('./backend/package.json').version" 2>/dev/null || echo "0.0.0")
|
|
|
|
# Check if versions changed
|
|
if [[ "$FRONTEND_VERSION" != "$PREV_FRONTEND_VERSION" ]] || [[ "$BACKEND_VERSION" != "$PREV_BACKEND_VERSION" ]]; then
|
|
echo "changed=true" >> $GITHUB_OUTPUT
|
|
echo "version=$FRONTEND_VERSION" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "changed=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
create-release:
|
|
needs: check-version-change
|
|
if: needs.check-version-change.outputs.version_changed == 'true'
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Generate Changelog
|
|
id: changelog
|
|
run: |
|
|
# Get commits since last tag
|
|
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
if [[ -z "$LAST_TAG" ]]; then
|
|
COMMITS=$(git log --oneline)
|
|
else
|
|
COMMITS=$(git log ${LAST_TAG}..HEAD --oneline)
|
|
fi
|
|
|
|
# Format changelog
|
|
echo "## What's Changed" > changelog.md
|
|
echo "" >> changelog.md
|
|
|
|
# Group commits by type
|
|
echo "### Features" >> changelog.md
|
|
echo "$COMMITS" | grep -E "^[a-f0-9]+ feat:" | sed 's/^[a-f0-9]+ /- /' >> changelog.md || echo "*No new features*" >> changelog.md
|
|
|
|
echo "" >> changelog.md
|
|
echo "### Bug Fixes" >> changelog.md
|
|
echo "$COMMITS" | grep -E "^[a-f0-9]+ fix:" | sed 's/^[a-f0-9]+ /- /' >> changelog.md || echo "*No bug fixes*" >> changelog.md
|
|
|
|
echo "" >> changelog.md
|
|
echo "### Other Changes" >> changelog.md
|
|
echo "$COMMITS" | grep -vE "^[a-f0-9]+ (feat|fix):" | sed 's/^[a-f0-9]+ /- /' >> changelog.md || echo "*No other changes*" >> changelog.md
|
|
|
|
# Save changelog
|
|
echo "changelog<<EOF" >> $GITHUB_OUTPUT
|
|
cat changelog.md >> $GITHUB_OUTPUT
|
|
echo "EOF" >> $GITHUB_OUTPUT
|
|
|
|
- name: Create Release
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
tag_name: v${{ needs.check-version-change.outputs.new_version }}
|
|
name: Release v${{ needs.check-version-change.outputs.new_version }}
|
|
body: |
|
|
## PicPeak v${{ needs.check-version-change.outputs.new_version }}
|
|
|
|
${{ steps.changelog.outputs.changelog }}
|
|
|
|
### Docker Images
|
|
|
|
To use this release with Docker:
|
|
```bash
|
|
docker pull ghcr.io/${{ github.repository }}/frontend:v${{ needs.check-version-change.outputs.new_version }}
|
|
docker pull ghcr.io/${{ github.repository }}/backend:v${{ needs.check-version-change.outputs.new_version }}
|
|
```
|
|
|
|
Or use the `latest` tag for the most recent version.
|
|
draft: false
|
|
prerelease: false
|
|
generate_release_notes: true |