feature: updated scripts, Jenkinsfile. added install.sh
This commit is contained in:
parent
cbbb454a35
commit
9d60348b8b
@ -41,22 +41,6 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Дополнительная сборка для релизов
|
|
||||||
stage('Build: Release Binaries And Deploy Image') {
|
|
||||||
when {
|
|
||||||
anyOf {
|
|
||||||
tag "release-*"
|
|
||||||
tag "binaries-*"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
script {
|
|
||||||
env.CI_DOCKER_FILES_PRESET="release"
|
|
||||||
}
|
|
||||||
runGroovy 'release_docker_gitea_publish'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Пушим собранный образ в Docker Registry
|
// Пушим собранный образ в Docker Registry
|
||||||
stage('Publish: Release docker image') {
|
stage('Publish: Release docker image') {
|
||||||
when {
|
when {
|
||||||
@ -71,7 +55,7 @@ pipeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Создаем в Gitea релиз с бинарями
|
// Создаем в Gitea релиз с бинарями
|
||||||
stage('Publish: Create gitea release') {
|
stage('Publish: Build binaries and create gitea release') {
|
||||||
when {
|
when {
|
||||||
anyOf {
|
anyOf {
|
||||||
tag "release-*"
|
tag "release-*"
|
||||||
|
27
install.sh
Normal file
27
install.sh
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Адрес репозитория
|
||||||
|
REPO_URL="https://git.tswf.io/ci/universal-ci-cd-scripts.git"
|
||||||
|
|
||||||
|
# Путь к папке внутри репозитория, которую нужно скопировать
|
||||||
|
SOURCE_DIR="src/main/groovy"
|
||||||
|
|
||||||
|
# Целевая директория для копирования файлов
|
||||||
|
TARGET_DIR=".ci"
|
||||||
|
|
||||||
|
# Клонируем репозиторий в временный каталог
|
||||||
|
TEMP_DIR=$(mktemp -d)
|
||||||
|
git clone "$REPO_URL" "$TEMP_DIR"
|
||||||
|
|
||||||
|
# Проверяем, существует ли целевая папка, и если нет, создаем её
|
||||||
|
if [ ! -d "$TARGET_DIR" ]; then
|
||||||
|
mkdir -p "$TARGET_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Копируем содержимое папки из временного каталога в целевую папку
|
||||||
|
cp -r "${TEMP_DIR}/${SOURCE_DIR}/"* "$TARGET_DIR"
|
||||||
|
|
||||||
|
# Удаляем временный каталог
|
||||||
|
rm -rf "$TEMP_DIR"
|
||||||
|
|
||||||
|
echo "$SOURCE_DIR copied to $TARGET_DIR"
|
@ -86,15 +86,16 @@ for (def dockerfileName : deployDockerfiles) {
|
|||||||
throw new IllegalStateException("Build tag was not resolved (empty or null '${dockerReleaseTagToSetup}')")
|
throw new IllegalStateException("Build tag was not resolved (empty or null '${dockerReleaseTagToSetup}')")
|
||||||
}
|
}
|
||||||
|
|
||||||
def dockerComposeRollbackFileName = "${dockerComposeFileName}.backup.${System.currentTimeMillis()}.yml"
|
def dockerComposeRollbackDir = "./${dockerComposeFileName}-rollback-backups"
|
||||||
|
def dockerComposeRollbackFilePath = "${dockerComposeRollbackDir}/${dockerComposeFileName}.backup.${System.currentTimeMillis()}.yml"
|
||||||
|
|
||||||
try {
|
try {
|
||||||
sh """ ssh -tt ${sshDeployProfile} "\\
|
sh """ ssh -tt ${sshDeployProfile} "\\
|
||||||
cd '${dockerComposeDirectory}' && \\
|
cd '${dockerComposeDirectory}' && \\
|
||||||
cp ${dockerComposeFileName} ${dockerComposeRollbackFileName} && \\
|
mkdir -p ${dockerComposeRollbackDir} && \\
|
||||||
sed -i 's|image: ${dockerImageToUpdateTagBaseName}:.*|image: ${dockerReleaseImageToSetup}|g' '${dockerComposeFileName}'\\ &&
|
cp ${dockerComposeFileName} ${dockerComposeRollbackFilePath} && \\
|
||||||
${dockerComposeBaseCommand} -f '${dockerComposeFileName}' up -d \\
|
sed -i 's|image:.*${dockerImageToUpdateTagBaseName}:.*|image: ${dockerReleaseImageToSetup}|g' '${dockerComposeFileName}' && \\
|
||||||
"
|
${dockerComposeBaseCommand} -f '${dockerComposeFileName}' up -d"
|
||||||
"""
|
"""
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
ScriptLog.printf("Exception occurred while updating docker-compose tag on deploy, rolling back")
|
ScriptLog.printf("Exception occurred while updating docker-compose tag on deploy, rolling back")
|
||||||
@ -103,8 +104,8 @@ for (def dockerfileName : deployDockerfiles) {
|
|||||||
sh """ ssh -tt ${sshDeployProfile} "\\
|
sh """ ssh -tt ${sshDeployProfile} "\\
|
||||||
cd '${dockerComposeDirectory}' && \\
|
cd '${dockerComposeDirectory}' && \\
|
||||||
rm ${dockerComposeFileName} && \\
|
rm ${dockerComposeFileName} && \\
|
||||||
cp ${dockerComposeRollbackFileName} ${dockerComposeFileName} \\
|
cp ${dockerComposeRollbackFilePath} ${dockerComposeFileName} \\
|
||||||
"
|
${dockerComposeBaseCommand} -f '${dockerComposeFileName}' up -d"
|
||||||
"""
|
"""
|
||||||
|
|
||||||
ScriptLog.printf("Application restored from backup")
|
ScriptLog.printf("Application restored from backup")
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
package script
|
package script
|
||||||
|
|
||||||
import util.CIProperties
|
|
||||||
import util.DockerImageNames
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Скрипт для публикации докер образа при сборке.
|
* Скрипт для публикации докер образа при сборке.
|
||||||
@ -13,7 +10,8 @@ import util.DockerImageNames
|
|||||||
@Grab(group='io.tswf.groovy.better-groovy', module='better-groovy-scripting-shell', version='2.0.2-SNAPSHOT', changing = true),
|
@Grab(group='io.tswf.groovy.better-groovy', module='better-groovy-scripting-shell', version='2.0.2-SNAPSHOT', changing = true),
|
||||||
@Grab(group='io.tswf.groovy.better-groovy', module='better-groovy-scripting-gitea', version='2.0.2-SNAPSHOT', changing = true)
|
@Grab(group='io.tswf.groovy.better-groovy', module='better-groovy-scripting-gitea', version='2.0.2-SNAPSHOT', changing = true)
|
||||||
])
|
])
|
||||||
@groovy.transform.CompileStatic
|
_
|
||||||
|
|
||||||
import util.DockerLogin
|
import util.DockerLogin
|
||||||
import util.DockerBuildCommandFactory
|
import util.DockerBuildCommandFactory
|
||||||
import util.DockerTags
|
import util.DockerTags
|
||||||
@ -21,6 +19,8 @@ import util.Dockerfiles
|
|||||||
import util.GitTags
|
import util.GitTags
|
||||||
import util.GlobalProperties
|
import util.GlobalProperties
|
||||||
import util.ScriptLog
|
import util.ScriptLog
|
||||||
|
import util.CIProperties
|
||||||
|
import util.DockerImageNames
|
||||||
|
|
||||||
println """
|
println """
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
@ -9,7 +9,7 @@ class DockerBuildCommandFactory {
|
|||||||
def propertyNames = [
|
def propertyNames = [
|
||||||
"docker.build.${dockerfileName.toLowerCase()}.additional-args",
|
"docker.build.${dockerfileName.toLowerCase()}.additional-args",
|
||||||
"docker.build.additional-args"
|
"docker.build.additional-args"
|
||||||
]
|
].map { it.toString() }
|
||||||
|
|
||||||
return propertyNames.stream()
|
return propertyNames.stream()
|
||||||
.map { CIProperties.findProperty(it).orNull() }
|
.map { CIProperties.findProperty(it).orNull() }
|
||||||
|
Loading…
Reference in New Issue
Block a user