diff --git a/.github/actions/test-robot-check/action.yml b/.github/actions/test-robot-check/action.yml deleted file mode 100644 index 98a5c0f..0000000 --- a/.github/actions/test-robot-check/action.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: "Robot Test Check Labels" -description: "Fails if test-robot-needed is present but test-robot-done is not." - -inputs: - label-test-robot-needed: - description: 'Label indicating the PR needs robot testing' - required: false - default: 'test-robot-needed' - label-test-robot-done: - description: 'Label indicating the PR has been robot-tested' - required: false - default: 'test-robot-done' - token: - description: 'GitHub token or PAT used to post comments (defaults to github.token)' - required: false - default: '' - -runs: - using: "composite" - steps: - - name: Check robot test labels - uses: actions/github-script@v7 - with: - github-token: ${{ inputs.token || github.token }} - script: | - const labelNeeded = '${{ inputs.label-test-robot-needed }}'; - const labelDone = '${{ inputs.label-test-robot-done }}'; - const { number: pr, head: { sha } } = context.payload.pull_request; - const repo = context.repo; - - const postComment = async (body) => { - try { - await github.rest.issues.createComment({ ...repo, issue_number: pr, body }); - } catch (err) { - core.warning(`Could not post comment: ${err.message}`); - } - }; - - const { data: labels } = await github.rest.issues.listLabelsOnIssue({ ...repo, issue_number: pr }); - const has = new Set(labels.map(l => l.name)); - - if (!has.has(labelNeeded)) { - core.info(`\`${labelNeeded}\` not present. No robot testing required.`); - return; - } - - if (has.has(labelDone)) { - core.info(`\`${labelDone}\` present. Robot testing confirmed.`); - return; - } - - const shaLine = sha ? `\n\n**Commit:** \`${sha}\`` : ''; - await postComment( - `### ❌ Robot Testing Required\n\n` + - `\`${labelNeeded}\` is present but \`${labelDone}\` has not been added. This PR cannot be merged until robot testing is complete.${shaLine}\n\n` + - `> [!IMPORTANT]\n> Add \`${labelDone}\` once robot testing is complete.` - ); - core.setFailed(`\`${labelNeeded}\` is present but \`${labelDone}\` has not been added. Robot testing must be completed before merging.`); diff --git a/.github/actions/test-robot-label/action.yml b/.github/actions/test-robot-label/action.yml deleted file mode 100644 index 09dd558..0000000 --- a/.github/actions/test-robot-label/action.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: "Robot Test Label" -description: "When the test-robot-done label is added, posts a comment confirming the robot test status." - -inputs: - label-test-robot-needed: - description: 'Label indicating the PR needs robot testing' - required: false - default: 'test-robot-needed' - label-test-robot-done: - description: 'Label indicating the PR has been robot-tested' - required: false - default: 'test-robot-done' - token: - description: 'GitHub token or PAT used to post comments (defaults to github.token)' - required: false - default: '' - -runs: - using: "composite" - steps: - - name: Comment on label added - uses: actions/github-script@v7 - with: - github-token: ${{ inputs.token || github.token }} - script: | - const labelDone = '${{ inputs.label-test-robot-done }}'; - const labelNeeded = '${{ inputs.label-test-robot-needed }}'; - const { number: pr, head: { sha } } = context.payload.pull_request; - const repo = context.repo; - - const postComment = async (body) => { - try { - await github.rest.issues.createComment({ ...repo, issue_number: pr, body }); - } catch (err) { - core.warning(`Could not post comment: ${err.message}`); - } - }; - - const { data: labels } = await github.rest.issues.listLabelsOnIssue({ ...repo, issue_number: pr }); - const has = new Set(labels.map(l => l.name)); - const shaLine = sha ? `\n\n**Commit:** \`${sha}\`` : ''; - - if (!has.has(labelDone)) { - if (has.has(labelNeeded)) { - core.warning(`\`${labelDone}\` not found. \`${labelNeeded}\` is present but testing is not confirmed.`); - await postComment( - `### ⚠️ Robot Testing Incomplete\n\n` + - `\`${labelNeeded}\` is present but \`${labelDone}\` has not been added yet.${shaLine}\n\n` + - `> [!WARNING]\n> Add \`${labelDone}\` once robot testing is complete.` - ); - } else { - core.info(`\`${labelDone}\` not present. Nothing to do.`); - } - return; - } - - core.info(`\`${labelDone}\` found. Posting confirmation comment.`); - await postComment( - `### ✅ Robot Test Complete\n\n` + - `\`${labelDone}\` has been added. Robot testing has been confirmed for this PR.${shaLine}` - ); diff --git a/.github/actions/test-robot-unlabel/action.yml b/.github/actions/test-robot-unlabel/action.yml deleted file mode 100644 index c975e7a..0000000 --- a/.github/actions/test-robot-unlabel/action.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: "Robot Test Unlabel" -description: "On new commits, removes the test-robot-done label if present and posts a comment." - -inputs: - label-test-robot-needed: - description: 'Label indicating the PR needs robot testing' - required: false - default: 'test-robot-needed' - label-test-robot-done: - description: 'Label indicating the PR has been robot-tested' - required: false - default: 'test-robot-done' - token: - description: 'GitHub token or PAT used to remove labels and post comments (defaults to github.token)' - required: false - default: '' - -runs: - using: "composite" - steps: - - name: Remove label and comment - uses: actions/github-script@v7 - with: - github-token: ${{ inputs.token || github.token }} - script: | - const labelDone = '${{ inputs.label-test-robot-done }}'; - const labelNeeded = '${{ inputs.label-test-robot-needed }}'; - const { number: pr, head: { sha } } = context.payload.pull_request; - const repo = context.repo; - - const postComment = async (body) => { - try { - await github.rest.issues.createComment({ ...repo, issue_number: pr, body }); - } catch (err) { - core.warning(`Could not post comment: ${err.message}`); - } - }; - - const { data: labels } = await github.rest.issues.listLabelsOnIssue({ ...repo, issue_number: pr }); - const has = new Set(labels.map(l => l.name)); - - if (!has.has(labelDone)) { - core.info(`\`${labelDone}\` not present. Nothing to do.`); - return; - } - - await github.rest.issues.removeLabel({ ...repo, issue_number: pr, name: labelDone }); - core.info(`\`${labelDone}\` removed.`); - - const shaLine = sha ? `\n\n**Commit:** \`${sha}\`` : ''; - const warning = !has.has(labelNeeded) - ? `\n\n> [!WARNING]\n> \`${labelDone}\` was removed but \`${labelNeeded}\` was not present. This PR may not be queued for robot testing.` - : ''; - - await postComment( - `### 🔄 Robot Test Label Removed\n\n` + - `New commits were pushed. \`${labelDone}\` has been removed and robot testing must be repeated.${shaLine}${warning}` - ); diff --git a/.github/workflows/all-green.yml b/.github/workflows/all-green.yml index b3f0d62..1293b16 100644 --- a/.github/workflows/all-green.yml +++ b/.github/workflows/all-green.yml @@ -11,4 +11,4 @@ jobs: - uses: actions/checkout@v4 - name: All Green - uses: getdevopspro/github-actions/all-green@v6.1.1 + uses: getdevopspro/github-actions/all-green@v6.2.4 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3a650cf..b0d6785 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,7 +10,7 @@ on: jobs: build: name: Build - uses: getdevopspro/github-actions/.github/workflows/build.yml@v6.1.1 + uses: getdevopspro/github-actions/.github/workflows/build.yml@v6.2.4 with: version-package: package.json version-package-lock: package-lock.json diff --git a/.github/workflows/pull-request-label.yml b/.github/workflows/pull-request-label.yml index fe4b021..1d41a0e 100644 --- a/.github/workflows/pull-request-label.yml +++ b/.github/workflows/pull-request-label.yml @@ -5,7 +5,7 @@ on: types: [labeled] concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-${{ github.event.label.name }} cancel-in-progress: true permissions: @@ -21,4 +21,4 @@ jobs: label-test-robot-done: test-robot-done label-test-robot-needed: test-robot-needed secrets: - token: ${{ secrets.BOT_PR_TOKEN }} + token: ${{ secrets.BOT_REPO_TOKEN }} diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index b628da6..7993099 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -5,7 +5,7 @@ on: types: [opened, synchronize, reopened] concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true permissions: @@ -22,7 +22,7 @@ jobs: label-test-robot-done: test-robot-done label-test-robot-needed: test-robot-needed secrets: - token: ${{ secrets.BOT_PR_TOKEN }} + token: ${{ secrets.BOT_REPO_TOKEN }} build: needs: test-robot-unlabel diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b6b56e4..516bb67 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,13 +24,14 @@ jobs: promote: name: Job needs: build - uses: getdevopspro/github-actions/.github/workflows/promote.yml@v6.1.1 + uses: getdevopspro/github-actions/.github/workflows/promote.yml@v6.2.4 secrets: # To bypass ruleset enforcing checks - checkout-token: ${{ secrets.BOT_RELEASE_CHECKOUT_TOKEN }} + checkout-token: ${{ secrets.BOT_REPO_TOKEN }} with: version-package: package.json - git-add-files: package.json + version-package-lock: package-lock.json + git-add-files: package.json package-lock.json git-user-name: getdevopspro-cibot git-user-email: 203600057+getdevopspro-cibot@users.noreply.github.com image-digests: ${{ needs.build.outputs.image-digests }} diff --git a/.github/workflows/test-robot-check.yml b/.github/workflows/test-robot-check.yml index 3f61168..2610769 100644 --- a/.github/workflows/test-robot-check.yml +++ b/.github/workflows/test-robot-check.yml @@ -15,7 +15,7 @@ on: default: 'test-robot-needed' secrets: token: - description: 'PAT used to post comments' + description: 'GitHub token or PAT' required: false permissions: @@ -31,8 +31,9 @@ jobs: - uses: actions/checkout@v4 - name: Robot Test Check - uses: ./.github/actions/test-robot-check + uses: getdevopspro/github-actions/test/check@v6.2.4 with: - label-test-robot-done: ${{ inputs.label-test-robot-done }} - label-test-robot-needed: ${{ inputs.label-test-robot-needed }} + label-done: ${{ inputs.label-test-robot-done }} + label-needed: ${{ inputs.label-test-robot-needed }} + test-name: Robot token: ${{ secrets.token }} diff --git a/.github/workflows/test-robot-label.yml b/.github/workflows/test-robot-label.yml index 72cf479..5252f18 100644 --- a/.github/workflows/test-robot-label.yml +++ b/.github/workflows/test-robot-label.yml @@ -15,7 +15,7 @@ on: default: 'test-robot-needed' secrets: token: - description: 'PAT used to post comments' + description: 'GitHub token or PAT' required: false permissions: @@ -33,14 +33,15 @@ jobs: - uses: actions/checkout@v4 - name: Robot Test Label - uses: ./.github/actions/test-robot-label + uses: getdevopspro/github-actions/test/label@v6.2.4 with: - label-test-robot-done: ${{ inputs.label-test-robot-done }} - label-test-robot-needed: ${{ inputs.label-test-robot-needed }} + label-done: ${{ inputs.label-test-robot-done }} + label-needed: ${{ inputs.label-test-robot-needed }} + test-name: Robot token: ${{ secrets.token }} - name: Rerun pull-request workflow - uses: getdevopspro/github-actions/pr/checks-rerun@v6.1.1 + uses: getdevopspro/github-actions/pr/checks-rerun@v6.2.4 with: workflow-id: pull-request.yml - github-token: ${{ secrets.token }} + token: ${{ secrets.token }} diff --git a/.github/workflows/test-robot-unlabel.yml b/.github/workflows/test-robot-unlabel.yml index 1f8c8c2..9101b32 100644 --- a/.github/workflows/test-robot-unlabel.yml +++ b/.github/workflows/test-robot-unlabel.yml @@ -15,7 +15,7 @@ on: default: 'test-robot-needed' secrets: token: - description: 'PAT used to post comments' + description: 'GitHub token or PAT' required: false permissions: @@ -26,13 +26,14 @@ jobs: test-robot-unlabel: if: contains(github.event.pull_request.labels.*.name, inputs.label-test-robot-done) name: Robot Test Unlabel - runs-on: ubuntu-latest + runs-on: ubuntu-latest| steps: - uses: actions/checkout@v4 - name: Robot Test Unlabel - uses: ./.github/actions/test-robot-unlabel + uses: getdevopspro/github-actions/test/unlabel@v6.2.4 with: - label-test-robot-done: ${{ inputs.label-test-robot-done }} - label-test-robot-needed: ${{ inputs.label-test-robot-needed }} + label-done: ${{ inputs.label-test-robot-done }} + label-needed: ${{ inputs.label-test-robot-needed }} + test-name: Robot token: ${{ secrets.token }} diff --git a/package-lock.json b/package-lock.json index 191b7ff..6fd423f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "github-actions-test", - "version": "0.0.8", + "version": "0.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "github-actions-test", - "version": "0.0.8", + "version": "0.1.1", "dependencies": { "dotenv": "^16.3.1", "express": "^4.18.2" @@ -1701,8 +1701,8 @@ } }, "node_modules/chai": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.3.tgz", "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT",