mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-11-04 03:13:15 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
# Copyright © 2023 OpenIM. 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: Github Rebot for Cherry Pick when PR is merged
 | 
						|
on:
 | 
						|
  pull_request_target:
 | 
						|
    types:
 | 
						|
      - closed
 | 
						|
 | 
						|
jobs:
 | 
						|
  comment:
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    steps:
 | 
						|
      - name: Comment cherry-pick command
 | 
						|
        uses: actions/github-script@v7
 | 
						|
        with:
 | 
						|
          github-token: ${{ secrets.BOT_GITHUB_TOKEN }}
 | 
						|
          script: |
 | 
						|
            const pr = context.payload.pull_request;
 | 
						|
            if (!pr.merged) {
 | 
						|
              console.log("PR is not merged. Skipping...");
 | 
						|
              return;
 | 
						|
            }
 | 
						|
            if (!pr.milestone || !pr.milestone.title) {
 | 
						|
              console.log("Milestone is not set. Skipping...");
 | 
						|
              return;
 | 
						|
            }
 | 
						|
            const milestone = pr.milestone.title;
 | 
						|
            const ref = `heads/release-${milestone}`;
 | 
						|
            let branchExists;
 | 
						|
            try {
 | 
						|
              await github.rest.git.getRef({
 | 
						|
                owner: context.repo.owner,
 | 
						|
                repo: context.repo.repo,
 | 
						|
                ref: ref
 | 
						|
              });
 | 
						|
              branchExists = true;
 | 
						|
            } catch (error) {
 | 
						|
              if (error.status === 404) {
 | 
						|
                console.log(`Branch ${ref} does not exist. Skipping...`);
 | 
						|
                branchExists = false;
 | 
						|
              } else {
 | 
						|
                throw error; // Rethrow if it's another error
 | 
						|
              }
 | 
						|
            }
 | 
						|
            if (!branchExists) {
 | 
						|
              return;
 | 
						|
            }
 | 
						|
            const cherryPickCmd = `/cherry-pick release-${milestone}`;
 | 
						|
            console.log(`Adding comment: ${cherryPickCmd}`);
 | 
						|
            await github.rest.issues.createComment({
 | 
						|
              owner: context.repo.owner,
 | 
						|
              repo: context.repo.repo,
 | 
						|
              issue_number: pr.number,
 | 
						|
              body: cherryPickCmd
 | 
						|
            }); |