做网站的要素,自媒体交易网站开发,wordpress增加侧边栏,博乐建设工程信息网站采用的非jenkins-slave方式
jenkins配置#xff1a; Jenkins添加k8s master节点的服务器信息 在Jenkins容器内部与k8s master节点设置免费登录
# docker过滤查询出运行的Jenkins服务
$ docker ps | grep jenkins# 进入Jenkins容器内部
$ docker exec -it jenkins-server /bi…采用的非jenkins-slave方式
jenkins配置 Jenkins添加k8s master节点的服务器信息 在Jenkins容器内部与k8s master节点设置免费登录
# docker过滤查询出运行的Jenkins服务
$ docker ps | grep jenkins# 进入Jenkins容器内部
$ docker exec -it jenkins-server /bin/bash# 在 /root/.ssh 目录下生成了 id_rsa和id_rsa.pub三次回车
$ ssh-keygen -t rsa# 进入生成秘钥的目录
$cd /root/.ssh/# 查看秘钥文件
$ ls###免密
ssh-copy-id -i /root/.ssh/id_rsa.pub ssh root192.168.95.101
在Springboot工程准备k8s yml部署文件和修改Jenkinsfile
######Jenkinsfilepipeline {// 指定任务再哪个集群节点中执行agent any// 声明全局变量方便后面使用environment {// harbor用户名harborUserName DevOps// harbor密码harborPassword Dev12345// harbor地址harborAddress 192.168.95.131:9020// harbor项目名harborRepo repos}stages {stage (拉取git仓库代码) {steps {checkout([$class: GitSCM, branches: [[name: ${tag}]], extensions: [], userRemoteConfigs: [[credentialsId: b62b7b20-3b03-46e7-8f8b-09ab5efe0f12, url: http://192.168.95.130:8929/root/jenkins-publish-demo.git]]])}}stage (通过maven构建项目) {steps {sh /var/jenkins_home/maven/bin/mvn clean package -DskipTests}}stage (通过Sonarqube做质量检测) {steps {sh /var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.projectname${JOB_NAME} -Dsonar.projectKey${JOB_NAME} -Dsonar.source./ -Dsonar.java.binaries./target/ -Dsonar.loginc8483abbf03c0fd4212ffce2c1e93c5ae8cd65bd}}stage (通过Docker制作自定义镜像) {steps {sh cp -rf target/*.jar docker/docker build -t ${JOB_NAME}:$tag docker/}}stage (将自定义镜像推送到Harbor) {steps {sh docker login -u ${harborUserName} -p ${harborPassword} ${harborAddress}docker tag ${JOB_NAME}:${tag} ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}docker push ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}}}stage (将yml文件传到k8s-master上) {steps {sshPublisher(publishers: [sshPublisherDesc(configName: 192.168.95.101-k8s-master, transfers: [sshTransfer(cleanRemote: false, excludes: , execCommand: , execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: [, ], remoteDirectory: , remoteDirectorySDF: false, removePrefix: , sourceFiles: jenkins-publish-demo.yml)], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}}post {// 构建成功通知success {dingtalk (robot: Dingding-robot,type: MARKDOWN,title: success: ${JOB_NAME},text: [- 构建成功: ${JOB_NAME}项目!\n- 版本: ${tag}\n - 持续时间: ${currentBuild.durationString}\n- 任务:#${JOB_NAME}])}// 构建失败通知failure {dingtalk (robot: Dingding-robot,type: MARKDOWN,title: fail: ${JOB_NAME},text: [- 构建失败: ${JOB_NAME}项目!\n- 版本: ${tag}\n - 持续时间: ${currentBuild.durationString}\n- 任务:#${JOB_NAME}])}}
}
#####k8s.ymlapiVersion: apps/v1
kind: Deployment
metadata:name: springboot-demonamespace: default
spec:selector:matchLabels:app: springboot-demotemplate:metadata:labels:app: springboot-demospec:containers:- image: IMAGE_NAMEimagePullPolicy: IfNotPresentname: springboot-demoports:- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:name: springboot-demonamespace: default
spec:selector:app: springboot-demotype: NodePortports:- protocol: TCPport: 8080targetPort: 8080name: myapp-http Jenkinsfile增加远程执行k8s master服务器执行流水线脚本步骤
// 所有的脚本命令都放在pipeline中
pipeline {// 指定任务再哪个集群节点中执行agent any// 声明全局变量方便后面使用environment {// harbor用户名harborUserName DevOps// harbor密码harborPassword Dev12345// harbor地址harborAddress 192.168.95.131:9020// harbor项目名harborRepo repos}stages {stage (拉取git仓库代码) {steps {checkout([$class: GitSCM, branches: [[name: ${tag}]], extensions: [], userRemoteConfigs: [[credentialsId: b62b7b20-3b03-46e7-8f8b-09ab5efe0f12, url: http://192.168.95.130:8929/root/jenkins-publish-demo.git]]])}}stage (通过maven构建项目) {steps {sh /var/jenkins_home/maven/bin/mvn clean package -DskipTests}}stage (通过Sonarqube做质量检测) {steps {sh /var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.projectname${JOB_NAME} -Dsonar.projectKey${JOB_NAME} -Dsonar.source./ -Dsonar.java.binaries./target/ -Dsonar.loginc8483abbf03c0fd4212ffce2c1e93c5ae8cd65bd}}stage (通过Docker制作自定义镜像) {steps {sh cp -rf target/*.jar docker/docker build -t ${JOB_NAME}:$tag docker/}}stage (将自定义镜像推送到Harbor) {steps {sh docker login -u ${harborUserName} -p ${harborPassword} ${harborAddress}docker tag ${JOB_NAME}:${tag} ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}docker push ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}}}stage (将yml文件传到k8s-master上) {steps {sshPublisher(publishers: [sshPublisherDesc(configName: 192.168.95.101-k8s-master, transfers: [sshTransfer(cleanRemote: false, excludes: , execCommand: , execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: [, ], remoteDirectory: , remoteDirectorySDF: false, removePrefix: , sourceFiles: jenkins-publish-demo.yml)], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}stage (远程执行k8s-master的kubectl命令) {steps {sh ssh root192.168.95.101 kubectl apply -f /usr/local/deploy/k8s/jenkins-publish-demo.yml}}}post {// 构建成功通知success {dingtalk (robot: Dingding-robot,type: MARKDOWN,title: success: ${JOB_NAME},text: [- 构建成功: ${JOB_NAME}项目!\n- 版本: ${tag}\n - 持续时间: ${currentBuild.durationString}\n- 任务:#${JOB_NAME}])}// 构建失败通知failure {dingtalk (robot: Dingding-robot,type: MARKDOWN,title: fail: ${JOB_NAME},text: [- 构建失败: ${JOB_NAME}项目!\n- 版本: ${tag}\n - 持续时间: ${currentBuild.durationString}\n- 任务:#${JOB_NAME}])}}
}