企业微信-配置Jenkins-安装插件-在插件管理中,安装插件Qy Wechat Notification ,安装后重启jenkins
英文界面安装插件 Manage Jenkins–Manage Plugins-Available搜索插件
Locale
Localization
Git Parameter
Publish Over SSH
Qy Wechat Notification
SonarQube Scanner
1,项目添加tag
Dashboard-pipeline-General-参数化构建过程-Git参数-名称(tag)-描述(代码的版本标签)——默认值(origin/master)-应用-保存
2.拉取git仓库代码
编辑项目pipeline-流水线-流水线语法-片段生成器-示例步骤(checkout:Check out from version control)
Repository URL
http://192.168.1.6:8929/root/pipeline.git
点击-生成流水线脚本
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[url: 'http://192.168.1.6:8929/root/pipeline.git']]])
回到git仓库修改Jenkinsfile,并保存
//*/master 是默认拉取最新的代码, 我们自定义了tag版本,这里需要引入$tag
stages {
stage('拉取git仓库代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[url: 'http://192.168.1.6:8929/root/pipeline.git']]])
}
}
3.maven构建包
编辑项目pipeline-流水线-流水线语法-片段生成器-示例步骤(sh:Shell Script)
Shell Script
/var/jenkins_home/maven/bin/mvn clean package -DskipTests
生成流水线脚本
sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests'
4.通过sonarQube做代码质量检测
编辑项目pipeline-流水线-流水线语法-片段生成器-示例步骤(sh:Shell Script) -生成后的流水线脚本添加至git仓库修改Jenkinsfile
#源码位置 -Dsonar.source=./
#项目名称 -Dsonar.projectname
#项目的标识 -Dsonar.projectKey
#编译后的目录 -Dsonar.java.binaries
#秘钥 -Dsonar.login
Shell Script
/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.source=./ -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.java.binaries=./target/ -Dsonar.login=c5f80db608830252de0b368c9aaecc3a8d95463f
生成流水线脚本
sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.source=./ -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.java.binaries=./target/ -Dsonar.login=c5f80db608830252de0b368c9aaecc3a8d95463f'
5.通过docker制作自定义镜像
编辑项目pipeline-流水线-流水线语法-片段生成器-示例步骤(sh:Shell Script) -生成后的流水线脚本添加至git仓库修改Jenkinsfile
Shell Script
mv ./target/*.jar ./docker/
docker build -t ${JOB_NAME}:${tag} ./docker/
生成流水线脚本
sh '''mv ./target/*.jar ./docker/
docker build -t ${JOB_NAME}:${tag} ./docker/'''
6.将自定义镜像推送到Harbor
git仓库-修改Jenkinsfile
//声明全局变量,方便后面使用
environment {
harboUser = 'admin'
harborPass = 'Harbor12345'
harborAddress = '192.168.1.6:80'
harborRepo = 'repo'
}
stage('将自定义镜像推送到Harbor') {
steps {
sh '''docker login -u ${harboUser} -p ${harborPass} ${harborAddress}
docker tag ${JOB_NAME}:${tag} ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}
docker push ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}'''
}
}
7.通过 Publish Over SSH通知目标服务器
pipeline-参数化构建过程-添加参数-字符参数
container_port 8080 容器内部占用端口
host_prot 8081 宿主机映射端口
编辑项目pipeline-流水线-流水线语法-片段生成器-示例步骤(sshPublisher:Send build artifacts over SSH) -生成后的流水线脚本添加至git仓库修改Jenkinsfile
Exec command
deploy.sh $harborAddress $harborRepo $JOB_NAME $tag $container_port $host_prot
生成流水线脚本
sshPublisher(publishers: [sshPublisherDesc(configName: 'test', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "deploy.sh $harborAddress $harborRepo $JOB_NAME $tag $container_port $host_prot", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
流水线脚本中的一个坑,这里的’’ 不会引用Jenkinsfile文件中的变量,
‘deploy.sh $harborAddress $harborRepo $JOB_NAME $tag $container_port $host_prot’
需要换成""
“deploy.sh $harborAddress $harborRepo $JOB_NAME $tag $container_port $host_prot”
8.设置企业微信
打开企业微信手机端,在群设置的群机器人中,添加机器人
添加成功后,复制Webhook地址,在配置Jenkins时使用
编辑项目pipeline-流水线-流水线语法-片段生成器-示例步骤(qyWechatNotification:企业微信通知) -生成后的流水线脚本添加至git仓库修改Jenkinsfile