mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-11-04 11:22:10 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			79 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Release Changelog
 | 
						|
 | 
						|
on:
 | 
						|
  release:
 | 
						|
    types: [released]
 | 
						|
 | 
						|
permissions:
 | 
						|
  contents: write
 | 
						|
  pull-requests: write
 | 
						|
 | 
						|
jobs:
 | 
						|
  update-changelog:
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    steps:
 | 
						|
    - name: Checkout code
 | 
						|
      uses: actions/checkout@v4
 | 
						|
 | 
						|
    - name: Run Go Changelog Generator
 | 
						|
      run: |
 | 
						|
        # Run the Go changelog generator, passing the release tag if available
 | 
						|
        if [ "${{ github.event.release.tag_name }}" = "latest" ]; then
 | 
						|
          go run tools/changelog/changelog.go > "${{ github.event.release.tag_name }}-changelog.md"
 | 
						|
        else
 | 
						|
          go run tools/changelog/changelog.go "${{ github.event.release.tag_name }}" > "${{ github.event.release.tag_name }}-changelog.md"
 | 
						|
        fi
 | 
						|
 | 
						|
    - name: Handle changelog files
 | 
						|
      run: |
 | 
						|
        # Ensure that the CHANGELOG directory exists
 | 
						|
        mkdir -p CHANGELOG
 | 
						|
 | 
						|
        # Extract Major.Minor version by removing the 'v' prefix from the tag name
 | 
						|
        TAG_NAME=${{ github.event.release.tag_name }}
 | 
						|
        CHANGELOG_VERSION_NUMBER=$(echo "$TAG_NAME" | sed 's/^v//' | grep -oP '^\d+\.\d+')
 | 
						|
 | 
						|
        # Define the new changelog file path
 | 
						|
        CHANGELOG_FILENAME="CHANGELOG-$CHANGELOG_VERSION_NUMBER.md"
 | 
						|
        CHANGELOG_PATH="CHANGELOG/$CHANGELOG_FILENAME"
 | 
						|
 | 
						|
        # Check if the changelog file for the current release already exists
 | 
						|
        if [ -f "$CHANGELOG_PATH" ]; then
 | 
						|
          # If the file exists, append the new changelog to the existing one
 | 
						|
          cat "$CHANGELOG_PATH" >> "${TAG_NAME}-changelog.md"
 | 
						|
          # Overwrite the existing changelog with the updated content
 | 
						|
          mv "${TAG_NAME}-changelog.md" "$CHANGELOG_PATH"
 | 
						|
        else
 | 
						|
          # If the changelog file doesn't exist, rename the temp changelog file to the new changelog file
 | 
						|
          mv "${TAG_NAME}-changelog.md" "$CHANGELOG_PATH"
 | 
						|
 | 
						|
          # Ensure that README.md exists
 | 
						|
          if [ ! -f "CHANGELOG/README.md" ]; then
 | 
						|
            echo -e "# CHANGELOGs\n\n" > CHANGELOG/README.md
 | 
						|
          fi
 | 
						|
          
 | 
						|
            # Add the new changelog entry at the top of the README.md
 | 
						|
            if ! grep -q "\[$CHANGELOG_FILENAME\]" CHANGELOG/README.md; then
 | 
						|
            sed -i "3i- [$CHANGELOG_FILENAME](./$CHANGELOG_FILENAME)" CHANGELOG/README.md
 | 
						|
            # Remove the extra newline character added by sed
 | 
						|
            # sed -i '4d' CHANGELOG/README.md
 | 
						|
            fi
 | 
						|
          fi
 | 
						|
 | 
						|
    - name: Clean up
 | 
						|
      run: |
 | 
						|
        # Remove any temporary files that were created during the process
 | 
						|
        rm -f "${{ github.event.release.tag_name }}-changelog.md"
 | 
						|
 | 
						|
    - name: Create Pull Request
 | 
						|
      uses: peter-evans/create-pull-request@v7.0.5
 | 
						|
      with:
 | 
						|
        token: ${{ secrets.GITHUB_TOKEN }}
 | 
						|
        commit-message: "Update CHANGELOG for release ${{ github.event.release.tag_name }}"
 | 
						|
        title: "Update CHANGELOG for release ${{ github.event.release.tag_name }}"
 | 
						|
        body: "This PR updates the CHANGELOG files for release ${{ github.event.release.tag_name }}"
 | 
						|
        branch: changelog-${{ github.event.release.tag_name }} 
 | 
						|
        base: main 
 | 
						|
        delete-branch: true
 | 
						|
        labels: changelog
 |