[FIX]stock_ux: fix when cron active constrain #119
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # ⚠️ DO NOT EDIT THIS FILE, IT IS GENERATED BY COPIER ⚠️ | |
| # Changes here will be lost on a future update. | |
| # See: https://github.com/ingadhoc/addons-repo-template | |
| name: Delete PR branch from fork and base repo | |
| on: | |
| pull_request: | |
| types: [closed] | |
| pull_request_target: | |
| types: [closed] | |
| # Trigger manual | |
| workflow_dispatch: | |
| inputs: | |
| pull_request_number: | |
| description: 'Pull Request number to delete the branch' | |
| required: true | |
| type: number | |
| jobs: | |
| delete-branch: | |
| runs-on: ubuntu-latest | |
| if: > | |
| github.repository_owner == 'ingadhoc' && | |
| ( | |
| (github.event_name == 'pull_request' && github.event.pull_request.merged == false && github.event.sender.login == 'roboadhoc') || | |
| (github.event_name == 'pull_request_target' && github.event.pull_request.merged == false && github.event.sender.login == 'roboadhoc') || | |
| (github.event_name == 'workflow_dispatch') || | |
| (github.event_name == 'deployment_status' && github.event.deployment_status.state == 'success') | |
| ) | |
| steps: | |
| - name: Delete branch from base and fork repos | |
| uses: actions/github-script@v6 | |
| id: pr_data_fetcher | |
| with: | |
| script: | | |
| // Get PR information | |
| core.info('Fetching PR data and validating conditions...'); | |
| // Debug info | |
| const eventName = context.eventName; | |
| core.info(`El nombre del evento es: ${eventName}`); | |
| core.info(JSON.stringify(context, null, 2)) | |
| // End Debug info | |
| let repoOwner = context.repo.owner; | |
| let repoName = context.repo.repo; | |
| let pullRequest; | |
| if (context.eventName === 'workflow_dispatch' || context.eventName === 'deployment_status') { | |
| let prNumber = 0; | |
| if (context.eventName === 'workflow_dispatch') { | |
| prNumber = context.payload.inputs.pull_request_number; | |
| core.info(`Manual trigger for PR #${prNumber}`); | |
| } | |
| if (context.eventName === 'deployment_status') { | |
| prNumber = context.payload.deployment_status.description.split("#")[1].split(" ")[0]; | |
| core.info(`deployment_status trigger for PR #${prNumber}`); | |
| } | |
| // Fetch the PR data using the number | |
| pullRequest = (await github.rest.pulls.get({ | |
| owner: repoOwner, | |
| repo: repoName, | |
| pull_number: prNumber, | |
| })).data; | |
| core.info(JSON.stringify(pullRequest, null, 2)) | |
| if (pullRequest.merged === true) { | |
| core.info(`PR #${prNumber} was merged. No action needed.`); | |
| core.setOutput('validation_passed', 'false'); | |
| return; | |
| } | |
| // Fetch the PR timeline to find the 'closed' event | |
| const timeline = await github.rest.issues.listEventsForTimeline({ | |
| owner: repoOwner, | |
| repo: repoName, | |
| issue_number: prNumber, | |
| }); | |
| // Find the 'closed' event in the timeline | |
| const closeEvent = timeline.data.find(event => event.event === 'closed'); | |
| // Get the user who closed the PR from the event | |
| const closedByLogin = closeEvent && closeEvent.actor ? closeEvent.actor.login : null; | |
| if (closedByLogin !== 'roboadhoc') { | |
| core.info(`PR #${prNumber} was not closed by 'roboadhoc' (${closedByLogin}). No action needed.`); | |
| core.setOutput('validation_passed', 'false'); | |
| return; | |
| } | |
| } else if (['pull_request', 'pull_request_target'].includes(context.eventName)) { | |
| pullRequest = context.payload.pull_request; | |
| } else { | |
| core.setOutput('validation_passed', 'false'); | |
| core.error(`Unsupported event type: ${context.eventName}`); | |
| return; | |
| } | |
| // Set outputs for subsequent steps | |
| core.setOutput('validation_passed', 'true'); | |
| core.setOutput('base_repo_owner', repoOwner); | |
| core.setOutput('base_repo_name', repoName); | |
| core.setOutput('base_branch_name', pullRequest.head.ref); | |
| core.setOutput('head_repo_full_name', pullRequest.head.repo.full_name); | |
| core.setOutput('head_repo_owner', pullRequest.head.repo.owner.login); | |
| core.setOutput('head_repo_name', pullRequest.head.repo.name); | |
| core.setOutput('is_fork', pullRequest.head.repo.full_name !== context.repo.owner + '/' + context.repo.repo); | |
| - name: Delete branch from the base repository | |
| uses: actions/github-script@v6 | |
| if: ${{ steps.pr_data_fetcher.outputs.validation_passed == 'true' }} | |
| with: | |
| github-token: ${{ github.token }} | |
| script: | | |
| const baseBranchName = `${{ steps.pr_data_fetcher.outputs.base_branch_name }}`; | |
| const baseRepoOwner = `${{ steps.pr_data_fetcher.outputs.base_repo_owner }}`; | |
| const baseRepoName = `${{ steps.pr_data_fetcher.outputs.base_repo_name }}`; | |
| try { | |
| core.info(`Attempting to delete branch '${baseBranchName}' from base repo '${baseRepoOwner}/${baseRepoName}'`); | |
| await github.rest.git.deleteRef({ | |
| owner: baseRepoOwner, | |
| repo: baseRepoName, | |
| ref: `heads/${baseBranchName}`, | |
| }); | |
| core.info(`Branch '${baseBranchName}' deleted from base repo successfully.`); | |
| } catch (error) { | |
| if (error.status === 422) { | |
| core.info(`Branch '${baseBranchName}' in base repo already deleted. No action needed.`); | |
| } else { | |
| console.error(`Error deleting branch '${baseBranchName}' from base repo: ${error.message}`); | |
| } | |
| } | |
| - name: Delete branch from the fork repository (adhoc-dev) | |
| if: ${{ steps.pr_data_fetcher.outputs.validation_passed == 'true' }} | |
| uses: actions/github-script@v6 | |
| with: | |
| github-token: ${{ secrets.EXTERNAL_REPO_TOKEN_CLEANER_ADHOC_DEV || github.token }} | |
| script: | | |
| const baseBranchName = `${{ steps.pr_data_fetcher.outputs.base_branch_name }}`; | |
| const headRepoOwner = 'adhoc-dev'; | |
| const headRepoName = `${{ steps.pr_data_fetcher.outputs.head_repo_name }}`; | |
| try { | |
| core.info(`PR comes from a fork. Attempting to delete branch from fork repo '${headRepoOwner}/${headRepoName}'`); | |
| await github.rest.git.deleteRef({ | |
| owner: headRepoOwner, | |
| repo: headRepoName, | |
| ref: `heads/${baseBranchName}`, | |
| }); | |
| core.info(`Branch '${baseBranchName}' deleted from fork repo successfully.`); | |
| } catch (error) { | |
| if (error.status === 422) { | |
| core.info(`Branch '${baseBranchName}' in fork repo already deleted. No action needed.`); | |
| } else { | |
| console.error(`Error deleting branch '${baseBranchName}' from fork repo: ${error.message}`); | |
| } | |
| } |