@@ -40,25 +40,53 @@ jobs:
40
40
env :
41
41
CODER_URL :${{ secrets.TRAIAGE_CODER_URL }}
42
42
CODER_SESSION_TOKEN :${{ secrets.TRAIAGE_CODER_SESSION_TOKEN }}
43
- TEMPLATE_NAME :${{ inputs.template_name }}
44
43
permissions :
45
44
contents :read
46
45
issues :write
47
46
actions :write
48
47
49
48
steps :
50
- -name :Get GitHub user ID
51
- id :github-user-id
49
+ # This is only required for testing locally using nektos/act, so leaving commented out.
50
+ # An alternative is to use a larger or custom image.
51
+ # - name: Install Github CLI
52
+ # id: install-gh
53
+ # run: |
54
+ # (type -p wget >/dev/null || (sudo apt update && sudo apt install wget -y)) \
55
+ # && sudo mkdir -p -m 755 /etc/apt/keyrings \
56
+ # && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \
57
+ # && cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
58
+ # && sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
59
+ # && sudo mkdir -p -m 755 /etc/apt/sources.list.d \
60
+ # && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
61
+ # && sudo apt update \
62
+ # && sudo apt install gh -y
63
+
64
+ -name :Determine Inputs
65
+ id :determine-inputs
52
66
if :always()
53
67
env :
54
68
GITHUB_ACTOR :${{ github.actor }}
69
+ GITHUB_EVENT_ISSUE_HTML_URL :${{ github.event.issue.html_url }}
55
70
GITHUB_EVENT_NAME :${{ github.event_name }}
56
71
GITHUB_EVENT_USER_ID :${{ github.event.sender.id }}
57
72
GITHUB_EVENT_USER_LOGIN :${{ github.event.sender.login }}
73
+ INPUTS_ISSUE_URL :${{ inputs.issue_url }}
74
+ INPUTS_TEMPLATE_NAME :${{ inputs.template_name || 'traiage' }}
75
+ INPUTS_TEMPLATE_PRESET :${{ inputs.template_preset || 'Default'}}
76
+ INPUTS_PREFIX :${{ inputs.prefix || 'traiage' }}
58
77
GH_TOKEN :${{ github.token }}
59
78
run :|
79
+ echo "Using template name: ${INPUTS_TEMPLATE_NAME}"
80
+ echo "template_name=${INPUTS_TEMPLATE_NAME}" >> "${GITHUB_OUTPUT}"
81
+
82
+ echo "Using template preset: ${INPUTS_TEMPLATE_PRESET}"
83
+ echo "template_preset=${INPUTS_TEMPLATE_PRESET}" >> "${GITHUB_OUTPUT}"
84
+
85
+ echo "Using prefix: ${INPUTS_PREFIX}"
86
+ echo "prefix=${INPUTS_PREFIX}" >> "${GITHUB_OUTPUT}"
87
+
60
88
# For workflow_dispatch, use the actor who triggered it
61
- # For issues events, use the issue author
89
+ # For issues events, use the issue author.
62
90
if [[ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" ]]; then
63
91
if ! GITHUB_USER_ID=$(gh api "users/${GITHUB_ACTOR}" --jq '.id'); then
64
92
echo "::error::Failed to get GitHub user ID for actor ${GITHUB_ACTOR}"
@@ -67,12 +95,20 @@ jobs:
67
95
echo "Using workflow_dispatch actor: ${GITHUB_ACTOR} (ID: ${GITHUB_USER_ID})"
68
96
echo "github_user_id=${GITHUB_USER_ID}" >> "${GITHUB_OUTPUT}"
69
97
echo "github_username=${GITHUB_ACTOR}" >> "${GITHUB_OUTPUT}"
98
+
99
+ echo "Using issue URL: ${INPUTS_ISSUE_URL}"
100
+ echo "issue_url=${INPUTS_ISSUE_URL}" >> "${GITHUB_OUTPUT}"
101
+
70
102
exit 0
71
103
elif [[ "${GITHUB_EVENT_NAME}" == "issues" ]]; then
72
104
GITHUB_USER_ID=${GITHUB_EVENT_USER_ID}
73
105
echo "Using issue author: ${GITHUB_EVENT_USER_LOGIN} (ID: ${GITHUB_USER_ID})"
74
106
echo "github_user_id=${GITHUB_USER_ID}" >> "${GITHUB_OUTPUT}"
75
107
echo "github_username=${GITHUB_EVENT_USER_LOGIN}" >> "${GITHUB_OUTPUT}"
108
+
109
+ echo "Using issue URL: ${GITHUB_EVENT_ISSUE_HTML_URL}"
110
+ echo "issue_url=${GITHUB_EVENT_ISSUE_HTML_URL}" >> "${GITHUB_OUTPUT}"
111
+
76
112
exit 0
77
113
else
78
114
echo "::error::Unsupported event type: ${GITHUB_EVENT_NAME}"
83
119
env :
84
120
GITHUB_ORG :${{ github.repository_owner }}
85
121
GH_TOKEN :${{ github.token }}
86
- GITHUB_USERNAME :${{ steps.github-user-id .outputs.github_username }}
87
- GITHUB_USER_ID :${{ steps.github-user-id .outputs.github_user_id }}
122
+ GITHUB_USERNAME :${{ steps.determine-inputs .outputs.github_username }}
123
+ GITHUB_USER_ID :${{ steps.determine-inputs .outputs.github_user_id }}
88
124
run :|
89
125
# Check if the actor is a member of the organization
90
126
if ! gh api "orgs/${GITHUB_ORG}/members/${GITHUB_USERNAME}" --silent 2>/dev/null; then
@@ -94,28 +130,10 @@ jobs:
94
130
fi
95
131
echo "::notice::User ${GITHUB_USERNAME} verified as member of ${GITHUB_ORG} organization"
96
132
97
- -name :Determine issue URL
98
- id :determine-issue-url
99
- env :
100
- INPUTS_ISSUE_URL :${{ inputs.issue_url }}
101
- GITHUB_EVENT_ISSUE_HTML_URL :${{ github.event.issue.html_url }}
102
- GITHUB_EVENT_NAME :${{ github.event_name }}
103
- run :|
104
- if [[ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" ]]; then
105
- echo "issue_url=${INPUTS_ISSUE_URL}" >> "${GITHUB_OUTPUT}"
106
- exit 0
107
- elif [[ "${GITHUB_EVENT_NAME}" == "issues" ]]; then
108
- echo "issue_url=${GITHUB_EVENT_ISSUE_HTML_URL}" >> "${GITHUB_OUTPUT}"
109
- exit 0
110
- else
111
- echo "::error::Unsupported event type: ${GITHUB_EVENT_NAME}"
112
- exit 1
113
- fi
114
-
115
133
-name :Extract context key from issue
116
134
id :extract-context
117
135
env :
118
- ISSUE_URL :${{ steps.determine-issue-url .outputs.issue_url }}
136
+ ISSUE_URL :${{ steps.determine-inputs .outputs.issue_url }}
119
137
GH_TOKEN :${{ github.token }}
120
138
run :|
121
139
issue_number="$(gh issue view "${ISSUE_URL}" --json number --jq '.number')"
@@ -146,7 +164,7 @@ jobs:
146
164
env :
147
165
CODER_SESSION_TOKEN :${{ secrets.TRAIAGE_CODER_SESSION_TOKEN }}
148
166
GH_TOKEN :${{ github.token }}
149
- GITHUB_USER_ID :${{ steps.github-user-id .outputs.github_user_id }}
167
+ GITHUB_USER_ID :${{ steps.determine-inputs .outputs.github_user_id }}
150
168
run :|
151
169
user_json=$(
152
170
coder users list --github-user-id="${GITHUB_USER_ID}" --output=json
@@ -169,11 +187,12 @@ jobs:
169
187
CONTEXT_KEY :${{ steps.extract-context.outputs.context_key }}
170
188
GH_TOKEN :${{ github.token }}
171
189
GITHUB_REPOSITORY :${{ github.repository }}
172
- ISSUE_URL :${{ steps.determine-issue-url .outputs.issue_url }}
173
- PREFIX :${{ inputs.prefix }}
190
+ ISSUE_URL :${{ steps.determine-inputs .outputs.issue_url }}
191
+ PREFIX :${{steps.determine- inputs.outputs .prefix }}
174
192
RUN_ID :${{ github.run_id }}
193
+ TEMPLATE_NAME :${{ steps.determine-inputs.outputs.template_name }}
175
194
TEMPLATE_PARAMETERS :${{ secrets.TRAIAGE_TEMPLATE_PARAMETERS }}
176
- TEMPLATE_PRESET :${{ inputs.template_preset }}
195
+ TEMPLATE_PRESET :${{steps.determine- inputs.outputs .template_preset }}
177
196
run :|
178
197
# Fetch issue description using `gh` CLI
179
198
issue_description=$(gh issue view "${ISSUE_URL}")
@@ -225,7 +244,7 @@ jobs:
225
244
CONTEXT_KEY :${{ steps.extract-context.outputs.context_key }}
226
245
GH_TOKEN :${{ github.token }}
227
246
GITHUB_REPOSITORY :${{ github.repository }}
228
- ISSUE_URL :${{ steps.determine-issue-url .outputs.issue_url }}
247
+ ISSUE_URL :${{ steps.determine-inputs .outputs.issue_url }}
229
248
TASK_NAME :${{ steps.create-task.outputs.TASK_NAME }}
230
249
run :|
231
250
SUMMARY_FILE=$(mktemp)