pipeline {
agent any
environment {
CODE_DIR = "/jenkins_data/springboot_test"
DATE = new Date().format('YYYYMMddHHmmss')
TAG = "${DATE}"
IMAGE_NAME = 'springtest'
IMAGE_NAME_ALIYUN = "registry.cn-shenzhen.aliyuncs.com/hxlk8s/${IMAGE_NAME}:${TAG}"
MYPROJ_DIR="/var/lib/jenkins/workspace/dockertest/"
MYPROJ_FILENAME="demo-1.0-SNAPSHOT.jar"
}
stages {
stage('Initialization'){
steps{
script{
currentBuild.displayName='dev'
currentBuild.description="mytest "
}
}
}
stage('清理并创建目录') {
steps {
echo "开始清理旧目录:${CODE_DIR}"
sh "rm -rf ${CODE_DIR} || true"
echo "旧目录清理完成,开始创建新目录:${CODE_DIR}"
sh "mkdir -p ${CODE_DIR}"
echo "新目录创建完成:${CODE_DIR}"
}
}
stage('拉取代码') {
steps {
echo "进入目录:${CODE_DIR},开始拉取Git代码"
// dir步骤:切换到指定目录执行后续操作(相当于cd ${CODE_DIR})
dir("${CODE_DIR}") {
// 拉取Git代码
git(url: "http://192.168.1.105/devops/springboot.git",branch: "master",)
echo "Git代码拉取完成,当前目录文件列表:"
// 查看目录内容,验证代码是否拉取成功
sh "ls -l"
sh "pwd"
}
}
}
stage('maven打包') {
steps {
echo "进入代码目录打包:${CODE_DIR}"
dir("${CODE_DIR}") {
sh 'mvn clean package'
}
}
}
stage('拷贝打包文件') {
steps {
echo "进入代码目录打包:${CODE_DIR}"
dir("${CODE_DIR}/target/"){
sh "cp ${MYPROJ_FILENAME} ${MYPROJ_DIR}"
}
}
}
stage('Build Docker Image') {
steps {
dir("${MYPROJ_DIR}"){
script {
docker.build("${IMAGE_NAME_ALIYUN}")
}
}
}
}
stage('Test Image') {
steps {
script {
// 运行Docker容器进行测试
docker.image("${IMAGE_NAME_ALIYUN}").inside {
sh 'echo "Running tests inside the container"'
// 运行测试脚本
}
}
}
}
stage('Deploy') {
steps {
script {
// 使用Docker推送镜像到Docker Hub
docker.withRegistry('https://registry.cn-shenzhen.aliyuncs.com', 'aliyun-hub-credentials') {
docker.image("${IMAGE_NAME_ALIYUN}").push()
}
}
}
}
}
}