jenkins案例

本文介绍了如何使用Jenkins进行持续集成和持续部署(CICD)。首先,通过新建项目并添加生成的脚本到流水线中。接着,配置了本地到目标机器的免密登录,将Tomcat部署到目标机,并传输打包好的应用包。最后,详细阐述了脚本的编写和测试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jenkins案例

新建项目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
将生成的脚本复制到流水线中
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

[root@localhost ~]# ls -a
.     下载                         .bash_profile  .groovy               .pki
..    音乐                         .bashrc        .ICEauthority         .tcshrc
公共  桌面                         .cache         initial-setup-ks.cfg  .viminfo
模板  anaconda-ks.cfg              .config        .java
视频  apache-tomcat-9.0.46.tar.gz  .cshrc         .jenkins
图片  .bash_history                .dbus          jenkins.war
文档  .bash_logout                 .esd_auth      .local
[root@localhost ~]# cd .jenkins/
[root@localhost .jenkins]# ls
config.xml
credentials.xml
fingerprints
hudson.model.UpdateCenter.xml
hudson.plugins.git.GitTool.xml
identity.key.enc
jenkins.install.InstallUtil.installingPlugins
jenkins.install.InstallUtil.lastExecVersion
jenkins.install.UpgradeWizard.state
jenkins.model.JenkinsLocationConfiguration.xml
jenkins.telemetry.Correlator.xml
jobs
logs
nodeMonitors.xml
nodes
org.jenkinsci.plugins.workflow.flow.FlowExecutionList.xml
plugins
queue.xml
queue.xml.bak
secret.key
secret.key.not-so-secret
secrets
updates
userContent
users
workflow-libs
workspace
[root@localhost .jenkins]# cd workspace/
[root@localhost workspace]# ls
test  test@tmp
[root@localhost workspace]# cd test
[root@localhost test]# mvn clean package 
……
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:42 min
[INFO] Finished at: 2021-06-17T10:36:55-04:00
[

在本机上对目标机(192.168.147.55)配置免密登录

[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:OLfNmk3Ct+SI8AlmcbFX807wPx7crJznnFbZiw/mChg root@localhost.localdomain
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|                 |
|      .   +      |
|       + . =     |
|    . =ES   +   o|
|     o =o+ o o +o|
|    =  .+.* .o* =|
|   o + o @..o+.Oo|
|      + + +...B=o|
+----[SHA256]-----+
[root@localhost ~]# ssh-copy-id root@192.168.147.55
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.147.55 (192.168.147.55)' can't be established.
ECDSA key fingerprint is SHA256:WG26+ZnHKYBGpvZfykFhfhZACQjjeArlvtm62B8kr5Y.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.147.55's password: 


Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.147.55'"
and check to make sure that only the key(s) you wanted were added.

[root@localhost ~]# 
[root@localhost ~]# ssh root@192.168.147.55 'date'
20210617日 星期四 10:17:02 EDT

把tomcat传入目标机内

[root@localhost ~]# scp apache-tomcat-9.0.46.tar.gz root@192.168.147.55:/root
apache-tomcat-9.0.46.tar.gz                      100%   11MB   8.9MB/s   00:01    

//在目标机内
[root@test ~]# ls
anaconda-ks.cfg              gitlab-ce-13.9.7-ce.0.el8.x86_64.rpm
apache-tomcat-9.0.46.tar.gz  mysql
[root@test ~]# tar xf  apache-tomcat-9.0.46.tar.gz 
[root@test ~]# mv apache-tomcat-9.0.46 /usr/local/tomcat
[root@test ~]# cd /usr/local/tomcat/

[root@test tomcat]# ./bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@test tomcat]# ss -antl
State   Recv-Q  Send-Q          Local Address:Port     Peer Address:Port  Process  
LISTEN  0       128                   0.0.0.0:22            0.0.0.0:*              
LISTEN  0       100                 127.0.0.1:25            0.0.0.0:*              
LISTEN  0       100                         *:8080                *:*              
LISTEN  0       128                      [::]:22               [::]:*              
LISTEN  0       100                     [::1]:25               [::]:*              
LISTEN  0       1          [::ffff:127.0.0.1]:8005                *:*              

在这里插入图片描述

把打包好的包,传给目标机

[root@localhost test]# ls
db  Dockerfile  LICENSE  pom.xml  README.md  src  target
[root@localhost test]# cd target/
[root@localhost target]# ls
classes            ly-simple-tomcat-0.0.1-SNAPSHOT      maven-archiver
generated-sources  ly-simple-tomcat-0.0.1-SNAPSHOT.war  maven-status
[root@localhost target]# mv ly-simple-tomcat-0.0.1-SNAPSHOT.war  test.war
[root@localhost target]# ls
classes            ly-simple-tomcat-0.0.1-SNAPSHOT  maven-status
generated-sources  maven-archiver                   test.war
[root@localhost target]# scp test.war root@192.168.147.55:/usr/local/tomcat/webapps/
test.war                                         100%   17MB 132.9MB/s   00:00   

//目标机
[root@test webapps]# ls
docs  examples  host-manager  manager  ROOT  test.war

编写脚本在这里插入图片描述在这里插入图片描述

测试
在这里插入图片描述

CICD

在这里插入图片描述
在这里插入图片描述

持续集成
什么是持续集成?
软件开发中,集成是一个很可能发生未知错误的过程。持续集成是一种软件开发实践,希望团队中的成员频繁提交代码到代码仓库,且每次提交都能通过自动化测试进行验证,从而使问题尽早暴露和解决。

持续集成的好处是什么?
持续集成可以使问题尽早暴露,从而也降低了解决问题的难度,正如老马所说,持续集成无法消除bug,但却能大大降低修复的难度和时间。

如何做到持续集成?
首先,持续集成需要:

1. 单一的代码仓库,团队成员都向该仓库提交代码;

2. 自动化构建且构建过程需要包含自动化测试;

3. 有单独的集成机器用于构建;

4. 保证构建速度不要太慢(曾经有一个项目构建需要20分钟,就会很痛苦);

5. 在类产品环境进行测试;

6. 能够方便获取最新的可执行程序;

7. 可视化,大家都能看到构建过程及结果;

8. 自动化部署。

其次,我们通过以下步骤进行持续集成:

1. 程序员将代码下载到本地,并在完成修改后提交代码;

2. CI服务器监测代码库,并在有提交时自动触发;

3. CI服务器对代码进行构建,运行单元测试和集成测试;

4. CI服务器发布可部署的artefact用于后续测试,并加上本次构建版本的标签。

5. CI服务器通知团队构建成功或者失败;失败发生时团队需要尽快修复,以免耽搁后续的持续集成过程,因为失败时处于持续集成的暂停阶段。

最后,需要就团队责任达成共识:

1. 频繁提交;

2. 提交之前确保测试通过;

3. 不在持续集成失败时提交代码;

4. 提交代码后保证持续集成成功,不然不准回家

持续交付
什么是持续交付?
持续交付是持续集成的扩展,指的是将通过自动化测试的软件部署到产品环境。持续交付的本质是把每个构建成功的应用更新交付给用户使用。在持续交付的世界里,我们对完成的定义不是测试完成,而是交付到客户手中。这里需要注意的是,CD代表持续交付(Continuous Delivery)而不是持续部署(Continuous Deploy),因为部署也包括部署到测试环境,而持续交付代表的是功能的上线,交付给用户使用。

持续交付的好处是什么?
持续交付的好处在于快速获取用户反馈;适应市场变化和商业策略的变化。开发团队保证每次提交的修改都是可上线的修改,那么决定何时上线,上线哪部分功能则完全由产品业务团队决定。

虽然持续交付有显著的优点,但也有不成立的时候,比如对于嵌入式系统的开发,往往需要软硬件的配合。

如何做到持续交付?
1. 保证每次提交的修改都是可上线的修改。

2. 完善的测试(包括单元测试,组件测试,验收测试)来测试新功能和进行回归测试;

3. 持续交付的前提条件是自动化的集成和部署;需要开发/测试/运维人员一起完成

作者:大师兄爱上芭蕉扇
链接:https://www.jianshu.com/p/735306fe5794
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。持续集成
什么是持续集成?
软件开发中,集成是一个很可能发生未知错误的过程。持续集成是一种软件开发实践,希望团队中的成员频繁提交代码到代码仓库,且每次提交都能通过自动化测试进行验证,从而使问题尽早暴露和解决。

持续集成的好处是什么?
持续集成可以使问题尽早暴露,从而也降低了解决问题的难度,正如老马所说,持续集成无法消除bug,但却能大大降低修复的难度和时间。

如何做到持续集成?
首先,持续集成需要:

1. 单一的代码仓库,团队成员都向该仓库提交代码;

2. 自动化构建且构建过程需要包含自动化测试;

3. 有单独的集成机器用于构建;

4. 保证构建速度不要太慢(曾经有一个项目构建需要20分钟,就会很痛苦);

5. 在类产品环境进行测试;

6. 能够方便获取最新的可执行程序;

7. 可视化,大家都能看到构建过程及结果;

8. 自动化部署。

其次,我们通过以下步骤进行持续集成:

1. 程序员将代码下载到本地,并在完成修改后提交代码;

2. CI服务器监测代码库,并在有提交时自动触发;

3. CI服务器对代码进行构建,运行单元测试和集成测试;

4. CI服务器发布可部署的artefact用于后续测试,并加上本次构建版本的标签。

5. CI服务器通知团队构建成功或者失败;失败发生时团队需要尽快修复,以免耽搁后续的持续集成过程,因为失败时处于持续集成的暂停阶段。

最后,需要就团队责任达成共识:

1. 频繁提交;

2. 提交之前确保测试通过;

3. 不在持续集成失败时提交代码;

4. 提交代码后保证持续集成成功,不然不准回家

持续交付
什么是持续交付?
持续交付是持续集成的扩展,指的是将通过自动化测试的软件部署到产品环境。持续交付的本质是把每个构建成功的应用更新交付给用户使用。在持续交付的世界里,我们对完成的定义不是测试完成,而是交付到客户手中。这里需要注意的是,CD代表持续交付(Continuous Delivery)而不是持续部署(Continuous Deploy),因为部署也包括部署到测试环境,而持续交付代表的是功能的上线,交付给用户使用。

持续交付的好处是什么?
持续交付的好处在于快速获取用户反馈;适应市场变化和商业策略的变化。开发团队保证每次提交的修改都是可上线的修改,那么决定何时上线,上线哪部分功能则完全由产品业务团队决定。

虽然持续交付有显著的优点,但也有不成立的时候,比如对于嵌入式系统的开发,往往需要软硬件的配合。

如何做到持续交付?
1. 保证每次提交的修改都是可上线的修改。

2. 完善的测试(包括单元测试,组件测试,验收测试)来测试新功能和进行回归测试;

3. 持续交付的前提条件是自动化的集成和部署;需要开发/测试/运维人员一起完成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值