Skip to content

Commit 9f37986

Browse files
committed
feat(ci): Add workflow to enforce Datadog merge queue
1 parent f215026 commit 9f37986

3 files changed

Lines changed: 64 additions & 0 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
issuer: https://token.actions.githubusercontent.com
2+
3+
subject: repo:DataDog/dd-trace-java:ref:refs/heads/master
4+
5+
claim_pattern:
6+
event_name: enqueued
7+
job_workflow_ref: DataDog/dd-trace-java/.github/workflows/enforce-datadog-merge-queue.yaml@refs/heads/master
8+
9+
permissions:
10+
issues: write
11+
pull_requests: write

.github/workflows/README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,19 @@ _Action:_ Check the pull request did not introduce unexpected label.
3636

3737
_Recovery:_ Update the pull request or add a comment to trigger the action again.
3838

39+
### enforce-datadog-merge-queue [🔗](enforce-datadog-merge-queue.yaml)
40+
41+
_Trigger:_ When creating or updating a pull request, or when a pull request is added to GitHub merge queue.
42+
43+
_Actions:_
44+
45+
* Pass the `Merge queue check` status check on pull requests so they remain in a mergeable state,
46+
* When a pull request is enqueued in GitHub merge queue, post a `/merge` comment to trigger the Datadog merge queue,
47+
* Fail the `Merge queue check` status check on merge groups to prevent GitHub from merging directly.
48+
49+
_Recovery:_ The workflow is expected to fail to block GitHub merge queue.
50+
This redirects GitHub's "Merge when ready" button to the Datadog merge queue system.
51+
3952
### create-release-branch [🔗](create-release-branch.yaml)
4053

4154
_Trigger:_ When a git tag matching the pattern "vM.N.0" is pushed (e.g. for a minor release).
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Enforce Datadog Merge Queue
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened, enqueued]
6+
branches:
7+
- master
8+
merge_group:
9+
10+
jobs:
11+
enforce_datadog_merge_queue:
12+
name: Merge queue check
13+
runs-on: ubuntu-latest
14+
permissions:
15+
id-token: write # required for OIDC token federation
16+
steps:
17+
- name: Block GitHub merge queue
18+
if: github.event_name == 'merge_group'
19+
run: |
20+
echo "Merge is handled by the Datadog merge queue system. Use the /merge command to enqueue your PR for merging."
21+
exit 1
22+
- name: Get OIDC token
23+
if: github.event.action == 'enqueued'
24+
uses: DataDog/dd-octo-sts-action@acaa02eee7e3bb0839e4272dacb37b8f3b58ba80 # v1.0.3
25+
id: octo-sts
26+
with:
27+
scope: DataDog/dd-trace-java
28+
policy: self.enforce-datadog-merge-queue.comment-pr
29+
- name: Post /merge comment
30+
if: github.event.action == 'enqueued'
31+
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # 8.0.0
32+
with:
33+
github-token: ${{ steps.octo-sts.outputs.token }}
34+
script: |
35+
await github.rest.issues.createComment({
36+
owner: context.repo.owner,
37+
repo: context.repo.repo,
38+
issue_number: context.payload.pull_request.number,
39+
body: '/merge'
40+
});

0 commit comments

Comments
 (0)