# Copyright © 2023 OpenIM open source community. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. name: Auto PR to release on: pull_request: # types: # - closed issue_comment: types: [created] pull_request_review_comment: types: [created] jobs: sync-issue-to-pr: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Sync Issue to PR if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'main' run: | PR_BODY="${{ github.event.pull_request.body }}" ISSUE_NUMBER=$(echo "$PR_BODY" | grep -oP 'Fixes #\K\d+') if [[ -z "$ISSUE_NUMBER" ]]; then echo "No Issue number found." exit 1 fi echo "Issue number found: $ISSUE_NUMBER" # Using GitHub CLI to get issue details gh issue view "$ISSUE_NUMBER" --repo "${{ github.repository }}" --json labels,assignees,milestone,title > issue_data.json # Check if jq is installed if ! command -v jq &> /dev/null; then echo "Installing jq..." sudo apt-get install -y jq fi # Parse data with jq LABELS=$(jq -r '.labels | map(.name) | join(",")' issue_data.json) ASSIGNEES=$(jq -r '.assignees | map(.login) | join(",")' issue_data.json) MILESTONE=$(jq -r '.milestone.title' issue_data.json) # Check if any of the fields are empty and set them to None LABELS=${LABELS:-None} ASSIGNEES=${ASSIGNEES:-None} MILESTONE=${MILESTONE:-None} # Edit the PR with issue details, handling empty fields gh pr edit "${{ github.event.pull_request.number }}" --repo "${{ github.repository }}" \ ${LABELS:+--add-label "$LABELS"} \ ${ASSIGNEES:+--add-assignee "$ASSIGNEES"} \ ${MILESTONE:+--milestone "$MILESTONE"} continue-on-error: true env: GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}