网站建设知识点,宁波seo优化排名,重庆建筑工程交易信息网,wordpress 推送到群Jenkins简介
Jenkins是一个开源项目#xff0c;提供了一种易于使用的持续集成系统#xff0c;使开发者从繁杂的集成中解脱出来#xff0c;专注于更重要的业务逻辑实现上。同时Jenkins能实时监控集成中存在的错误#xff0c;提供详细的日志文件和提醒功能#xff0c;还能用…Jenkins简介
Jenkins是一个开源项目提供了一种易于使用的持续集成系统使开发者从繁杂的集成中解脱出来专注于更重要的业务逻辑实现上。同时Jenkins能实时监控集成中存在的错误提供详细的日志文件和提醒功能还能用图表的形式形象的展示项目构建的趋势和稳定性。 如何配置
配置路线大体可以参考《Jenkins持续集成入门到精通》.pdf 链接https://pan.baidu.com/s/1lGq0D1NhojqTaqLBnF8LPw 提取码6666 虚拟机安装Jenkins 因为Jenkins是java语言写的所以首先在208机器上配置jdk版本为11然后下载配置JenkinsmavenGit完全按照《Jenkins持续集成入门到精通》上的可能会有版本过老导致Jenkins上面的可下载插件不兼容的问题这个时候可以下载新的Jenkins配置一下就可以解决。详细配置可参考《Jenkins持续集成入门到精通》中Jenkins安装和持续集成环境配置
Jenkins凭证管理
《Jenkins持续集成入门到精通》上面是集成gitlab集成云效跟教程里的效果一样具体操作
一、点击红框处 二、 三、 四、 五、在下面具体配置 类型我们一般选择HTTPS账户密码类型的或者ssh类型的在项目中我是用的HTTPS类型的 范围默认就行
用户名和密码需要填写取自云效
1、点击个人设置
2、设置账户密码 3、回到第五步将账户密码设置上去点击创建即可。
ID、描述可以不写
六、至此你的就会保存同时生成唯一标识。
测试凭证是否通过可继续参考 《Jenkins持续集成入门到精通》- 持续集成环境(4)
Maven配置
参考**《Jenkins持续集成入门到精通》- 持续集成环境(5)-Maven安装和配置**
pipeline流水线
在此次平台建设过程中我们需要对项目进行CICD可以使用流水线来对项目进行自动拉取构建部署。
pipeline使用方式可直接参考《Jenkins持续集成入门到精通》-Jenkins项目构建类型(4)-Pipeline流水线项目构建 具体使用
下面我利用Jenkins结合ns-service-support-user微服务进行持续集成部署操作。
第一步、部署前需要在项目中添加相关依赖以及文件。
1、springboot项目打包
plugin
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-maven-plugin/artifactId
version2.7.6/version
/plugin2、添加dockerfile-maven-plugin依赖添加此依赖后可以通过dockerfile编译生成镜像
plugingroupIdcom.spotify/groupIdartifactIddockerfile-maven-plugin/artifactIdversion1.3.6/versionconfigurationrepository${project.artifactId}/repositorybuildArgsJAR_FILEtarget/${project.build.finalName}.jar/JAR_FILEPRO_NAME${project.build.finalName}/PRO_NAME/buildArgs/configuration
/plugin3、当前项目根目录添加dockerfile文件把当前项目jar包生成docker镜像
FROM openjdk:11
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
COPY ./lib/skywalking-agent.jar ./lib/skywalking-agent.jar
EXPOSE 8098
ENTRYPOINT [java,-javaagent:./lib/skywalking-agent.jar,-Dskywalking.agent.service_name,-Dskywalking.collector.backend_service192.168.192.168.xxx.xxx:11800,-jar,/app.jar]4、当前项目根目录添加Jenkinsfile文件对应Jenkins流水线
node {stage(拉取代码) {checkout([$class: GitSCM, branches: [[name: */${branch}]], extensions: [], userRemoteConfigs: [[credentialsId: ${git_auth}, url: ${git_url}]]])echo 拉取完成
}
stage(编译构建) {
def code sh (script: docker ps | grep ${Microservices},returnStatus: true
)
// code 为0 代表 grep 找到 了 ${Microservices} 相关 的 container
if (code0){
//首先停止并删除一个容器xsh (docker ps -f name${Microservices} -q | xargs --no-run-if-empty docker container kill)sh (docker ps -f name192.168.xxx.xxx:5000/${Microservices} -q | xargs --no-run-if-empty docker container kill)sh (sleep 10s)sh (docker container ls -a -f name${Microservices} -q | xargs -r docker container rm -f)sh (docker container ls -a -f name192.168.xxx.xxx:5000/${Microservices} -q | xargs -r docker container rm -f)sh (sleep 10s)
//删除镜像
// sh (docker rmi ${Microservices})sh (docker rmi -f 192.168.xxx.xxx:5000/${Microservices})
}
//调用当前微服务dockerfile
sh label: , script: mvn clean package -e -X -U dockerfile:build
sh /mydata/hostmachine_jenkins/version/version_up.sh ${Microservices} ${NEW_VERSION}
def PROJECT_VERSION readFile /mydata/hostmachine_jenkins/version/${Microservices}
// def NEW_VERSION${PROJECT_VERSION}
//将当前进镜像名修改为192.168.192.168.xxx.xxx:5000/${Microservices}:${NEW_VERSION}
sh (docker tag ${Microservices}:latest 192.168.192.168.xxx.xxx:5000/${Microservices}:${PROJECT_VERSION})
//push到私有仓库中
sh (docker push 192.168.192.168.xxx.xxx:5000/${Microservices}:${PROJECT_VERSION})
echo 构建完成
}
stage(部署上线){
//sh docker run -d --netswarm-test --name ${Microservices} -p ${port}:${port} ${Microservices}
//sh (docker stack deploy --compose-file/mydata/hostmachine_jenkins/jenkins_deploy.yml api)
def PROJECT_VERSION readFile /mydata/hostmachine_jenkins/version/${Microservices}
//按行读取
def lines PROJECT_VERSION.split(\n)[0]
echo $lines
sh docker service update --image 192.168.192.168.xxx.xxx:5000/${Microservices}:${lines} qa_${Microservices}
echo 部署完成
sh (sleep 10s)
sh (java -jar /mydata/hostmachine_jenkins/dingding.jar jenkins ${deployer}在${publishTime}将${Microservices}模块更新至${lines}部署已完成)
}
}新建任务选择流水线项目 创建完毕会跳到configuration配置界面点击流水线
定义选择pipeline script from SCM
Repository URL复制云效上项目的HTTPS Credentials选择之前创建的全局凭证 指定分支写上你需要用的
继续往下滑会看到脚本路径这个参数这个就是对应你项目上的Jenkinsfile文件 继续
点击General选择参数化构建过程并点击添加参数 添加凭据参数 添加选项参数这个只针对当前项目其实可以在项目中写死就够了 添加文本参数 添加选项参数同样只针对当前项目可以写死 添加port对应项目中的port 添加部署人员方便知道当前是谁部署了项目 添加时间参数对应钉钉消息提示 添加版本号手动输入更迭版本号 以上的参数就是对应的Jenkinsfile文件中的${***}当点击构建的时候对应的参数就会映射到Jenkinsfile文件中。
构建触发器作用是自动出发构建项目 使用方式请直接参考《Jenkins持续集成入门到精通》-Jenkins项目构建细节(1)-常用的构建触发器
设置好后可以先点击应用然后保存
进入自己创建的项目界面如下 点击build with parameter选择或者填写对应的参数 PROJECT_VERSION项目版本号参数如果不知道上一个版本我们可以到portainer中查看对应的服务后缀此后缀就是对应的当前正在运行的项目版本号。 此时PROJECT_VERSION可以设为1.0.5 所有参数设置好后点击开始构建按钮等待他构建完成 正常情况下会全流程走完如下 可以悬停在对应位置并点击logs查看当前流程的日志 或者可以点击console output查看全流程日志 验证
部署成功会有消息提醒 这个时候看portainer中的服务列表可以看到服务正在运行而且版本已经从1.0.4升级到1.0.5了 访问当前服务的验证接口查看是否能正常访问 异常情况会在某个阶段爆红这时候就需要查看日志定位具体报错位置具体解决了 笔记
添加定时任务脚本/mydata/hostmachine_jenkins/images_clean.sh208位置定时每天10/12/14三个时间段清除虚悬镜像以及当前项目之前版本未使用的镜像
添加版本自增脚本/mydata/hostmachine_jenkins/version_up1.sh208位置当点击部署的时候自动增加当前项目版本号并且对部署的服务进行版本号赋值。