GRM-20: feat: replace inline workflow scripts with tested Python modules

This commit is contained in:
Emil Simeonov
2026-06-19 15:34:36 +02:00
parent 3048d7ade7
commit 4d2ac8d449
9 changed files with 741 additions and 97 deletions
+5 -50
View File
@@ -11,57 +11,12 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
run: python3 -m pip install requests
- name: Update Vikunja task
env:
VIKUNJA_TOKEN: ${{ secrets.VIKUNJA_TOKEN }}
run: |
MERGE_MSG=$(git log -1 --pretty=%B)
TASK_ID=$(echo "$MERGE_MSG" | grep -oE 'GRM-[0-9]+' | head -1)
if [ -z "$TASK_ID" ]; then
echo "No task ID in commit message, skipping Vikunja update."
exit 0
fi
# Resolve GRM-N identifier to Vikunja numeric task ID.
# Vikunja's filter API does not support filtering by 'identifier' field,
# so we list all tasks and filter client-side by project_id=6 and identifier.
VIKUNJA_TASK_ID=$(curl -s \
"https://work.oblachno.oblachno.fyi/api/v1/tasks/all?per_page=50" \
-H "Authorization: Bearer ${VIKUNJA_TOKEN}" | \
python3 -c "
import sys, json
tasks = json.load(sys.stdin)
matches = [t for t in tasks if t.get('project_id') == 6 and t.get('identifier') == '${TASK_ID}']
print(matches[0]['id'] if matches else '')
")
if [ -z "$VIKUNJA_TASK_ID" ]; then
echo "ERROR: Could not find Vikunja task for ${TASK_ID} in project 6"
exit 1
fi
CONV_MSG=$(echo "$MERGE_MSG" | head -1 | sed -E 's/^GRM-[0-9]+: //')
COMMIT_SHA=$(git rev-parse HEAD)
# Post HTML comment to Vikunja
python3 -c "
import json, os
html = '<p><strong>${TASK_ID}</strong>: ${CONV_MSG}</p><p>Commit: <code>${COMMIT_SHA}</code></p>'
print(json.dumps({'content': html}))
" > /tmp/vikunja_comment.json
curl -X POST \
"https://work.oblachno.oblachno.fyi/api/v1/tasks/${VIKUNJA_TASK_ID}/comments" \
-H "Authorization: Bearer ${VIKUNJA_TOKEN}" \
-H "Content-Type: application/json" \
-d @/tmp/vikunja_comment.json
# Mark task as done
curl -X PUT \
"https://work.oblachno.oblachno.fyi/api/v1/tasks/${VIKUNJA_TASK_ID}" \
-H "Authorization: Bearer ${VIKUNJA_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"done": true}'
echo "Vikunja task ${TASK_ID} (ID ${VIKUNJA_TASK_ID}) updated and marked done."
python3 scripts/post_merge.py \
"$(git log -1 --pretty=%B)" \
--commit-sha "$(git rev-parse HEAD)"