init
This commit is contained in:
145
Jenkinsfile-dev
Normal file
145
Jenkinsfile-dev
Normal file
@@ -0,0 +1,145 @@
|
||||
pipeline {
|
||||
agent any
|
||||
tools {
|
||||
jdk 'jdk21'
|
||||
}
|
||||
environment {
|
||||
BRANCH = 'develop'
|
||||
GIT_REPO = 'https://kamco.gitea.gs.dabeeo.com/dabeeo/kamco-dabeeo-training-api.git'
|
||||
DEPLOY_SERVER = '192.168.2.109'
|
||||
DEPLOY_USER = 'space'
|
||||
DEPLOY_PATH = '/home/space//kamco-training-api'
|
||||
SSH_CREDENTIALS_ID = 'jenkins-251215'
|
||||
}
|
||||
|
||||
|
||||
stages {
|
||||
stage('Checkout') {
|
||||
steps {
|
||||
checkout([
|
||||
$class: 'GitSCM',
|
||||
branches: [[name: "${env.BRANCH}"]],
|
||||
userRemoteConfigs: [[
|
||||
url: "${env.GIT_REPO}",
|
||||
credentialsId: 'jenkins-dev-token'
|
||||
]]
|
||||
])
|
||||
}
|
||||
}
|
||||
stage('Get Commit Hash') {
|
||||
steps {
|
||||
script {
|
||||
env.COMMIT_HASH = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim()
|
||||
echo "Current commit hash: ${env.COMMIT_HASH}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build') {
|
||||
steps {
|
||||
sh "./gradlew clean build -x test"
|
||||
}
|
||||
}
|
||||
|
||||
stage('Transfer Project Files') {
|
||||
steps {
|
||||
script {
|
||||
echo "Transferring project files to ${env.DEPLOY_SERVER}..."
|
||||
|
||||
sshagent(credentials: ["${env.SSH_CREDENTIALS_ID}"]) {
|
||||
sh """
|
||||
# Create deployment directory structure on remote server
|
||||
ssh -o StrictHostKeyChecking=no ${env.DEPLOY_USER}@${env.DEPLOY_SERVER} \
|
||||
"mkdir -p ${env.DEPLOY_PATH}/build/libs"
|
||||
|
||||
# Transfer build artifacts with directory structure
|
||||
scp -o StrictHostKeyChecking=no \
|
||||
build/libs/ROOT.jar \
|
||||
${env.DEPLOY_USER}@${env.DEPLOY_SERVER}:${env.DEPLOY_PATH}/build/libs/
|
||||
|
||||
# Transfer Docker files
|
||||
scp -o StrictHostKeyChecking=no \
|
||||
Dockerfile-dev \
|
||||
${env.DEPLOY_USER}@${env.DEPLOY_SERVER}:${env.DEPLOY_PATH}/
|
||||
|
||||
scp -o StrictHostKeyChecking=no \
|
||||
docker-compose-dev.yml \
|
||||
${env.DEPLOY_USER}@${env.DEPLOY_SERVER}:${env.DEPLOY_PATH}/
|
||||
|
||||
echo "✅ Project files transferred successfully"
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Docker Compose Deploy') {
|
||||
steps {
|
||||
script {
|
||||
echo "Deploying with Docker Compose on ${env.DEPLOY_SERVER}..."
|
||||
|
||||
sshagent(credentials: ["${env.SSH_CREDENTIALS_ID}"]) {
|
||||
sh """
|
||||
ssh -o StrictHostKeyChecking=no ${env.DEPLOY_USER}@${env.DEPLOY_SERVER} << 'EOF'
|
||||
cd ${env.DEPLOY_PATH}
|
||||
|
||||
# Set IMAGE_TAG environment variable
|
||||
export IMAGE_TAG=${env.COMMIT_HASH}
|
||||
|
||||
# Stop and remove existing containers
|
||||
echo "Stopping existing containers..."
|
||||
docker compose -f docker-compose-dev.yml down || true
|
||||
|
||||
# Build new Docker image
|
||||
echo "Building Docker image with tag: \${IMAGE_TAG}..."
|
||||
docker compose -f docker-compose-dev.yml build
|
||||
|
||||
# Tag as latest
|
||||
docker tag kamco-cd-training-api:\${IMAGE_TAG} kamco-cd-training-api:latest
|
||||
|
||||
# Start containers
|
||||
echo "Starting containers..."
|
||||
docker compose -f docker-compose-dev.yml up -d
|
||||
|
||||
# Wait for application to be ready
|
||||
echo "Waiting for application to be ready..."
|
||||
for i in {1..30}; do
|
||||
if curl -f http://localhost:7200/monitor/health > /dev/null 2>&1; then
|
||||
echo "✅ Application is healthy!"
|
||||
docker compose -f docker-compose-dev.yml ps
|
||||
exit 0
|
||||
fi
|
||||
echo "⏳ Waiting for application... (\$i/30)"
|
||||
sleep 2
|
||||
done
|
||||
|
||||
echo "⚠️ Warning: Health check timeout"
|
||||
docker compose -f docker-compose-dev.yml ps
|
||||
docker compose -f docker-compose-dev.yml logs --tail=50
|
||||
exit 1
|
||||
EOF
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Cleanup Old Images') {
|
||||
steps {
|
||||
script {
|
||||
echo "Cleaning up old Docker images..."
|
||||
|
||||
sshagent(credentials: ["${env.SSH_CREDENTIALS_ID}"]) {
|
||||
sh """
|
||||
ssh -o StrictHostKeyChecking=no ${env.DEPLOY_USER}@${env.DEPLOY_SERVER} \
|
||||
"docker images kamco-cd-training-api --format '{{.ID}} {{.Tag}}' | \
|
||||
grep -v latest | tail -n +6 | awk '{print \\\$1}' | xargs -r docker rmi || true"
|
||||
|
||||
echo "✅ Cleanup completed"
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user