refs TG-2: test Jenkins comment

This commit is contained in:
2026-05-02 18:42:09 +03:00
parent b1c882741e
commit f9eadaba3d
Vendored
+73 -22
View File
@@ -1,15 +1,17 @@
pipeline { pipeline {
agent any agent any
stages { environment {
stage('Build Android APK') {
environment {
JAVA_HOME = '/usr/lib/jvm/java-21-openjdk-amd64' JAVA_HOME = '/usr/lib/jvm/java-21-openjdk-amd64'
ANDROID_HOME = '/opt/android-sdk' ANDROID_HOME = '/opt/android-sdk'
ANDROID_SDK_ROOT = '/opt/android-sdk' ANDROID_SDK_ROOT = '/opt/android-sdk'
PATH = "/usr/lib/jvm/java-21-openjdk-amd64/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:${env.PATH}" PATH = "/usr/lib/jvm/java-21-openjdk-amd64/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:${env.PATH}"
} TAIGA_PROJECT_ID = '2'
TAIGA_URL = 'https://taiga.grigowashere.ru'
}
stages {
stage('Build Android APK') {
steps { steps {
cleanWs() cleanWs()
checkout scm checkout scm
@@ -23,7 +25,8 @@ environment {
} }
} }
} }
post {
post {
always { always {
script { script {
def result = currentBuild.currentResult ?: 'UNKNOWN' def result = currentBuild.currentResult ?: 'UNKNOWN'
@@ -39,30 +42,78 @@ post {
exit 0 exit 0
fi fi
ISSUE_JSON=\$(curl -s \\ export REF
-H "Authorization: Bearer \$TAIGA_TOKEN" \\ export BUILD_RESULT="${result}"
"https://taiga.grigowashere.ru/api/v1/issues/by_ref?project=2&ref=\$REF")
ISSUE_ID=\$(echo "\$ISSUE_JSON" | python3 -c 'import sys,json; print(json.load(sys.stdin)["id"])') python3 - <<'PY'
VERSION=\$(echo "\$ISSUE_JSON" | python3 -c 'import sys,json; print(json.load(sys.stdin)["version"])') import json
import os
import urllib.request
import urllib.error
export COMMENT="Jenkins build #${BUILD_NUMBER}: ${result} taiga_url = os.environ["TAIGA_URL"]
${BUILD_URL}" project_id = os.environ["TAIGA_PROJECT_ID"]
export VERSION="\$VERSION" token = os.environ["TAIGA_TOKEN"]
ref = os.environ["REF"]
python3 -c 'import json, os; print(json.dumps({"comment": os.environ["COMMENT"], "version": int(os.environ["VERSION"])}))' \\ headers = {
> /tmp/taiga-comment.json "Authorization": f"Bearer {token}",
"Content-Type": "application/json",
}
curl -s -X POST \\ def get_json(path):
-H "Authorization: Bearer \$TAIGA_TOKEN" \\ url = f"{taiga_url}{path}"
-H "Content-Type: application/json" \\ req = urllib.request.Request(url, headers=headers)
--data @/tmp/taiga-comment.json \\ try:
"https://taiga.grigowashere.ru/api/v1/issues/\$ISSUE_ID/comments" with urllib.request.urlopen(req) as r:
return json.loads(r.read().decode("utf-8"))
except urllib.error.HTTPError:
return None
echo "Commented Taiga TG-\$REF" targets = [
("issues", "Issue"),
("userstories", "User Story"),
("tasks", "Task"),
]
found = None
for endpoint, label in targets:
data = get_json(f"/api/v1/{endpoint}/by_ref?project={project_id}&ref={ref}")
if data and "id" in data:
found = (endpoint, label, data)
break
if not found:
print(f"Taiga TG-{ref} not found as issue/userstory/task")
raise SystemExit(0)
endpoint, label, data = found
comment = (
f"Jenkins build #{os.environ['BUILD_NUMBER']}: {os.environ['BUILD_RESULT']}\\n"
f"{os.environ['BUILD_URL']}"
)
payload = json.dumps({
"comment": comment,
"version": data["version"],
}).encode("utf-8")
url = f"{taiga_url}/api/v1/{endpoint}/{data['id']}/comments"
req = urllib.request.Request(
url,
data=payload,
headers=headers,
method="POST",
)
with urllib.request.urlopen(req) as r:
print(f"Commented Taiga TG-{ref} ({label}), HTTP {r.status}")
PY
""".stripIndent() """.stripIndent()
} }
} }
} }
} }
} }