name: Release on: push: tags: - 'v*.*.*' permissions: contents: write packages: write jobs: create-release: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 with: fetch-depth: 0 - name: Generate changelog id: changelog run: | # Get previous tag PREV_TAG=$(git describe --tags --abbrev=0 $(git rev-list --tags --skip=1 --max-count=1) 2>/dev/null || echo "") if [ -z "$PREV_TAG" ]; then echo "First release - generating full changelog" CHANGELOG=$(git log --pretty=format:"- %s (%h)" --no-merges) else echo "Generating changelog since $PREV_TAG" CHANGELOG=$(git log $PREV_TAG..HEAD --pretty=format:"- %s (%h)" --no-merges) fi # Save to file for GitHub release echo "$CHANGELOG" > CHANGELOG.txt echo "Generated changelog with $(echo "$CHANGELOG" | wc -l) commits" - name: Create GitHub Release uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe # v2 with: body_path: CHANGELOG.txt generate_release_notes: true draft: false prerelease: ${{ contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') || contains(github.ref_name, 'rc') }} env: GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} build-and-publish: needs: create-release uses: ./.github/workflows/docker-publish.yml secrets: inherit