# This workflow is triggered on every new release. # It uses Gemini to generate release notes and creates a PR with the changes. name: 'Generate Release Notes' on: release: types: ['published'] workflow_dispatch: inputs: version: description: 'New version (e.g., v1.2.3)' required: true type: 'string' body: description: 'Release notes body' required: true type: 'string' time: description: 'Release time' required: true type: 'string' jobs: generate-release-notes: if: "github.repository == 'google-gemini/gemini-cli'" runs-on: 'ubuntu-latest' permissions: contents: 'write' pull-requests: 'write' steps: - name: 'Checkout repository' uses: 'actions/checkout@v4' with: # The user-level skills need to be available to the workflow fetch-depth: 0 ref: 'main' - name: 'Set up Node.js' uses: 'actions/setup-node@v4' with: node-version: '20' - name: 'Get release information' id: 'release_info' run: | VERSION="${{ github.event.inputs.version || github.event.release.tag_name }}" TIME="${{ github.event.inputs.time || github.event.release.created_at }}" echo "VERSION=${VERSION}" >> "$GITHUB_OUTPUT" echo "TIME=${TIME}" >> "$GITHUB_OUTPUT" # Use a heredoc to preserve multiline release body echo 'RAW_CHANGELOG<> "$GITHUB_OUTPUT" printf "%s\n" "$BODY" >> "$GITHUB_OUTPUT" echo 'EOF' >> "$GITHUB_OUTPUT" env: GH_TOKEN: '${{ secrets.GEMINI_CLI_ROBOT_GITHUB_PAT }}' BODY: '${{ github.event.inputs.body || github.event.release.body }}' - name: 'Validate version' id: 'validate_version' run: | if echo "${{ steps.release_info.outputs.VERSION }}" | grep -q "nightly"; then echo "Nightly release detected. Stopping workflow." echo "CONTINUE=false" >> "$GITHUB_OUTPUT" else echo "CONTINUE=true" >> "$GITHUB_OUTPUT" fi - name: 'Generate Changelog with Gemini' if: "steps.validate_version.outputs.CONTINUE == 'true'" uses: 'google-github-actions/run-gemini-cli@a3bf79042542528e91937b3a3a6fbc4967ee3c31' # ratchet:google-github-actions/run-gemini-cli@v0 with: gemini_api_key: '${{ secrets.GEMINI_API_KEY }}' prompt: | Activate the 'docs-changelog' skill. **Release Information:** - New Version: ${{ steps.release_info.outputs.VERSION }} - Release Date: ${{ steps.release_info.outputs.TIME }} - Raw Changelog Data: ${{ steps.release_info.outputs.RAW_CHANGELOG }} Execute the release notes generation process using the information provided. When you are done, please output your thought process and the steps you took for future debugging purposes. - name: 'Create Pull Request' if: "steps.validate_version.outputs.CONTINUE == 'true'" uses: 'peter-evans/create-pull-request@v6' with: token: '${{ secrets.GEMINI_CLI_ROBOT_GITHUB_PAT }}' commit-message: 'docs(changelog): update for ${{ steps.release_info.outputs.VERSION }}' title: 'Changelog for ${{ steps.release_info.outputs.VERSION }}' body: | This PR contains the auto-generated changelog for the ${{ steps.release_info.outputs.VERSION }} release. Please review and merge. branch: 'changelog-${{ steps.release_info.outputs.VERSION }}' base: 'main' team-reviewers: 'gemini-cli-docs, gemini-cli-maintainers' delete-branch: true