From ab7c214966acf0b9505cce872f4aef4692cb3c6e Mon Sep 17 00:00:00 2001 From: grigo Date: Thu, 4 Jun 2026 13:15:42 +0300 Subject: [PATCH] Initial commit: LoraTester Android + server --- Jenkinsfile | 102 +++------------------------------------------------- 1 file changed, 5 insertions(+), 97 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b76009e..01049f3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,8 +7,6 @@ pipeline { 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}" - TAIGA_PROJECT_ID = '2' - TAIGA_URL = 'https://taiga.grigowashere.ru' GITEA_OWNER = 'Grigo' GITEA_REPO = 'TestingAndroidBuild' // Замените на нужный репозиторий GITEA_URL = 'https://git.grigowashere.ru' // Базовый URL Gitea @@ -40,7 +38,11 @@ pipeline { writeFile file: 'gitea-release.sh', text: ''' #!/bin/bash -apkPath="build/outputs/apk/debug/app-debug.apk" +apkPath=$(find . -path '*/build/outputs/apk/debug/*.apk' -type f | head -1) +if [ -z "$apkPath" ]; then + echo "APK not found under */build/outputs/apk/debug/" + exit 1 +fi headers="Authorization: token $GITEA_TOKEN" # Создаем релиз на Gitea @@ -80,98 +82,4 @@ fi } } } - - post { - always { - script { - def result = currentBuild.currentResult ?: 'UNKNOWN' - - withCredentials([string(credentialsId: 'TAIGA_TOKEN', variable: 'TAIGA_TOKEN')]) { - sh(returnStatus: true, script: """ - set +e - - REF=\$(git log -1 --pretty=%B | grep -oE 'TG-[0-9]+' | head -1 | cut -d- -f2 || true) - - if [ -z "\$REF" ]; then - echo "No TG-* reference found" - exit 0 - fi - - export REF - export BUILD_RESULT="${result}" - - python3 - <<'PY' -import json -import os -import urllib.request - -taiga_url = os.environ["TAIGA_URL"] -project_id = os.environ["TAIGA_PROJECT_ID"] -token = os.environ["TAIGA_TOKEN"] -ref = os.environ["REF"] - -headers = { - "Authorization": f"Bearer {token}", - "Content-Type": "application/json", -} - -def get_json(path): - url = f"{taiga_url}{path}" - req = urllib.request.Request(url, headers=headers) - try: - with urllib.request.urlopen(req) as r: - return json.loads(r.read().decode("utf-8")) - except Exception: - return None - -targets = [ - ("userstories", "User Story"), - ("issues", "Issue"), - ("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") - raise SystemExit(0) - -endpoint, label, data = found - -comment = ( - f"Jenkins Android 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']}" -req = urllib.request.Request( - url, - data=payload, - headers=headers, - method="PATCH", -) - -try: - with urllib.request.urlopen(req) as r: - print(f"Commented Taiga TG-{ref} ({label}), HTTP {r.status}") -except Exception as e: - print(f"Taiga comment warning: {e}") - raise SystemExit(0) -PY - """.stripIndent()) - } - } - } - } } \ No newline at end of file