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