1

Compare commits

..

1 Commits

Author SHA1 Message Date
3f4a163fe4 build: сборка Jenkins 2025-08-18 15:35:37 +03:00

View File

@@ -2,31 +2,30 @@ pipeline {
agent any agent any
tools { tools {
jdk "Temurin 21" jdk 'Temurin 21'
} }
environment { environment {
GITEA_API_URL = "https://di9.ru/git/api/v1/repos/Voomra/ss14-launcher-extractor/releases" GITEA_API_URL = 'https://di9.ru/git/api/v1/repos/Voomra/ss14-launcher-extractor/releases'
GITEA_TOKEN = credentials("JENKINS_GITEA_ACCESS_TOKEN") GITEA_TOKEN = credentials('JENKINS_GITEA_ACCESS_TOKEN')
} }
stages { stages {
stage("Сборка") { stage('Сборка') {
steps { steps {
sh "./gradlew clean shadowJar" sh './gradlew clean shadowJar'
} }
} }
stage("Создание релиза") { stage('Создание релиза') {
steps { steps {
script { script {
def version = sh(script: './gradlew properties -q | grep "version:" | awk \'{print $2}\'', returnStdout: true).trim() def version = sh(script: './gradlew properties -q | grep "version:" | awk \'{print $2}\'', returnStdout: true).trim()
def releaseData = """ def releaseData = """
{ {
"tag_name": "v${version}-test", "tag_name": "v${version}",
"name": "Release v${version}", "name": "Release v${version}",
"body": "Jenkins автоматически создал релиз",
"draft": false, "draft": false,
"prerelease": false "prerelease": false
} }
@@ -36,38 +35,28 @@ pipeline {
url: env.GITEA_API_URL, url: env.GITEA_API_URL,
httpMode: 'POST', httpMode: 'POST',
customHeaders: [ customHeaders: [
[name: 'Accept-Type', value: 'application/json'], [name: 'Accept', value: 'application/json'],
[name: 'Content-Type', value: 'application/json;charset=utf-8'], [name: 'Content-Type', value: 'application/json;charset=utf-8'],
[name: 'Authorization', value: 'token ' + env.GITEA_TOKEN], [name: 'Authorization', value: 'token ' + env.GITEA_TOKEN],
], ],
requestBody: releaseData) requestBody: releaseData)
def responseCode = responseApi.status def releaseId = new groovy.json.JsonSlurper().parseText(responseApi.content).id
def responseBody = responseApi.content
if (responseCode != 201) {
error """
❌ Ошибка: Gitea вернул HTTP код ${responseCode}. Ожидался 201.
Тело ответа: ${responseBody}
"""
}
def releaseId = new groovy.json.JsonSlurper().parseText(responseBody).id
env.RELEASE_ID = releaseId env.RELEASE_ID = releaseId
} }
} }
} }
stage("Загрузка файлов в релиз") { stage('Загрузка файлов в релиз') {
steps { steps {
script { script {
if (!env.RELEASE_ID) { if (!env.RELEASE_ID) {
error "❌ ID релиза не определен. Пропускаем загрузку артефактов." error '❌ ID релиза не определен'
} }
def files = findFiles(glob: 'build/libs/*.jar') def files = findFiles(glob: 'build/libs/*.jar')
if (files.length == 0) { if (files.length == 0) {
echo "⚠️ Нет артефактов для загрузки." echo '⚠️ Нет артефактов для загрузки'
return return
} }
@@ -75,24 +64,16 @@ pipeline {
def fileName = file.name def fileName = file.name
echo "Загружаем файл: ${fileName}" echo "Загружаем файл: ${fileName}"
def responseApi = httpRequest( httpRequest(
url: "${env.GITEA_API_URL}/${env.RELEASE_ID}/assets?name=${fileName}", url: "${env.GITEA_API_URL}/${env.RELEASE_ID}/assets?name=${fileName}",
httpMode: 'POST', httpMode: 'POST',
customHeaders: [ customHeaders: [
[name: 'Accept-Type', value: 'application/json'], [name: 'Accept', value: 'application/json'],
[name: 'Content-Type', value: 'application/octet-stream'], [name: 'Content-Type', value: 'multipart/form-data'],
[name: 'Authorization', value: 'token ' + env.GITEA_TOKEN] [name: 'Authorization', value: 'token ' + env.GITEA_TOKEN]
], ],
uploadFile: "build/libs/${fileName}") uploadFile: "build/libs/${fileName}",
multipartName: 'attachment')
def responseCode = responseApi.status
if (responseCode != 201) {
echo """
⚠️ Ошибка загрузки ${fileName}: статус ${responseCode}
Тело ответа: ${responseApi.content}
"""
}
} }
} }
} }