-
Notifications
You must be signed in to change notification settings - Fork 586
113 lines (103 loc) · 3.53 KB
/
dco_workflow_complete.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
name: DCO Workflow Complete
on:
workflow_run:
workflows: ["DCO test"]
types: [completed]
env:
OPP_PRODUCTION_TYPE: "k8s"
jobs:
pr:
runs-on: ubuntu-latest
steps:
- name: 'Download artifact'
uses: actions/github-script@v6
with:
script: |
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{github.event.workflow_run.id }},
});
var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
return artifact.name == "pr"
})[0];
var download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
var fs = require('fs');
fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(download.data));
- run: unzip pr.zip
- name: 'PR Number'
id: pr-number
run: |
PR=$(tr -dc [0-9] <./NR)
[ -z "$PR" ] && echo "Invalid PR number" && exit 1
echo "pr=${PR}" >> $GITHUB_OUTPUT
- uses: actions/github-script@v6
id: pr-labels
continue-on-error: true
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const labels = await github.rest.issues.listLabelsOnIssue({
issue_number: ${{ steps.pr-number.outputs.pr }},
owner: context.repo.owner,
repo: context.repo.repo
})
return labels.data
outputs:
pr: "${{ steps.pr-number.outputs.pr }}"
on-success:
runs-on: ubuntu-latest
if: github.event.workflow_run.conclusion == 'success'
needs: [pr]
steps:
- name: "Removing dco-failed label"
if: needs.pr.outputs.pr != '0'
uses: actions/github-script@v6
continue-on-error: true
env:
PR: "${{ needs.pr.outputs.pr }}"
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.rest.issues.removeLabel({
issue_number: process.env.PR,
owner: context.repo.owner,
repo: context.repo.repo,
name: 'dco-failed'
})
# - uses: actions/github-script@v6
# if: |
# (!contains(fromJson(steps.pr-labels.outputs.result).*.name, 'do-not-merge/work-in-progress')) &&
# (!contains(fromJson(steps.pr-labels.outputs.result).*.name, 'do-not-merge/hold'))
# continue-on-error: true
# with:
# github-token: ${{ secrets.FRAMEWORK_MERGE }}
# script: |
# github.rest.issues.createComment({
# issue_number: ${{ needs.pr.outputs.pr }},
# owner: context.repo.owner,
# repo: context.repo.repo,
# body: '/merge possible'
# })
on-failure:
runs-on: ubuntu-latest
if: github.event.workflow_run.conclusion == 'failure'
needs: [pr]
steps:
- name: "Setting dco-failed label"
uses: actions/github-script@v6
continue-on-error: true
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.rest.issues.addLabels({
issue_number: ${{ needs.pr.outputs.pr }},
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['dco-failed']
})