pipeline {
//定义运行流水线的执行机
agent{
label "master"
}
//定义环境变量
environment{
harbor_url = ' IP地址:端口号'
wai_harbor_url = '域名:端口号'
//harbor登录凭据,jenkins插件生成
harbor_auth = 'XXXXX'
tag = 'v1.0'
image_path='/build/backend/test'
code_path='/root/.jenkins/workspace/php_test'
projectName = "php"
imageName = "php_test"
imageNameTag = "${imageName}:${tag}"
k8s_path = "/usr/local/k8s/appfile/php-test"
}
stages {
stage('pull code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: "*/v3.1"]], extensions: [],userRemoteConfigs: [[credentialsId: 'XXXXXX', url: 'git地址']]])
}
}
stage('build project') {
steps {
sh '''//制作项目后端镜像
cd ${code_path}
chmod +x expect.sh && ./expect.sh 1 //expect脚本可实现非交互式填充进行配置初始化
/usr/local/bin/php /usr/local/bin/composer install --ignore-platform-reqs
docker build -t ${imageNameTag} . '''
withCredentials([usernamePassword(credentialsId: "${harbor_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
sh '''docker login -u ${username} -p ${password} ${harbor_url}
docker tag ${imageNameTag} ${harbor_url}/${projectName}/${imageNameTag} //更改tag标签
docker push ${harbor_url}/${projectName}/${imageNameTag} //推送至harbor仓库'''
}
sh '''docker rmi -f ${imageNameTag}
docker rmi -f ${harbor_url}/${projectName}/${imageNameTag} //删除本地docker镜像'''
}
}
stage('publish project') {
//远程执行自动化部署shell脚本
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'k8s-master', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''/usr/local/k8s/appfile/php-test/deploy.sh test''', execTimeout: 240000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/usr/local/k8s/appfile/php-test', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
}
}
}
}
jenkins流水线自动化部署pipeline脚本编写
于 2026-07-02 16:47:16 首次发布
224

被折叠的 条评论
为什么被折叠?



