持续构建工具Jenkins使用细节

简介: 持续构建工具Jenkins使用细节总结

在Devops的大环境下,持续构建工具Jenkins不是最新的技术了,网上亦有很多Jenkins相关的文章,此文是自己在学习和实践中总结的心得,希望能帮助遇正在踩坑的小伙伴!

原理篇
1.CI/CD原理
CI(Continuous Integration)持续集成,CD(Continuous Delivery) 持续交付(当然也有叫 Continuous Deployment)通常会采用一些软件如Jenkins、Drone、Travis、Gocd等来辅助项目流程。CI/CD能够与Git SVN等代码管理仓库集成,帮助使用者实现自动化任务。

8f0efffd34a57a2794f869cc920bc3353719d077

2.Jenkins原理
①定时拉取代码并编译或者自定义触发器hock拉取代码
②打包发布版本
③分析打包编译后的结果
④完成编译后的自定义操作

bf671158568d49dab29f080a6962d5b741e2be6d

3.Jenkins+Docker原理
①从代码仓库拉取最新的代码。
②Jenkins主机打包编译代码。
③Jenkins主机使用Dockerfile生成最新的镜像,并push到仓库。
④Docker主机pull最新的镜像,删除旧的容器,并生成最新的容器,完成部署上线。

f5705f70ea362d5a27e174caee3adbd32b2ae0ba

安装篇
1.Jenkins的部署
①自定义搭建Jenkins服务,需要注意的是,启动的方式最好是后台方式启动

nohup java -jar jenkins.war -httpPort=8080 >> log 2>&1 &

输出到log日志,方便启动遇到问题时,能够有效检查出问题。
②Jenkins的路径
当启动完Jenkins后,小伙伴们不要以为Jenkins没有生成文件,默认的Jenkins项目路径是在当前用户的/home/user/.jenkins里面(具体文件含义可以自行查阅)。
2.Jenkins管理员密码忘记
如果默认的Jenkins管理员密码忘记时,可以进入/home/user/.jenkins路径找到config.xml文件,删除以下两行

<useSecurity>true</useSecurity>
<authorizationStrategy class=”hudson.security.FullControlOnceLoggedInAuthorizationStrategy”>

<securityRealm class=”hudson.security.HudsonPrivateSecurityRealm”>

删除完毕后,重启Jenkins,直接用管理员账号进入,然后再修改管理员的密码,不然会有安全问题,切记!

使用篇
1.Jenkins的密钥对配置
①主菜单中Credentials的密钥对是狭义的是指拉取代码的密钥队,也就是在git或者其他代码管理工具中配置的私钥。
②系统管理中Jenkins SSH Key是指SSH链接服务器所提供的私钥。
2.maven配置
如果不想在系统配置中添加maven的配置的话,可以在管理中下载Maven Integration plugin使用系统的maven环境。

Jenkins+Docker篇
1.以打包一个java项目为例,实际的Dockerfile应该这样考虑,由于Jenkins打包是进入自身的工作路径(/home/user/.jenkins/jobs/zhoutimo/workspace),所以Dockerfile最好放在此路径之中,打包好的Java包会放在工作路径下的target

FROM daocloud.io/library/java:openjdk-8u40
MAINTAINER zhoutimo
COPY target/zhoutimo.jar /usr/src/myapp/
EXPOSE 50005

最后使用docker build完成镜像的创建,最后上传镜像

docker build -t registry-internal.cn-hangzhou.aliyuncs.com/zhoutimo/zhoutimo:1.1 .
docker push registry-internal.cn-hangzhou.aliyuncs.com/zhoutimo/zhoutimo:1.1

Tips:后面的那个.是表示当前路径,请勿删除
2.每次Dockerfile完成后,新上传的images会替换仓库内旧的images,不必担心冲突问题。
3.Docker主机创建最新的容器脚本

#!/bin/bash
docker stop Test-zhoutimo
docker rm Test-zhoutimo
docker rmi registry-internal.cn-hangzhou.aliyuncs.com/zhoutimo/zhoutimo:1.1
docker run -d –name Test-zhoutimo –restart=always -p 50005:50005 -w /usr/src/myapp registry-internal.cn-hangzhou.aliyuncs.com/zhoutimo/zhoutimo:1.1 java -jar zhoutimo.jar

阿里云篇
1.阿里云也推出了类似的持续集成发布工具CodePipeline,个人的理解也就是Jenkins的二次开发版。可以建议使用此工具,不过CodePipeline还是有一定的缺陷:
①.目前只限定了5个项目的发布。
②.不能自定义maven依赖的包。
2.如果项目服务器是ECS的话,可以建议使用阿里云的容器镜像服务进行镜像的管理,其优点非常明显:
①免费使用。
②可以使用内网传输,速度相当的快速!

相关文章
|
13天前
|
监控 前端开发 jenkins
Jenkins在前端项目持续部署中的应用,介绍了Jenkins作为自动化部署工具的基本概念和流程
【4月更文挑战第29天】本文探讨了Jenkins在前端项目持续部署中的应用,介绍了Jenkins作为自动化部署工具的基本概念和流程。前端持续部署涉及代码提交、构建、测试和部署四个步骤。实现过程中需配置代码仓库、构建、测试和部署任务,安装相关插件并确保环境一致性。注意事项包括代码质量控制、环境一致性、监控预警和安全管理。通过Jenkins,可提升前端开发效率和质量,但需不断学习以应对技术发展。
|
17天前
|
XML 缓存 Java
Gradle 构建自动化工具入门
Gradle 构建自动化工具入门
|
10月前
|
网络协议 Java 应用服务中间件
Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试
Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试
|
数据可视化 程序员 测试技术
Gitlab上手指南(六)|如何利用vscode工具快速的解决代码冲突
相信很多用git的程序员对于git冲突都很恐惧。当你项目马上要上线,测试让你把主分支的代码合并一下,要做一个回归测试,然后你合并的时候,一堆冲突代码,直接让你头皮发麻。到底应该处理哪一个冲突,哪一段代码
4450 1
|
JavaScript 前端开发 jenkins
Jenkins构建bug
构建时报下面这个错误: ```javascript * What went wrong: A problem occurred configuring project ':app'. The SDK directory '/Users/xxx/Documents/develop/sdk' does not exist. ```
|
jenkins Java 测试技术
jenkins持续集成工具的基本使用
jenkins持续集成工具的基本使用
164 1
jenkins持续集成工具的基本使用
|
jenkins Java 关系型数据库
jenkins持续集成从0入门到实战【八】集成sonarqube代码检测
SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检 测。
330 1
jenkins持续集成从0入门到实战【八】集成sonarqube代码检测
|
前端开发 JavaScript Ubuntu
jenkins持续集成从0入门到实战【九】构建前端项目
在前后端分离的大背景下,前端团队的工程化非常重要,本篇我们来学习构建发布前端项目
209 0
jenkins持续集成从0入门到实战【九】构建前端项目
|
jenkins Java Devops
企业DevOps之路:Jenkins 整合 SonarQube代码质量自动扫描
如果每次都需要手动执行 SonarScanner ,肯定不是 DevOps 思想所不予许的。所以需要进一步完善 SonarQube 进行自动化代码分析。
269 0
企业DevOps之路:Jenkins 整合 SonarQube代码质量自动扫描
|
架构师 Java Maven
开发效率优化之自动化构建系统Gradle(二)下篇
11/10号文档资料已全面更新!;《【阿里P7】移动互联网架构师进阶教程+BAT面试题》,可点击下方链接直接打开:【阿里P7】移动互联网架构师进阶高级教程+BAT面试题本篇文章将继续从自定义 Gradle 插件开发来介绍自动化构建系统Gradle: Gradle 插件简介 Gradle 插件是一个能够将 Gradle 的构建逻辑(build logic)和构建任务(build task)打包到一起,以便在多个项目的构建脚本(build.gradle)中应用(apply)的工具。