88 lines
2.5 KiB
Groovy
88 lines
2.5 KiB
Groovy
pipeline {
|
|
agent any
|
|
|
|
environment {
|
|
CI_REGISTRY = '192.168.1.154:31010'
|
|
DOCKER_IMAGE = 'docker/rag-backend'
|
|
DOCKER_TAG = "${BUILD_NUMBER}"
|
|
DEPLOY_DIR = '/home/xiangning/deploy/rag-backend'
|
|
}
|
|
|
|
stages {
|
|
|
|
stage('Checkout') {
|
|
steps {
|
|
echo '=== Checkout ==='
|
|
checkout scm
|
|
sh 'git log --oneline -5'
|
|
}
|
|
}
|
|
|
|
stage('Build') {
|
|
steps {
|
|
echo '=== Build Docker Image ==='
|
|
sh """
|
|
echo "Registry: ${CI_REGISTRY}"
|
|
echo "Image: ${DOCKER_IMAGE}:${DOCKER_TAG}"
|
|
docker build -t ${DOCKER_IMAGE}:${DOCKER_TAG} .
|
|
docker tag ${DOCKER_IMAGE}:${DOCKER_TAG} ${DOCKER_IMAGE}:latest
|
|
"""
|
|
}
|
|
}
|
|
|
|
stage('Push') {
|
|
steps {
|
|
echo '=== Push to Registry ==='
|
|
sh """
|
|
echo 'dockerxn001624.' | docker login -u docker --password-stdin ${CI_REGISTRY}
|
|
docker tag ${DOCKER_IMAGE}:${DOCKER_TAG} ${CI_REGISTRY}/${DOCKER_IMAGE}:${DOCKER_TAG}
|
|
docker tag ${DOCKER_IMAGE}:latest ${CI_REGISTRY}/${DOCKER_IMAGE}:latest
|
|
docker push ${CI_REGISTRY}/${DOCKER_IMAGE}:${DOCKER_TAG}
|
|
docker push ${CI_REGISTRY}/${DOCKER_IMAGE}:latest
|
|
"""
|
|
}
|
|
}
|
|
|
|
stage('Deploy') {
|
|
steps {
|
|
echo '=== Deploy ==='
|
|
sh """
|
|
mkdir -p ${DEPLOY_DIR}
|
|
cd ${DEPLOY_DIR}
|
|
cat > docker-compose.yml << 'DCOF'
|
|
services:
|
|
rag-backend:
|
|
image: ${CI_REGISTRY}/${DOCKER_IMAGE}:latest
|
|
container_name: rag-backend
|
|
network_mode: host
|
|
restart: unless-stopped
|
|
environment:
|
|
- ASPNETCORE_ENVIRONMENT=Production
|
|
- Kestrel__Endpoints__Http__Url=http://+:5211
|
|
- Kestrel__Endpoints__Grpc__Url=http://+:50051
|
|
volumes:
|
|
- ./logs:/app/logs
|
|
DCOF
|
|
docker compose pull
|
|
docker compose down --remove-orphans || true
|
|
docker compose up -d
|
|
docker image prune -f
|
|
docker compose ps
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
success {
|
|
echo '=== CI/CD SUCCESS ==='
|
|
}
|
|
failure {
|
|
echo '=== CI/CD FAILED ==='
|
|
}
|
|
always {
|
|
deleteDir()
|
|
}
|
|
}
|
|
}
|