mirror of
https://github.com/zhom/donutbrowser.git
synced 2026-04-23 12:26:17 +02:00
d725040b6e
Bumps the github-actions group with 6 updates: | Package | From | To | | --- | --- | --- | | [actions/checkout](https://github.com/actions/checkout) | `6.0.0` | `6.0.1` | | [actions/setup-node](https://github.com/actions/setup-node) | `6.0.0` | `6.1.0` | | [swatinem/rust-cache](https://github.com/swatinem/rust-cache) | `2.8.1` | `2.8.2` | | [actions/ai-inference](https://github.com/actions/ai-inference) | `2.0.1` | `2.0.4` | | [crate-ci/typos](https://github.com/crate-ci/typos) | `1.39.2` | `1.40.0` | | [actions/stale](https://github.com/actions/stale) | `10.1.0` | `10.1.1` | Updates `actions/checkout` from 6.0.0 to 6.0.1 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3...8e8c483db84b4bee98b60c0593521ed34d9990e8) Updates `actions/setup-node` from 6.0.0 to 6.1.0 - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/2028fbc5c25fe9cf00d9f06a71cc4710d4507903...395ad3262231945c25e8478fd5baf05154b1d79f) Updates `swatinem/rust-cache` from 2.8.1 to 2.8.2 - [Release notes](https://github.com/swatinem/rust-cache/releases) - [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md) - [Commits](https://github.com/swatinem/rust-cache/compare/f13886b937689c021905a6b90929199931d60db1...779680da715d629ac1d338a641029a2f4372abb5) Updates `actions/ai-inference` from 2.0.1 to 2.0.4 - [Release notes](https://github.com/actions/ai-inference/releases) - [Commits](https://github.com/actions/ai-inference/compare/a1c11829223a786afe3b5663db904a3aa1eac3a2...334892bb203895caaed82ec52d23c1ed9385151e) Updates `crate-ci/typos` from 1.39.2 to 1.40.0 - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/626c4bedb751ce0b7f03262ca97ddda9a076ae1c...2d0ce569feab1f8752f1dde43cc2f2aa53236e06) Updates `actions/stale` from 10.1.0 to 10.1.1 - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/5f858e3efba33a5ca4407a664cc011ad407f2008...997185467fa4f803885201cee163a9f38240193d) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: actions/setup-node dependency-version: 6.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions - dependency-name: swatinem/rust-cache dependency-version: 2.8.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: actions/ai-inference dependency-version: 2.0.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: crate-ci/typos dependency-version: 1.40.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions - dependency-name: actions/stale dependency-version: 10.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
152 lines
5.6 KiB
YAML
152 lines
5.6 KiB
YAML
name: Generate Release Notes
|
|
|
|
on:
|
|
workflow_run:
|
|
workflows: ["Release"]
|
|
types:
|
|
- completed
|
|
|
|
permissions:
|
|
contents: write
|
|
models: read
|
|
|
|
jobs:
|
|
generate-release-notes:
|
|
runs-on: ubuntu-latest
|
|
if: github.event.workflow_run.conclusion == 'success' && startsWith(github.event.workflow_run.head_branch, 'v')
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Get release info
|
|
id: get-release
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
TAG_NAME: ${{ github.event.workflow_run.head_branch }}
|
|
run: |
|
|
echo "tag-name=$TAG_NAME" >> $GITHUB_OUTPUT
|
|
|
|
# Get release info by tag
|
|
RELEASE_INFO=$(gh api /repos/${{ github.repository }}/releases/tags/$TAG_NAME)
|
|
RELEASE_ID=$(echo "$RELEASE_INFO" | jq -r '.id')
|
|
IS_PRERELEASE=$(echo "$RELEASE_INFO" | jq -r '.prerelease')
|
|
|
|
echo "release-id=$RELEASE_ID" >> $GITHUB_OUTPUT
|
|
echo "is-prerelease=$IS_PRERELEASE" >> $GITHUB_OUTPUT
|
|
|
|
if [ "$IS_PRERELEASE" = "true" ]; then
|
|
echo "Skipping release notes generation for prerelease"
|
|
fi
|
|
|
|
- name: Get previous release tag
|
|
id: get-previous-tag
|
|
if: steps.get-release.outputs.is-prerelease == 'false'
|
|
env:
|
|
CURRENT_TAG: ${{ steps.get-release.outputs.tag-name }}
|
|
run: |
|
|
PREVIOUS_TAG=$(git tag --sort=-version:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | grep -v "$CURRENT_TAG" | head -n 1)
|
|
|
|
if [ -z "$PREVIOUS_TAG" ]; then
|
|
echo "No previous release found, using initial commit"
|
|
PREVIOUS_TAG=$(git rev-list --max-parents=0 HEAD)
|
|
fi
|
|
|
|
echo "current-tag=$CURRENT_TAG" >> $GITHUB_OUTPUT
|
|
echo "previous-tag=$PREVIOUS_TAG" >> $GITHUB_OUTPUT
|
|
echo "Previous release: $PREVIOUS_TAG"
|
|
echo "Current release: $CURRENT_TAG"
|
|
|
|
- name: Get commit messages between releases
|
|
id: get-commits
|
|
if: steps.get-release.outputs.is-prerelease == 'false'
|
|
env:
|
|
PREVIOUS_TAG: ${{ steps.get-previous-tag.outputs.previous-tag }}
|
|
CURRENT_TAG: ${{ steps.get-previous-tag.outputs.current-tag }}
|
|
run: |
|
|
# Get commit log with detailed format
|
|
COMMIT_LOG=$(git log --pretty=format:"- %s (%h by %an)" "$PREVIOUS_TAG".."$CURRENT_TAG" --no-merges)
|
|
|
|
# Get changed files summary
|
|
CHANGED_FILES=$(git diff --name-status "$PREVIOUS_TAG".."$CURRENT_TAG" | head -20)
|
|
|
|
# Save to files for AI processing
|
|
echo "$COMMIT_LOG" > commits.txt
|
|
echo "$CHANGED_FILES" > changes.txt
|
|
|
|
echo "commits-file=commits.txt" >> $GITHUB_OUTPUT
|
|
echo "changes-file=changes.txt" >> $GITHUB_OUTPUT
|
|
|
|
- name: Generate release notes with AI
|
|
id: generate-notes
|
|
if: steps.get-release.outputs.is-prerelease == 'false'
|
|
uses: actions/ai-inference@334892bb203895caaed82ec52d23c1ed9385151e # v2.0.4
|
|
with:
|
|
prompt-file: commits.txt
|
|
system-prompt: |
|
|
You are an expert technical writer tasked with generating comprehensive release notes for Donut Browser, a powerful anti-detect browser.
|
|
|
|
Analyze the provided commit messages and generate well-structured release notes following this format:
|
|
|
|
## What's New in ${{ steps.get-previous-tag.outputs.current-tag }}
|
|
|
|
[Brief 1-2 sentence overview of the release]
|
|
|
|
### ✨ New Features
|
|
[List new features with brief descriptions]
|
|
|
|
### 🐛 Bug Fixes
|
|
[List bug fixes]
|
|
|
|
### 🔧 Improvements
|
|
[List improvements and enhancements]
|
|
|
|
### 📚 Documentation
|
|
[List documentation updates if any]
|
|
|
|
### 🔄 Dependencies
|
|
[List dependency updates if any]
|
|
|
|
### 🛠️ Developer Experience
|
|
[List development-related changes if any]
|
|
|
|
Guidelines:
|
|
- Use clear, user-friendly language
|
|
- Group related commits logically
|
|
- Omit minor commits like formatting, typos unless significant
|
|
- Focus on user-facing changes
|
|
- Use emojis sparingly and consistently
|
|
- Keep descriptions concise but informative
|
|
- If commits are unclear, infer the purpose from the context
|
|
|
|
The application is a desktop app built with Tauri + Next.js that helps users manage multiple browser profiles with proxy support.
|
|
model: gpt-4o
|
|
|
|
- name: Update release with generated notes
|
|
if: steps.get-release.outputs.is-prerelease == 'false'
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
RESPONSE_FILE: ${{ steps.generate-notes.outputs.response-file }}
|
|
RESPONSE_OUTPUT: ${{ steps.generate-notes.outputs.response }}
|
|
RELEASE_ID: ${{ steps.get-release.outputs.release-id }}
|
|
run: |
|
|
# Prefer reading from the response file to avoid output truncation
|
|
if [ -n "$RESPONSE_FILE" ] && [ -f "$RESPONSE_FILE" ]; then
|
|
RELEASE_NOTES=$(cat "$RESPONSE_FILE")
|
|
else
|
|
RELEASE_NOTES="$RESPONSE_OUTPUT"
|
|
fi
|
|
|
|
# Update the release with the generated notes
|
|
gh api --method PATCH /repos/${{ github.repository }}/releases/"$RELEASE_ID" \
|
|
--field body="$RELEASE_NOTES"
|
|
|
|
echo "✅ Release notes updated successfully!"
|
|
|
|
- name: Cleanup
|
|
if: always()
|
|
run: |
|
|
rm -f commits.txt changes.txt
|