k8s+jenkins+SonarQube+harbor构建DevOps自动化容器云平台
文档跟《kubernetes/k8s+SpringCloud全栈技术:基于世界500强的企业实战》课程的DevOps部分对应,买过程课程的建议先收藏,看到DevOps内容之后再来看这部分内容,课程链接如下:https://edu.51cto.com/course/26635.html也可扫面或者长按下图获取课程详细信息:正文:1.安装sonarqube:在192.168.40.131上操作:doc
文档跟
《kubernetes/k8s+SpringCloud全栈技术:基于世界500强的企业实战》
课程的DevOps部分对应,买过程课程的建议先收藏,看到DevOps内容之后再来看这部分内容,课程链接如下:
https://edu.51cto.com/course/26635.html
也可扫面或者长按下图获取课程详细信息:
正文:
1.安装sonarqube:
在192.168.40.131上操作:
docker run -d --name postgres10 -p 5432:5432 -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=123456 postgres
docker run -d --name sonarqube7.9 -p 9000:9000 --link postgres10 -e SONARQUBE_JDBC_URL=jdbc:postgresql://postgres10:5432/sonar -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=123456 -v sonarqube_conf:/opt/sonarqube/conf -v sonarqube_extensions:/opt/sonarqube/extensions -v sonarqube_logs:/opt/sonarqube/logs -v sonarqube_data:/opt/sonarqube/data sonarqube
在jenkins中安装sonarqube插件:
系统管理->插件管理->可选插件:搜索sonar,找到Sonarqube Scanner
选择Sonarqube Scanner直接安装,安装之后重启jenkins即可
在sonarqube的web界面创建一个token:
选择Generate出现如下:
把copy后面的一串token记录下来:
2b91be9d40a28385d8b2f61b0fc0a52efd5abf97
回到k8s的master1节点:
cd /root/microservic-test
mvn sonar:sonar -Dsonar.host.url=http://192.168.40.131:9000 -Dsonar.login=2b91be9d40a28385d8b2f61b0fc0a52efd5abf97
这样就可以把代码上传到sonarqube了
2.jenkins安装和使用,怎么对接github参考如下文章:
jenkins+kubernetes+harbor+gitlab构建企业级devops平台
3.如何在jenkins pipeline中实现代码自动上传到sonarqube?
打开Jenkins,新建流水线,流水线名字随便起一个
在Pipeline Script处输入如下内容:
node('testhan') {
stage('Clone') {
echo "1.Clone Stage"
git url: "https://github.com/luckylucky421/springcloud.git"
script {
build_tag = sh(returnStdout: true, script: 'git rev-parse --shortHEAD').trim()
}
}
stage('Test') {
echo "2.Test Stage"
}
stage('mvn') {
sh "cd microservic-test"
sh "mvn sonar:sonar -Dsonar.host.url=http://192.168.40.131:9000-Dsonar.login=e44911763d0fce6b1f8e7b3498c3c0d467bf238d"
}
stage('Build') {
echo "3.Build Docker Image Stage"
sh "cd microservic-test/product-service/product-service-biz"
sh "docker build -t192.168.40.132/microservice/jenkins-demo:${build_tag} ."
}
stage('Push') {
echo "4.Push Docker Image Stage"
withCredentials([usernamePassword(credentialsId: 'dockerharbor',passwordVariable: 'dockerHubPassword', usernameVariable: 'dockerHubUser')]) {
sh "docker login 192.168.40.132 -u ${dockerHubUser} -p ${dockerHubPassword}"
sh "docker push192.168.40.132/microservice/jenkins-demo:${build_tag}"
}
}
stage('Promoteto pro') {
defuserInput = input(
id: 'userInput',
message: 'Promote to pro?',
parameters: [
[
$class:'ChoiceParameterDefinition',
choices:"YES\nNO",
name: 'Env'
]
]
)
echo "This is a deploy step to ${userInput}"
if (userInput == "YES") {
sh "sed -i 's/<BUILD_TAG>/${build_tag}/'microservic-test/k8s/product.yaml"
sh "sed -i 's/<BRANCH_NAME>/${env.BRANCH_NAME}/'microservic-test/k8s/product.yaml"
// sh "bash running-production.sh"
sh "cat k8s-prod-harbor.yaml"
sh "kubectl apply -f microservic-test/k8s/product.yaml --record--validate=false"
}
}
}
立即构建即可
注意事项:
git url: "https://github.com/luckylucky421/springcloud.git"
这个springcloud.git就是课件里的microservic-test.zip解压之后的内容,大家可以把microservic-test.zip解压之后的内容上传到自己的github上,这样就可以确保代码的完整性。
点击阅读原文了解更多精彩内容
更多推荐
所有评论(0)