Compare commits
15 Commits
master
...
bbb8f457d6
| Author | SHA1 | Date | |
|---|---|---|---|
|
bbb8f457d6
|
|||
|
974548497c
|
|||
|
949ef19133
|
|||
|
1838cbb56e
|
|||
|
6f4a18f795
|
|||
|
465bca2192
|
|||
|
14536c690a
|
|||
|
4d625f97ba
|
|||
|
3e034a2db7
|
|||
|
ab43b2e778
|
|||
|
e8229053cd
|
|||
|
7626f42cd5
|
|||
|
ef20c04e92
|
|||
|
74d3310a90
|
|||
|
1a83e4780e
|
53
.jenkinsfile
53
.jenkinsfile
@@ -2,30 +2,31 @@ 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}",
|
"tag_name": "v${version}-test",
|
||||||
"name": "Release v${version}",
|
"name": "Release v${version}",
|
||||||
|
"body": "Jenkins автоматически создал релиз",
|
||||||
"draft": false,
|
"draft": false,
|
||||||
"prerelease": false
|
"prerelease": false
|
||||||
}
|
}
|
||||||
@@ -35,28 +36,38 @@ pipeline {
|
|||||||
url: env.GITEA_API_URL,
|
url: env.GITEA_API_URL,
|
||||||
httpMode: 'POST',
|
httpMode: 'POST',
|
||||||
customHeaders: [
|
customHeaders: [
|
||||||
[name: 'Accept', value: 'application/json'],
|
[name: 'Accept-Type', 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 releaseId = new groovy.json.JsonSlurper().parseText(responseApi.content).id
|
def responseCode = responseApi.status
|
||||||
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,16 +75,24 @@ pipeline {
|
|||||||
def fileName = file.name
|
def fileName = file.name
|
||||||
echo "Загружаем файл: ${fileName}"
|
echo "Загружаем файл: ${fileName}"
|
||||||
|
|
||||||
httpRequest(
|
def responseApi = 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', value: 'application/json'],
|
[name: 'Accept-Type', value: 'application/json'],
|
||||||
[name: 'Content-Type', value: 'multipart/form-data'],
|
[name: 'Content-Type', value: 'application/octet-stream'],
|
||||||
[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}
|
||||||
|
"""
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user