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') } } } } } }