DevOps实战七之流水线模式构建项目
Jenkins流水线模式构建项目就介绍到这里,接下来会通过Kubernetes来管理Docker容器,实现容器自动伸缩。
·
目录
Jenkins流水线
流水线入门
- 创建流水线任务,并构建第一个Demo
- 自定义pipeline脚本 初体验
//所有的脚本都在pipeline中
pipeline {
//指定哪个jenkins节点执行任务
agent any
//声明全局变量
environment {
key = 'value'
}
stages {
stage('拉取Git仓库代码') {
steps {
echo '拉取Git仓库代码 - SUCCESS'
}
}
stage('通过maven构建项目') {
steps {
echo '通过maven构建项目 - SUCCESS'
}
}
stage('通过SonarQube进行代码质量检测') {
steps {
echo '通过SonarQube进行代码质量检测 - SUCCESS'
}
}
stage('通过Docker制作自定义镜像') {
steps {
echo '通过Docker制作自定义镜像 - SUCCESS'
}
}
stage('自定义镜像推送到Harbor仓库') {
steps {
echo '自定义镜像推送到Harbor仓库 - SUCCESS'
}
}
stage('通过Publish SSH Over通知目标服务器') {
steps {
echo '通过Publish SSH Over通知目标服务器 - SUCCESS'
}
}
}
}
- 为了更方便的管理脚本,可以把pipeline脚本提交到Gitee仓库
完善流水线脚本
- 完善从Gitee仓库拉取代码的脚本,基于标签拉取代码
stage('拉取Git仓库代码') {
steps {
//$tag,即为jenkins参数化构建中git的参数
checkout scmGit(branches: [[name: '$tag']], extensions: [], userRemoteConfigs: [[url: 'https://gitee.com/chao-tech-learning/jenkins-demo.git']])
}
}
- 完善用maven进行打包的脚本,生成的脚本添加到Jenkinsfile文件中对应的位置
w
stage('通过maven构建项目') {
steps {
sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests'
}
}
- 完善SonarQube检测代码的脚本,生成的脚本添加到Jenkinsfile文件中对应的位置
stage('通过SonarQube进行代码质量检测') {
steps {
sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.java.binaries=./target/ -Dsonar.login=b7748ed04ce2c7d570dcda0f2319b44ac1c5fdf4'
}
}
- 完善制作自定义镜像脚本,生成的脚本添加到Jenkinsfile文件中对应的位置
stage('通过Docker制作自定义镜像') {
steps {
sh '''mv target/*.jar docker/
docker build -t ${JOB_NAME}:$tag docker/'''
}
}
- 完善自定义镜像推送到Harbor仓库的脚本,生成的脚本添加到Jenkinsfile文件中对应的位置
//声明全局变量
environment {
harborAddress = '192.168.171.111:80'
harborUser = 'admin'
harborPassword = 'Harbor12345'
harborRepo = 'repository'
}
stage('自定义镜像推送到Harbor仓库') {
steps {
//用全局变量替换harbor的相关信息
sh '''docker login -u ${harborUser} -p ${harborPassword} ${harborAddress}
docker tag ${JOB_NAME}:$tag ${harborAddress}/${harborRepo}/${JOB_NAME}:$tag
docker push ${harborAddress}/${harborRepo}/${JOB_NAME}:$tag'''
}
}
- 完善通过Publish SSH Over通知目标服务器的脚本,生成的脚本添加到Jenkinsfile文件中对应的位置
stage('通过Publish SSH Over通知目标服务器') {
steps {
//"deploy.sh $harborAddress $harborRepo ${JOB_NAME} $tag $host_port $container_port"这里生成是'',需要改成""
//deploy.sh脚本在上篇博文有介绍
sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.171.110', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "deploy.sh $harborAddress $harborRepo ${JOB_NAME} $tag $host_port $container_port", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)