Spaces:
Sleeping
Sleeping
| name: release-please | |
| on: | |
| push: | |
| branches: | |
| - main | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| jobs: | |
| release-please: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: googleapis/release-please-action@v4 | |
| id: release | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| release-type: node | |
| config-file: ./.github/release-please-config.json | |
| - name: Checkout repository | |
| if: ${{ steps.release.outputs.release_created }} | |
| uses: actions/checkout@v4 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| fetch-depth: 0 | |
| - name: Add Authors and Update Release | |
| if: ${{ steps.release.outputs.release_created }} | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| RELEASE_TAG: ${{ steps.release.outputs.tag_name }} | |
| run: | | |
| set -e | |
| echo "Starting 'Add Authors and Update Release' step..." | |
| echo "Release tag detected: $RELEASE_TAG" | |
| TEMP_CHANGELOG="CHANGELOG.md.new" | |
| touch "$TEMP_CHANGELOG" | |
| echo "Created temporary changelog file: $TEMP_CHANGELOG" | |
| if [ -f "CHANGELOG.md" ]; then | |
| echo "CHANGELOG.md found. Processing to add authors..." | |
| while IFS= read -r line; do | |
| # Check if the line already ends with " by @username" | |
| if [[ "$line" =~ \)\ by\ @[[:alnum:]_-]+$ ]]; then | |
| echo " Line already has author, copying as is: $line" | |
| echo "$line" >> "$TEMP_CHANGELOG" | |
| continue | |
| fi | |
| # If not, check if it's a commit line and add author | |
| if [[ "$line" =~ \*\ (.*)\ \(\[([a-f0-9]{7,40})\]\(.*\)\) ]]; then | |
| commit_hash="${BASH_REMATCH[2]}" | |
| echo " Found commit hash: $commit_hash in line: $line" | |
| github_user=$(gh api "repos/${{ github.repository }}/commits/${commit_hash}" | jq -r '.author.login // "unknown"') | |
| echo " Fetched GitHub user for commit $commit_hash: @${github_user}" | |
| echo "${line} by @${github_user}" >> "$TEMP_CHANGELOG" | |
| else | |
| # Copy other lines without modification | |
| echo " Copying line without modification: $line" | |
| echo "$line" >> "$TEMP_CHANGELOG" | |
| fi | |
| done < "CHANGELOG.md" | |
| echo "Finished processing CHANGELOG.md. Moving temporary file to original." | |
| else | |
| echo "CHANGELOG.md not found. Skipping author addition to changelog content." | |
| fi | |
| mv "$TEMP_CHANGELOG" "CHANGELOG.md" | |
| echo "CHANGELOG.md updated with author information." | |
| echo "Extracting release body for tag: $RELEASE_TAG" | |
| RELEASE_BODY=$(awk "/^## \\[?${RELEASE_TAG#v}/{flag=1;next} /^## / && flag{exit} flag" CHANGELOG.md) | |
| if [ -z "$RELEASE_BODY" ]; then | |
| echo "Warning: Could not find release notes for $RELEASE_TAG in CHANGELOG.md." | |
| echo "Using a default message for release body." | |
| RELEASE_BODY="Release $RELEASE_TAG" | |
| else | |
| echo "Successfully extracted release body for $RELEASE_TAG." | |
| echo "Release Body Preview:" | |
| echo "---" | |
| echo "$RELEASE_BODY" | head -n 5 | |
| echo "---" | |
| fi | |
| echo "Attempting to edit GitHub release $RELEASE_TAG with extracted notes." | |
| gh release edit "$RELEASE_TAG" --notes "$RELEASE_BODY" | |
| echo "GitHub release $RELEASE_TAG updated successfully." | |
| echo "Configuring git user for commit." | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| echo "Adding CHANGELOG.md to git index." | |
| git add CHANGELOG.md | |
| echo "Attempting to commit changes to CHANGELOG.md." | |
| git commit -m "update CHANGELOG.md with author info [skip ci] [skip release]" || echo "No changes to commit for CHANGELOG.md or commit failed (this is expected if no changes)." | |
| git push |