k8s+jenkins+SonarQube+harbor构建DevOps自动化容器云平台

文档跟

《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}/'microservic-test/k8s/product.yaml"

           sh "sed -i 's//${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上,这样就可以确保代码的完整性。

点击阅读原文了解更多精彩内容

       

你可能感兴趣的:(K8S)