mirror of https://github.com/asterisk/asterisk
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							125 lines
						
					
					
						
							4.5 KiB
						
					
					
				
			
		
		
	
	
							125 lines
						
					
					
						
							4.5 KiB
						
					
					
				| name: PRCPCheck
 | |
| run-name: "PR ${{ github.event.number }} CherryPickTest"
 | |
| on:
 | |
|   pull_request_target:
 | |
|     types: [ labeled ]
 | |
| 
 | |
| concurrency:
 | |
|   group: ${{ github.workflow }}-${{ github.event.label.name }}-${{ github.event.number }}
 | |
|   cancel-in-progress: true
 | |
| 
 | |
| env:
 | |
|   PR_NUMBER: ${{ github.event.number }}
 | |
| 
 | |
| jobs:
 | |
|   Setup:
 | |
|     if: ${{ github.event.label.name == vars.CHERRY_PICK_TEST_LABEL }}
 | |
|     name: Setup
 | |
|     runs-on: ubuntu-latest
 | |
|     outputs:
 | |
|       branches:           ${{ steps.getbranches.outputs.branches }}
 | |
|       branch_count:       ${{ steps.getbranches.outputs.branch_count }}
 | |
|       testsuite_test_pr:  ${{ steps.testsuitepr.outputs.testsuite_test_pr }}
 | |
|     steps:
 | |
|       - name: Remove Trigger Label, Add InProgress Label
 | |
|         env:
 | |
|           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | |
|         run: |
 | |
|           gh pr edit --repo ${{ github.repository }} \
 | |
|             --remove-label ${{ vars.CHERRY_PICK_TEST_LABEL }} \
 | |
|             --remove-label ${{ vars.CHERRY_PICK_CHECKS_PASSED_LABEL }} \
 | |
|             --remove-label ${{ vars.CHERRY_PICK_CHECKS_FAILED_LABEL }} \
 | |
|             --remove-label ${{ vars.CHERRY_PICK_TESTING_IN_PROGRESS }} \
 | |
|             $PR_NUMBER || :          
 | |
| 
 | |
|       - name: Get cherry-pick branches
 | |
|         uses: asterisk/asterisk-ci-actions/GetCherryPickBranchesFromPR@main
 | |
|         id: getbranches
 | |
|         with:
 | |
|           repo:                    ${{ github.repository }}
 | |
|           pr_number:               ${{ env.PR_NUMBER }}
 | |
|           cherry_pick_regex:       ${{ vars.CHERRY_PICK_REGEX }}
 | |
|           github_token:            ${{ secrets.GITHUB_TOKEN }}
 | |
| 
 | |
|       - name: Check Branch Count
 | |
|         if: ${{ steps.getbranches.outputs.branch_count > 0 }}
 | |
|         env:
 | |
|           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | |
|         run: |
 | |
|           gh pr edit --repo ${{ github.repository }} \
 | |
|           --add-label ${{ vars.CHERRY_PICK_TESTING_IN_PROGRESS }} \
 | |
|           $PR_NUMBER || :          
 | |
| 
 | |
|       - name: GetTestsuitePR
 | |
|         id: testsuitepr
 | |
|         uses: asterisk/asterisk-ci-actions/GetTestsuitePRFromAsteriskPR@main
 | |
|         with:
 | |
|           repo:                            ${{ github.repository }}
 | |
|           pr_number:                       ${{ github.event.number }}
 | |
|           testsuite_test_pr_regex:         ${{ vars.TESTSUITE_TEST_PR_REGEX }}
 | |
|           testsuite_test_auto_merge_regex: ${{ vars.TESTSUITE_TEST_AUTO_MERGE_REGEX }}
 | |
|           github_token:                    ${{ secrets.GITHUB_TOKEN }}
 | |
| 
 | |
|       - name: CherryPick
 | |
|         uses: asterisk/asterisk-ci-actions/CherryPick@main
 | |
|         with:
 | |
|           repo:         ${{ github.repository }}
 | |
|           pr_number:    ${{ github.event.number }}
 | |
|           branches:     ${{ steps.getbranches.outputs.branches }}
 | |
|           push:         false
 | |
|           github_token: ${{ secrets.GITHUB_TOKEN }}
 | |
|           debug:        false
 | |
| 
 | |
|   Check:
 | |
|     needs: [Setup]
 | |
|     if: ${{ needs.Setup.outputs.branch_count > 0 && ( success() ) }}
 | |
|     strategy:
 | |
|       fail-fast: false
 | |
|       matrix:
 | |
|         branch: ${{ fromJSON(needs.Setup.outputs.branches) }}
 | |
|     uses: asterisk/asterisk-ci-actions/.github/workflows/AsteriskUnitGateTest.yml@main
 | |
|     with:
 | |
|       test_type:         cherry-pick
 | |
|       asterisk_repo:     ${{ github.repository }}
 | |
|       pr_number:         ${{ github.event.number }}
 | |
|       base_branch:       ${{ matrix.branch }}
 | |
|       is_cherry_pick:    true
 | |
|       build_options:     ${{ vars.BUILD_OPTIONS }}
 | |
|       unittest_command:  ${{ vars.UNITTEST_COMMAND }}
 | |
|       testsuite_repo:    ${{ vars.TESTSUITE_REPO }}
 | |
|       testsuite_test_pr: ${{ needs.Setup.outputs.testsuite_test_pr }}
 | |
|       gatetest_list:     ${{ vars.GATETEST_LIST }}
 | |
|       gatetest_commands: ${{ vars.GATETEST_COMMANDS }}
 | |
|     secrets:
 | |
|       TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | |
| 
 | |
|   Cleanup:
 | |
|     if: ${{ success() || failure() }}
 | |
|     runs-on: ubuntu-latest
 | |
|     needs: [Setup,Check]
 | |
|     steps:
 | |
|       - name: Check status
 | |
|         env:
 | |
|           GH_TOKEN:     ${{ secrets.GITHUB_TOKEN }}
 | |
|           RESULT_UNIT:  ${{ needs.Check.result }}
 | |
|           TESTS_PASSED: ${{ vars.CHERRY_PICK_CHECKS_PASSED_LABEL }}
 | |
|           TESTS_FAILED: ${{ vars.CHERRY_PICK_CHECKS_FAILED_LABEL }}
 | |
|         run: |
 | |
|           declare -i rc=0
 | |
|           case $RESULT_UNIT in
 | |
|             success)
 | |
|               ;;
 | |
|             skipped)
 | |
|               rc+=1
 | |
|               ;;
 | |
|             *)
 | |
|               rc+=1
 | |
|           esac
 | |
|           [ $rc -gt 0 ] && label=$TESTS_FAILED || label=$TESTS_PASSED
 | |
|           gh pr edit --repo ${{ github.repository }} \
 | |
|             --remove-label ${{ vars.CHERRY_PICK_TESTING_IN_PROGRESS }} \
 | |
|             --add-label $label \
 | |
|               $PR_NUMBER || :
 | |
|           exit 0          
 | |
| 
 |