forked from linode/linodego
-
Notifications
You must be signed in to change notification settings - Fork 0
99 lines (93 loc) · 3.22 KB
/
integration_tests_pr.yml
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
on:
pull_request:
workflow_dispatch:
inputs:
sha:
description: 'The hash value of the commit.'
required: true
module:
description: 'The module to be tested.'
required: false
pull_request_number:
description: 'The number of the PR.'
required: false
name: Integration tests on PR
jobs:
integration-fork:
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch' && inputs.sha != ''
steps:
- uses: actions/setup-go@v4
with:
go-version: 'stable'
- run: go version
- uses: actions-ecosystem/action-regex-match@v2
id: disallowed-char-check
with:
text: ${{ inputs.module }}
regex: '[^a-z0-9_\/]'
flags: gi
# Check out merge commit
- name: Checkout PR
uses: actions/checkout@v4
with:
ref: ${{ inputs.sha }}
- run: make ARGS="-run ${{ inputs.module }}" fixtures
if: ${{ inputs.module != '' && steps.disallowed-char-check.outputs.match == '' }}
env:
LINODE_TOKEN: ${{ secrets.DX_LINODE_TOKEN }}
- run: make fixtures
if: ${{ inputs.module == '' }}
env:
LINODE_TOKEN: ${{ secrets.DX_LINODE_TOKEN }}
- name: Get the hash value of the latest commit from the PR branch
uses: octokit/[email protected]
id: commit-hash
if: ${{ inputs.pull_request_number != '' }}
with:
query: |
query PRHeadCommitHash($owner: String!, $repo: String!, $pr_num: Int!) {
repository(owner:$owner, name:$repo) {
pullRequest(number: $pr_num) {
headRef {
target {
... on Commit {
oid
}
}
}
}
}
}
owner: ${{ github.event.repository.owner.login }}
repo: ${{ github.event.repository.name }}
pr_num: ${{ fromJSON(inputs.pull_request_number) }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/github-script@v6
id: update-check-run
if: ${{ inputs.pull_request_number != '' && fromJson(steps.commit-hash.outputs.data).repository.pullRequest.headRef.target.oid == inputs.sha }}
env:
number: ${{ inputs.pull_request_number }}
job: ${{ github.job }}
conclusion: ${{ job.status }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { data: pull } = await github.rest.pulls.get({
...context.repo,
pull_number: process.env.number
});
const ref = pull.head.sha;
const { data: checks } = await github.rest.checks.listForRef({
...context.repo,
ref
});
const check = checks.check_runs.filter(c => c.name === process.env.job);
const { data: result } = await github.rest.checks.update({
...context.repo,
check_run_id: check[0].id,
status: 'completed',
conclusion: process.env.conclusion
});
return result;