jenkins的cicd操作

这篇具有很好参考价值的文章主要介绍了jenkins的cicd操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

cicd概念

持续集成( Continuous Integration)

持续频繁的(每天多次)将本地代码“集成”到主干分支,并保证主干分支可用

持续交付(Continuous Delivery)

是持续集成的下一步,持续频繁地将软件的新版本交付到类生产环境(类似于预发),交付给测试、产品验收。
持续交付强调的是“交付”,不管怎么更新,软件是随时随地可以交付的,相比持续集成,持续交付除了交付到类生产环境之外,还会执行一些集成测试、API测试等等,确保交付的产物可以直接交付部署

持续部署(Continuous Deployment)

是持续交付的下一步,“自动”将代码部署到生产环境

持续部署强调的是“部署”,它的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。

持续部署和持续交付触发方式的区别是,持续部署是自动完成的,持续交付是手动完成的

1 jenkins CICD操作

jenkins的cicd操作,kubernetes,jenkins,运维

前提:

gitlab安装,并创建了一个项目,gitlab安装了相应插件,参见上一篇文章 

说明:

下面步骤为一步一步进行,确保每一步都没有问题后进行下一步操作,从而得到一个比较完整的jenkinscicd操作,为后续使用jenkins pipeline项目奠定基础

项目以一个简单的springboot项目为基础,进行操作

目前操作仅为jenkins操作,未接入到k8s中,接入操作在jenkins pipeline项目时进行

1.1 jenkins拉取gitlab代码

步骤

先在jenkins中创建一个自由风格的项目

 

jenkins的cicd操作,kubernetes,jenkins,运维 

在源码管理中添加git,远程仓库名称和登陆凭证

jenkins的cicd操作,kubernetes,jenkins,运维

 点击立即构建

jenkins的cicd操作,kubernetes,jenkins,运维

 验证是否拉取成功

可以查看控制台输出日志

也可以进入jenkisn服务器中查看是否拉取到代码,操作如下:

进入服务器【jenkins安装的服务器】,进入容器查看【拉取的本地项目都会存放到当前用户目录的workspace目录下】

 # 1.进入容器
 sudo docker exec -it jenkins bash
 # 2.进入用户目录
 cd ~
 # 3.进入workspace
 cd workspace/
 # 4.查看项目是否已经拉去到本地
jenkins@fe5b68bad9e1:~/workspace$ cd test
jenkins@fe5b68bad9e1:~/workspace/test$ ls
pom.xml  src

发现拉取到gitlab的代码,说明该项测试没有问题

1.2 调用maven打包 

再次进入项目管理,在build steps中增加构建步骤,选择调用顶层maven目标

jenkins的cicd操作,kubernetes,jenkins,运维

 

选择之前添加的maven

命令为clean package -DskipTests 打包并跳过测试

jenkins的cicd操作,kubernetes,jenkins,运维

 点击立即构建 

jenkins的cicd操作,kubernetes,jenkins,运维

构建完成后,进入服务器查看是否有jar包

jenkins@fe5b68bad9e1:~/workspace$ cd test
jenkins@fe5b68bad9e1:~/workspace/test$ ls
pom.xml  src  target
jenkins@fe5b68bad9e1:~/workspace/test$ cd target/
jenkins@fe5b68bad9e1:~/workspace/test/target$ ls
classes		   generated-test-sources  maven-status		    test-0.0.1-SNAPSHOT.jar.original
generated-sources  maven-archiver	   test-0.0.1-SNAPSHOT.jar  test-classes

1.3 将jar包发送到目标服务器

编辑项目配置

选择构建后操作

添加send build artifacts over ssh

选择之前配置的ssh

将target/的jar包发送到目标服务器

ssh server为上一篇中jenkisn安装插件后配置

transfers中source files为jenkisn中target目录下所有jar文件

jenkins的cicd操作,kubernetes,jenkins,运维

 选择构建后在目标服务器中查看

[root@k8s-master target]# pwd
/usr/local/k8s/target
[root@k8s-master target]# ls
test-0.0.1-SNAPSHOT.jar

发现已经发送过来该jar文件

1.4 将jar构建docker镜像

在代码中添加dockerfile和docker-compose.yml

Dockerfile

FROM eclipse-temurin:8-jre
LABEL org.opencontainers.image.authors="fooleryang@139.com"
COPY mytest.jar /usr/local/
WORKDIR /usr/local
CMD java -jar mytest.jar

Docker-compose.yml

version: 'v1.0.0'
services:
  mytest:
    build:
      context: ./
      dockerfile: Dockerfile
    image: mytest:v1.0.0
    container_name: mytest
    ports:
      - 8080:8080

在pom.xml中添加固定名称,让其打包后固定名称为mytest 

jenkins的cicd操作,kubernetes,jenkins,运维

jenkins中项目配置中构建后配置添加

在jenkins项目配置中增加命令 

jenkins的cicd操作,kubernetes,jenkins,运维

命令为将target目录下的jar文件复制到docker目录下【保存dockerfile文件目录,在源码中创建】,再执行构建

在目标服务器上查看 

[root@k8s-master docker]# docker images |grep test
mytest                                                                        v1.0.0              5178b6e1eab7   12 minutes ago   239MB
[root@k8s-master docker]# docker ps |grep test
f8f5be867460   mytest:v1.0.0                                       "/bin/sh -c 'java -j…"   12 minutes ago   Up 12 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   mytest

发现已经运行了镜像

访问

jenkins的cicd操作,kubernetes,jenkins,运维

 1.5 修改代码,重新发布

修改代码,将返回信息为 版本为1.0.2

jenkins的cicd操作,kubernetes,jenkins,运维

 提交代码到gitlab,jenkins重新进行构建

构建完成后访问

jenkins的cicd操作,kubernetes,jenkins,运维

1.6 参数化构建 

修改代码,将版本输出为v2.0.0

jenkins的cicd操作,kubernetes,jenkins,运维 

修改docker-compose.yml 

将image设置为v2.0.0,version也设置为v2.0.0

jenkins的cicd操作,kubernetes,jenkins,运维

 上传代码到gitlab,并打上标签为v2.0.0

jenkins中当前任务中进行配置

在general中选择参数化构建过程

jenkins的cicd操作,kubernetes,jenkins,运维

选择git 参数【之前下载的Git paremeter插件】

jenkins的cicd操作,kubernetes,jenkins,运维 

名称为tag【自定义,但后续需要使用】

参数类型选择标签 

默认值选择main分支

jenkins的cicd操作,kubernetes,jenkins,运维

 在build setp中添加咨询shell操作jenkins的cicd操作,kubernetes,jenkins,运维

 

添加切换分支命令

并移动该步骤到第一步 $tag可以获取到parameters中配置的参数tag

jenkins的cicd操作,kubernetes,jenkins,运维

 查看项目,发现自动拉取了gitlab的标签

jenkins的cicd操作,kubernetes,jenkins,运维

 选择构建v1.0.0,输出为之前修改的v1.0.2

jenkins的cicd操作,kubernetes,jenkins,运维

选择构建v2.0.0,输出为当前修改的v2.0.0

jenkins的cicd操作,kubernetes,jenkins,运维 

2 总结 

至此,jenkins拉取gitlab,并可以参数化构建代码,发布到目标机完成

但是当前操作缺点也很明显,需要docker file,每次发布标签修改修改多处内容;发布过程的操作修改进入jenkins中进行设置和修改

后续将使用pipeline项目将jenkins发布操作集成到一个Jenkins文件中,该文件在项目源码中,这样只需要修改该文件,即可完成对发布操作的修改,也不需要修改多处地方来替换tag

也将使用k8s来进行发布项目 文章来源地址https://www.toymoban.com/news/detail-633906.html

到了这里,关于jenkins的cicd操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动化运维CICD

    目录 概述 为什么持续集成和发布可以提高效率 如何实现 1、在linux服务器安装部署代码仓库 2、安装jenkins 使用shell脚本实现CICD 使用pipeline实现CICD 使用Blue Ocean实现CICD 持续集成(Continuous Integration,CI)和持续发布(Continuous Delivery,CD,又称持续交付)是经常放在一起提及的两

    2024年02月05日
    浏览(35)
  • 基于Jenkins的CICD

    已安装docker并设置为开机自启 已安装Docker-Compose 基于docker安装Jenkins jenkins官网 编写docker-compose.yml文件 首次启动会因为数据卷data目录没有权限导致启动失败,设置data目录写权限(/usr/local/docker/jenkins_docker/data) 启动jenkins 在/usr/local/docker/jenkins_docker目录下执行 访问地址 账号密码

    2024年04月22日
    浏览(38)
  • Jenkins 持续集成 【CICD】

    持续集成是一种开发实践,它倡导团队成员频繁的集成他们的工作,每次集成都通过自动化构建(包括编译、构建、打包、部署、自动化测试)来验证,从而尽快地发现集成中的错误。让产品可以快速迭代,同时还能保持高质量。 Jenkins是基于Java开发的持续集成工具,开源免

    2024年04月12日
    浏览(25)
  • Jenkins CICD过程常见异常

    Exception when publishing, exception message [Exec exit status not zero. Status [126] 1.1 报错日志 1.2 原因 Jenkins调用的脚本文件权限不够 1.3 解决方案 chmod增加权限 Exception when publishing, exception message [Exec exit status not zero. Status [127]] 2.1 报错日志 2.2 原因 脚本文件目录错误 2.3 解决方案 将Jenkins配置

    2024年02月03日
    浏览(20)
  • Jenkins和gitlab实现CICD

    在开发TracerBackend服务的时候,每次更改代码之后需要推送到gitlab,然后ssh登录到Ubuntu的服务器上部署新的代码。服务成功启动之后,在本地执行测试用例,觉得这一套操作流程还是挺复杂的。想起公司的代码发布流程,只要个人分支的代码测试通过之后,合并到master分支的时

    2024年04月22日
    浏览(26)
  • CICD中的Jenkins和Ansible解决方案

    每一次重装系统或者是需要在服务器上正确运行软件,我们都需要重新安装所有的package、dependency并进行相应配置的微调。而这一过程可能就会因为疏忽导致错误,因此需要自动化部署 持续整合,持续交付(CI/CD)的实践,我们能够周期性的对产品进行各种专业测试,如果出

    2024年02月01日
    浏览(24)
  • CICD 流程学习(五)Jenkins后端工程构建

    案例1:数据库服务部署 MySQL部署 Redis部署 案例2:Jenkins全局工具配置 配置JDK环境    配置Git工具  配置Maven工具 配置邮件工具   案例3:Jenkins后端工程构建 Jenkins中创建HIS-BACKEND工程    测试HIS-BACKEND工程构建   案例4:Jenkins后端自动发布 添加SSH服务器     HIS-BACKEND工程配置

    2024年02月08日
    浏览(22)
  • 实战:Docker+Jenkins+Gitee构建CICD流水线

    持续集成和持续交付一直是当下流行的开发运维方式,CICD省去了大量的运维时间,也能够提高开发者代码集成规范。开发者在开发完需求功能后可以直接提交到gitee,然后jenkins直接进行代码编译和一体化流水线部署。通过流水线部署可以极大的提高devops效率,也是企业信息自

    2024年02月14日
    浏览(45)
  • linux系统从零开始搭建CICD jenkins环境

    本文教你从零开始搭建jenkins环境,开始你的CICD之旅。 1.1 系统与安装环境 本文的环境为云服务器环境,系统为linux Red-hat系统。版本信息如下: Linux version 3.10.0-1160.88.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP 如果是linux其它系统,也

    2024年02月04日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包