[api] Jenkinsfile.pjt

- 도커 푸시
This commit is contained in:
2026-02-04 10:19:05 +09:00
parent e4f353b097
commit 4d4c998770
+35 -6
View File
@@ -27,6 +27,8 @@ pipeline {
stages { stages {
stage('1) Git check out') { stage('1) Git check out') {
steps { steps {
echo "[1/1] Git check out"
checkout scm checkout scm
} }
} }
@@ -35,15 +37,21 @@ pipeline {
steps { steps {
sh ''' sh '''
set -e set -e
echo "[1/1] Gradle build"
chmod +x ./gradlew chmod +x ./gradlew
./gradlew clean build -x test ./gradlew clean build -x test
''' '''
} }
} }
stage('3) image tab create') { stage('3) ImageTag create') {
steps { steps {
script { script {
echo "[1/1] ImageTag create"
env.SHORT_SHA = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim() env.SHORT_SHA = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim()
echo "SHORT_SHA = ${env.SHORT_SHA}" echo "SHORT_SHA = ${env.SHORT_SHA}"
env.IMAGE_TAG = "${env.BUILD_NUMBER}-${env.SHORT_SHA}" env.IMAGE_TAG = "${env.BUILD_NUMBER}-${env.SHORT_SHA}"
@@ -56,12 +64,15 @@ pipeline {
steps { steps {
sh ''' sh '''
set -e set -e
echo "[1/1] docker build"
docker build -t ${REGISTRY_HOST}/${IMAGE_REPO}:${IMAGE_TAG} . docker build -t ${REGISTRY_HOST}/${IMAGE_REPO}:${IMAGE_TAG} .
''' '''
} }
} }
stage('5) Docker Login & Push') { stage('5) Docker registry Login & Push') {
steps { steps {
withCredentials([usernamePassword( withCredentials([usernamePassword(
credentialsId: DOCKER_CRED, credentialsId: DOCKER_CRED,
@@ -71,9 +82,11 @@ pipeline {
sh ''' sh '''
set -e set -e
echo "[1/2] docker registry login"
echo "$DOCKER_PASS" | docker login ${REGISTRY_HOST} \ echo "$DOCKER_PASS" | docker login ${REGISTRY_HOST} \
-u "$DOCKER_USER" --password-stdin -u "$DOCKER_USER" --password-stdin
echo "[2/2] docker image push"
docker push ${REGISTRY_HOST}/${IMAGE_REPO}:${IMAGE_TAG} docker push ${REGISTRY_HOST}/${IMAGE_REPO}:${IMAGE_TAG}
docker logout ${REGISTRY_HOST} docker logout ${REGISTRY_HOST}
@@ -87,16 +100,20 @@ pipeline {
sshagent(['ssh-pjt']) { sshagent(['ssh-pjt']) {
sh ''' sh '''
set -e set -e
echo "[1/2] ssh login"
SRC="${WORK_COMPOSE_DIR}/${WORK_COMPOSE_FILE}" SRC="${WORK_COMPOSE_DIR}/${WORK_COMPOSE_FILE}"
DST="${SSH_USER}@${SSH_HOST}:${SSH_COMPOSE_DIR}/${SSH_COMPOSE_FILE}" DST="${SSH_USER}@${SSH_HOST}:${SSH_COMPOSE_DIR}/${SSH_COMPOSE_FILE}"
echo "[2/2] Copy compose $SRC -> $DST"
scp -P ${SSH_PORT} -o StrictHostKeyChecking=no "$SRC" "$DST" scp -P ${SSH_PORT} -o StrictHostKeyChecking=no "$SRC" "$DST"
''' '''
} }
} }
} }
stage('7) Remote docker login') { stage('7) Remote docker registry login') {
steps { steps {
sshagent(['ssh-pjt']) { sshagent(['ssh-pjt']) {
withCredentials([usernamePassword( withCredentials([usernamePassword(
@@ -107,6 +124,8 @@ pipeline {
sh ''' sh '''
set -e set -e
echo "[1/1] docker registry login"
ssh -p ${SSH_PORT} \ ssh -p ${SSH_PORT} \
-o StrictHostKeyChecking=no \ -o StrictHostKeyChecking=no \
-o UserKnownHostsFile=/dev/null \ -o UserKnownHostsFile=/dev/null \
@@ -134,14 +153,16 @@ pipeline {
'set -e 'set -e
cd '"${SSH_COMPOSE_DIR}"' cd '"${SSH_COMPOSE_DIR}"'
export IMAGE_TAG='"${IMAGE_TAG}"' export IMAGE_TAG='"${IMAGE_TAG}"'
docker compose --env-file /srv/project/alist/env/api/.env -f '"${SSH_COMPOSE_FILE}"' pull
echo "[1/1] docker pull"
docker compose -p alist-api --env-file /srv/project/alist/env/api/.env -f '"${SSH_COMPOSE_FILE}"' pull
' '
''' '''
} }
} }
} }
stage('9) Remote docker up') { stage('9) Remote docker down & up') {
steps { steps {
sshagent(['ssh-pjt']) { sshagent(['ssh-pjt']) {
sh ''' sh '''
@@ -151,7 +172,15 @@ pipeline {
'set -e 'set -e
cd '"${SSH_COMPOSE_DIR}"' cd '"${SSH_COMPOSE_DIR}"'
export IMAGE_TAG='"${IMAGE_TAG}"' export IMAGE_TAG='"${IMAGE_TAG}"'
docker compose --env-file /srv/project/alist/env/api/.env -f '"${SSH_COMPOSE_FILE}"' up -d --remove-orphans
echo "[1/3] docker down (remove orphans)"
docker compose -p alist-api --env-file /srv/project/alist/env/api/.env -f "'"${SSH_COMPOSE_FILE}"'" down --remove-orphans
echo "[2/3] docker up"
docker compose -p alist-api --env-file /srv/project/alist/env/api/.env -f '"${SSH_COMPOSE_FILE}"' up -d
echo "[3/3] docker ps"
docker compose -p alist-api --env-file /srv/project/alist/env/api/.env -f '"${SSH_COMPOSE_FILE}"' ps
' '
''' '''
} }