44 lines
1.3 KiB
Plaintext
44 lines
1.3 KiB
Plaintext
pipeline {
|
|
agent any
|
|
triggers {
|
|
pollSCM('* * * * *')
|
|
}
|
|
|
|
stages {
|
|
stage('Build Frontend Assets') {
|
|
steps {
|
|
dir('chat-web') {
|
|
sh '''
|
|
# 使用 docker build 避免 Jenkins 内 Docker in Docker 的挂载路径问题
|
|
echo "FROM node:18-alpine\nWORKDIR /app\nCOPY . .\nRUN npm install && npm run build" > Dockerfile.build
|
|
docker build -t chat-web-builder -f Dockerfile.build .
|
|
docker create --name temp-chat-web chat-web-builder
|
|
docker cp temp-chat-web:/app/dist ./
|
|
docker rm temp-chat-web
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Build Web Image') {
|
|
steps {
|
|
dir('chat-web') {
|
|
sh '''
|
|
docker build -t chat-web:latest .
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Deploy Web Container') {
|
|
steps {
|
|
sh '''
|
|
docker stop chat-web || true
|
|
docker rm chat-web || true
|
|
docker run -d --name chat-web -p 38080:80 chat-web:latest
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
}
|