jenkins与docker的自动化ci/cd流水线实战(代码片段)

author author     2023-04-03     727

关键词:

Jenkins与Docker的自动化CI/CD流水线实战

标签(空格分隔): docker的部分


  • 一:什么是CI/CD
  • 二: 发布流程设计
  • 三:部署Git仓库并上传测试代码

一:什么是CI/CD

持续集成(Continuous Integration,CI):代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果反馈。
持续部署(Continuous Deployment,CD):部署到测试环境、预生产环境、生产环境。
持续交付(Continuous Delivery,CD):将最终产品发布到生产环境,给用户使用。
CI/CD 的 流水线特点:

高效的CI/CD环境可以获得:
? 及时发现问题
? 大幅度减少故障率
? 加快迭代速度
? 减少时间成本

二:发布流程设计

技术图片


技术图片

三:部署gitlab 并上传代码

参照文档:https://blog.51cto.com/flyfish225/2145495

在node05.flyfish 上面部署gitlab 

技术图片

技术图片


Git global setup
git config --global user.name "flyfish"
git config --global user.email "yangyangsirit@163.com"

Create a new repository
git clone git@node05.flyfish:flyfish/java-project.git
cd java-project
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Push an existing folder
cd existing_folder
git init
git remote add origin git@node05.flyfish:flyfish/java-project.git
git add .
git commit -m "Initial commit"
git push -u origin master

Push an existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin git@node05.flyfish:flyfish/java-project.git
git push -u origin --all
git push -u origin --tags

技术图片

四: 部署jenkins

在node06.flyfish 上面配置jenkins

tar -zxvf apache-tomcat-8.5.54.tar.gz
mv apache-tomcat-8.5.54 /usr/local/tomcat

cd /usr/local/tomcat/conf
vim context.xml 

---
在tomcat的/conf/context.xml中的<Context>中添加
<!--这里单位是 KB-->
<Resources cachingAllowed="true" cacheMaxSize="100000" />
---

rm -rf /usr/local/tomcat/webapps/* 

mv jenkins.war /usr/local/tomcat/webapps/jenkins.war

cd /usr/local/tomcat/bin/
./startup.sh 

技术图片

技术图片

技术图片

http://192.168.100.16:8080/jenkins

技术图片

技术图片


jenkins 安装插件
更换下载安装源
https://updates.jenkins-zh.cn/update-center.json。

技术图片

技术图片

装一个Pipeline

技术图片

技术图片

技术图片

技术图片


创建 一个从节点

技术图片

技术图片

技术图片

技术图片


创建任务 

技术图片

技术图片

技术图片

技术图片


安装maven
node01.flyfish

tar -zxvf apache-maven-3.5.0-bin.tar.gz

mv apache-maven-3.5.0 /usr/local/maven

vim /etc/profile
---
export MAVEN_HOME=/usr/local/maven
export CLASSPATH=.:$MAVEN_HOME/jre/lib:$MAVEN_HOME/lib:$MAVEN_HOME/lib/tools.jar
PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin:
---

配置maven 的 下载依赖包为阿里云的源

cd /usr/local/maven/conf

vim settings.xml 

在<mirrors>.....<mirrors> 之间 加上 阿里云的源 
-----
<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
----

mvn -version 

技术图片


无密码登录下载 代码

cd .ssh/

ssh-copy-id git@192.168.100.15

技术图片


pipline 流水线语法:

node ("jenkins-slave-100-11")    // 指定Slave标签
   // 拉取代码
   stage(‘Git Checkout‘)  
     git credentialsId: ‘71eb6de5-abea-4416-a3ef-753efcdcaa98‘, url: ‘http://node05.flyfish/flyfish/java-project.git‘  (这个地方需要用git 流水线生成用户名密码)
   
   // 代码编译
   stage(‘Maven Build‘) 
        sh ‘‘‘
        export JAVA_HOME=/usr/local/jdk
        /usr/local/maven/bin/mvn clean package -Dmaven.test.skip=true
        ‘‘‘
   
   // 项目打包到镜像并推送到镜像仓库
   stage(‘Build and Push Image‘) 
sh ‘‘‘
REPOSITORY=192.168.100.16/project/java-project:$Branch
cat > Dockerfile << EOF
FROM 192.168.100.16/library/tomcat:v1
RUN rm -rf /usr/local/tomcat/webapps/ROOT.war
COPY target/*.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh", "run"]
EOF
docker build -t $REPOSITORY .
docker login -u flyfish -p Flyfish225 192.168.100.16
docker push $REPOSITORY
‘‘‘
   
   // 部署到Docker主机
   stage(‘Deploy to Docker‘) 
        sh ‘‘‘
        REPOSITORY=192.168.100.16/project/java-project:$Branch
        docker rm -f java-project |true
        docker image rm $REPOSITORY |true
        docker login -u flyfish -p Flyfish225 192.168.100.16
        docker container run -d --name java-project -p 89:8080 $REPOSITORY
        ‘‘‘
   

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

访问项目

技术图片


docker与jenkins的自动化ci/cd流水线实战(svn)

准备安装完成以下环境:1、svn2、jdk3、maven4、tomcat5、jenkins项目代码测试(php/java):https://github.com/lizhenliang配置svn1、查看结构trunk:主干分支branches:其他分支tags:打标记将代码最终打到tags目录下,打成版本号标记,然后再jenk... 查看详情

ci/cd——构建企业级docker+jenkins+git+harbor流水线自动化持续集成持续发布平台(代码片段)

构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台CI/CD是什么?持续集成(CI)/持续交付(CD)的优势自动化部署流程图GitGithubGitlab的区别前言:一些自己想说的话部署Docker+Jenkins+Git+Harbor流水... 查看详情

ci/cd——构建企业级docker+jenkins+git+harbor流水线自动化持续集成持续发布平台(代码片段)

构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台CI/CD是什么?持续集成(CI)/持续交付(CD)的优势自动化部署流程图GitGithubGitlab的区别前言:一些自己想说的话部署Docker+Jenkins+Git+Harbor流水... 查看详情

jenkins与docker的自动化ci/cd实战(代码片段)

一、发布流程设计工作流程:开发人员提交代码到Git版本仓库;Jenkins人工/定时触发项目构建;Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;Jenkins在Docker主机创建容器并发布。环境规划如下:角色IPGit/Registry192.168.56.1... 查看详情

jenkins与docker的自动化ci/cd实战(代码片段)

...续部署、交付(CD)。本文基于Jenkins+Docker+Git实现一套CI自动化发布流程。一、发布流程设计工作流程:开发人员提交代码到Git版本仓库;Jenkins人工/定时触发项目构建;Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;Je... 查看详情

ci与cd之docker上安装jenkins(代码片段)

...步的使用,这也是持续集成的目的,CI是属于开发人员的自动化流程。 CD:持续交付(ContinuousDelivery)和持续部署(ContinuousDeployment),这里查阅了一些资料,并简单总结了一下:    1.持续交付意味着所有的变更都可以随时交... 查看详情

ci与cd之docker上安装jenkins(代码片段)

一.CI,CD,Jenkins的介绍CI:持续集成(Continuousintegration,简称CI),在传统的软件开发环境中,有集成,但是没有持续集成这种说法,长时间的分支与主干脱离,导致分支与主干可能存在较大偏差,在集成代码的时候可能需要花费数... 查看详情

实践:基于azure部署jenkins服务并开发mern应用的ci/cd构建管道

...耗时的过程,有时会导致错误。因此,我们需要以持续和自动化的方式执行此操作——这就是您将在本文中学到的内容。我们将讨论如何通过使用Jenkins设置CI/CD管道来改进MERN(MongoDB、Express、React和NodeJs)应用程序开发过程。您... 查看详情

docker——jenkins+git+registry构建自动化持续集成环境(ci/cd)(代码片段)

...部署、交付(CD)。本文基于Jenkins+Docker+GitSvn实现一套CI自动化发布流程,同时支持撤回。  一、发布流程设计工作流程:开发人员提交代码到Git或Svn版本仓库;Jenkins人工/定时触发项目构建;Jenkins拉取代码、代码编码、... 查看详情

ci/cd技术专题「jenkins实战系列」jenkins+pipeline构建自动化部署(代码片段)

...ipeline(流水线技术),那为什么要用Pipeline呢?实现自动化构建,其中Pipeline能够将以前project中的配置信息以steps的方式放在一个脚本里,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以... 查看详情

通过jenkins与docker构建ci/cd基础架构(代码片段)

###前言提到容器平台,最早接触的便是LXC(LinuxContainer),是2010年刚刚接触虚拟化平台的时候,当时开源解决方案是xen的天下(后来KVM才后来者居上),且性能各方面都不弱,价值当时还不是移动互联网时代,业务量远远没有那么... 查看详情

ci/cd之jenkins(代码片段)

jenkinsCI/CD简介jenkins简介jenkins安装安装jenkins插件安装中文插件安装流水线插件安装gitlab插件jenkins和gitlab联动jenkins轮询检查gitlab代码变更使用webhook实时检查gitlab代码变更推送dockerfile文件自动构建镜像新增agent节点jenkins用户管理CI... 查看详情

ci/cd之jenkins(代码片段)

jenkinsCI/CD简介jenkins简介jenkins安装安装jenkins插件安装中文插件安装流水线插件安装gitlab插件jenkins和gitlab联动jenkins轮询检查gitlab代码变更使用webhook实时检查gitlab代码变更推送dockerfile文件自动构建镜像新增agent节点jenkins用户管理CI... 查看详情

为了实现ci/cd,先来定制一个docker镜像实战精华篇(代码片段)

...发布,同时,项目中已经采用了云厂商提供的CI/CD自动化发布流水线。因此,为配合CI/CD操作,需要先针对项目构建一些发布的脚本,通过脚本来自动化操作Docker镜像定制、Docker的启动和停止。在阅读和实践本... 查看详情

为了实现ci/cd,先来定制一个docker镜像实战精华篇(代码片段)

...发布,同时,项目中已经采用了云厂商提供的CI/CD自动化发布流水线。因此,为配合CI/CD操作,需要先针对项目构建一些发布的脚本,通过脚本来自动化操作Docker镜像定制、Docker的启动和停止。在阅读和实践本... 查看详情

为了实现ci/cd,先来定制一个docker镜像实战精华篇(代码片段)

...发布,同时,项目中已经采用了云厂商提供的CI/CD自动化发布流水线。因此,为配合CI/CD操作,需要先针对项目构建一些发布的脚本,通过脚本来自动化操作Docker镜像定制、Docker的启动和停止。在阅读和实践本... 查看详情

kubernetes基于jenkinsspinnaker的ci/cd实践一增加制品镜像扫描(代码片段)

前言:早期jenkins承担了kubernetes中的ci/cd全部功能JenkinsPipeline演进,这里准备将cd持续集成拆分出来到spinnaker!当然了正常的思路应该是将jenkinsspinnaker的用户账号先打通集成ldap.spinnaker账号系统已经集成ldap.jenkins之前也做过相关... 查看详情

ci/cd的实践

...是命令使用socket与docker的守护进程进行通信,我们需要将jenkins添加到docker的用户组,才能正常执行docker命令NODE服务器上生成把公钥添加在到git,私钥添加到jenkins源码管理本地文件添加DockerFile和nginx配置构建脚本然后构建生成一个... 查看详情