-
Notifications
You must be signed in to change notification settings - Fork 2.4k
111 lines (102 loc) · 4.02 KB
/
pr-labeler.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
100
101
102
103
104
105
106
107
108
109
110
111
name: "PR labeler"
on:
pull_request_target:
types:
- opened
- edited
- reopened
- synchronize
- ready_for_review
branches:
- master
- develop
- 'release/**'
- 'lse-release/**'
- 'ls-release/**'
env:
ACTIONS_STEP_DEBUG: '${{ secrets.ACTIONS_STEP_DEBUG }}'
jobs:
autolabel:
name: "PR label validator"
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: hmarr/[email protected]
- name: "Validate PR's title"
uses: thehanimo/[email protected]
with:
GITHUB_TOKEN: ${{ github.token }}
pass_on_octokit_error: false
configuration_path: ".github/pr-title-checker-config.json"
- name: "Set PR's label based on title"
uses: release-drafter/[email protected]
with:
disable-releaser: true
config-name: autolabeler.yml
env:
GITHUB_TOKEN: ${{ github.token }}
release_field:
name: "Set Aha! Releases field"
runs-on: ubuntu-latest
steps:
- uses: hmarr/[email protected]
- name: Set field
shell: bash
env:
COMMIT_MESSAGE: ${{ github.event.pull_request.title }}
AHA_SERVER: "https://labelstudio.aha.io"
AHA_TOKEN: "${{ secrets.AHA_TOKEN }}"
AHA_RELEASES_FIELD: releases
TAGS: '["oss"]'
run: |
set -euo pipefail ${ACTIONS_STEP_DEBUG:+-x}
regex="([a-zA-Z]+):[[:space:]]*([a-zA-Z0-9-]+)?:"
if [[ $COMMIT_MESSAGE =~ $regex ]]; then
export TICKET="${BASH_REMATCH[2]}"
if curl -fsSL \
--request GET \
--url "${AHA_SERVER}/api/v1/features/${TICKET}" \
--header "Authorization: Bearer ${AHA_TOKEN}" \
--header 'Accept: application/json'; then
cur_tags=$(curl -sSL \
--request GET \
--url "${AHA_SERVER}/api/v1/features/${TICKET}" \
--header "Authorization: Bearer ${AHA_TOKEN}" \
--header "Content-Type: application/json" \
--header 'Accept: application/json' |
jq -ecr '[ .feature.custom_fields[] | select(.key=="releases") | .value ]')
echo "Current tags: ${cur_tags}"
new_tags=$(jq -ecr ". += ${TAGS} | flatten | unique" <<< $cur_tags)
echo "New tags: ${new_tags}"
curl -sSL \
--request PUT \
--url "${AHA_SERVER}/api/v1/features/${TICKET}" \
--data "{\"feature\":{\"custom_fields\":{\"releases\":${new_tags}}}}" \
--header "Authorization: Bearer ${AHA_TOKEN}" \
--header "Content-Type: application/json" \
--header 'Accept: application/json'
elif curl -fsSL \
--request GET \
--url "${AHA_SERVER}/api/v1/requirements/${TICKET}" \
--header "Authorization: Bearer ${AHA_TOKEN}" \
--header 'Accept: application/json'; then
cur_tags=$(curl -sSL \
--request GET \
--url "${AHA_SERVER}/api/v1/requirements/${TICKET}" \
--header "Authorization: Bearer ${AHA_TOKEN}" \
--header "Content-Type: application/json" \
--header 'Accept: application/json' |
jq -ecr '[ .requirement.custom_fields[] | select(.key=="releases") | .value ]')
echo "Current tags: ${cur_tags}"
new_tags=$(jq -ecr ". += ${TAGS} | flatten | unique" <<< $cur_tags)
echo "New tags: ${new_tags}"
curl -sSL \
--request PUT \
--url "${AHA_SERVER}/api/v1/requirements/${TICKET}" \
--data "{\"requirement\":{\"custom_fields\":{\"releases\":${new_tags}}}}" \
--header "Authorization: Bearer ${AHA_TOKEN}" \
--header "Content-Type: application/json" \
--header 'Accept: application/json'
fi
fi