From 3f4a163fe41981a18f7bb3170c3da1d121a21462 Mon Sep 17 00:00:00 2001 From: Voomra Date: Mon, 18 Aug 2025 11:35:16 +0300 Subject: [PATCH] =?UTF-8?q?build:=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20Jenkins?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .jenkinsfile | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .jenkinsfile diff --git a/.jenkinsfile b/.jenkinsfile new file mode 100644 index 0000000..5c2a31a --- /dev/null +++ b/.jenkinsfile @@ -0,0 +1,82 @@ +pipeline { + agent any + + tools { + jdk 'Temurin 21' + } + + environment { + GITEA_API_URL = 'https://di9.ru/git/api/v1/repos/Voomra/ss14-launcher-extractor/releases' + GITEA_TOKEN = credentials('JENKINS_GITEA_ACCESS_TOKEN') + } + + stages { + stage('Сборка') { + steps { + sh './gradlew clean shadowJar' + } + } + + stage('Создание релиза') { + steps { + script { + def version = sh(script: './gradlew properties -q | grep "version:" | awk \'{print $2}\'', returnStdout: true).trim() + + def releaseData = """ + { + "tag_name": "v${version}", + "name": "Release v${version}", + "draft": false, + "prerelease": false + } + """ + + def responseApi = httpRequest( + url: env.GITEA_API_URL, + httpMode: 'POST', + customHeaders: [ + [name: 'Accept', value: 'application/json'], + [name: 'Content-Type', value: 'application/json;charset=utf-8'], + [name: 'Authorization', value: 'token ' + env.GITEA_TOKEN], + ], + requestBody: releaseData) + + def releaseId = new groovy.json.JsonSlurper().parseText(responseApi.content).id + env.RELEASE_ID = releaseId + } + } + } + + stage('Загрузка файлов в релиз') { + steps { + script { + if (!env.RELEASE_ID) { + error '❌ ID релиза не определен' + } + + def files = findFiles(glob: 'build/libs/*.jar') + if (files.length == 0) { + echo '⚠️ Нет артефактов для загрузки' + return + } + + files.each { file -> + def fileName = file.name + echo "Загружаем файл: ${fileName}" + + httpRequest( + url: "${env.GITEA_API_URL}/${env.RELEASE_ID}/assets?name=${fileName}", + httpMode: 'POST', + customHeaders: [ + [name: 'Accept', value: 'application/json'], + [name: 'Content-Type', value: 'multipart/form-data'], + [name: 'Authorization', value: 'token ' + env.GITEA_TOKEN] + ], + uploadFile: "build/libs/${fileName}", + multipartName: 'attachment') + } + } + } + } + } +}