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

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 "[email protected]"

Create a new repository
git clone [email protected]: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 [email protected]: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 [email protected]: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 [email protected]


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
        ‘‘‘
   }
}

访问项目



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

原文地址:https://blog.51cto.com/flyfish225/2487311

时间: 2024-08-11 03:36:32

Jenkins与Docker的自动化CI/CD流水线实战的相关文章

docker与jenkins的自动化CI/CD流水线实战

docker与jenkins的自动化CI/CD流水线实战 在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署.交付(CD).本文基于Jenkins+Docker+Git实现一套CI自动化发布流程. 高效的CI/CD环境可以获得: ? 及时发现问题 ? 大幅度减少故障率 ? 加快迭代速度 ? 减少时间成本 一.发布流程设计 总结:开发===>提交代码到Git/Svn===>推送到Jenkins====>通

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

准备 安装完成以下环境:1.svn2.jdk3.maven4.tomcat5.jenkins 项目代码测试(php/java):https://github.com/lizhenliang 配置svn 1.查看结构 trunk:主干分支branches:其他分支tags:打标记 将代码最终打到tags目录下,打成版本号标记,然后再jenkins上发布 配置jenkins 1.新建任务 2.如果保留多个,会占用主机的磁盘空间 3.参数化构建过程,就是让你构建时选择 4.填写Pipeline若是不知

docker与jenkins的自动化CI/CD流水线实战(php-svn)

环境需求 编写dockerfile 备注:内容太长,写在自己的电脑上了流程:1.yum安装基础服务,如gcc,make,openssl2.nginx1.14.0安装3.php-7.1.19安装4.supervisord监听nginx,php服务5.#docker防止中文乱码6.安装crontabs 服务echo "/1 * bash /data/shell/check_supervisord.sh >> /root/check_supervisord.log" >&g

容器平台自动化CI/CD流水线实操

CI/CD----(实操说明) CI/CD 持续集成(Continuous Integration, CI):  代码合并,构建,部署,测试都在一起,不断地执行这个过程,并对结果反馈. 持续部署(Continuous Deployment, CD): 部署到测试环境.预生产环境.生成环境. 持续部署(Continuous Delivery, CD):  将最终产品发布到生成环境.给用户使用. Jenkins与容器技术CI/CD实战 说明:这张图稍微更形象一点,上线之前先把代码git到版本仓库,然

Jenkins与Docker/Kubernetes的自动化CI/CD流水线实践--免费直播课等你来约

直播老师简介: 李振良·奇虎360-高级运维工程师,主要负责360浏览器业务运维.7年互联网运维工作经验,具备丰富的运维实战经验,曾主导容器云平台建设并将业务容器化部署 老师博客专栏地址:基于Kubernetes企业级容器云平台落地与实践 直播课内容大纲: 1.什么是CI/CD?2.Jenkins Pipeline2.Jenkins与Docker发布JAVA项目3.Jenkins与Kubernetes发布JAVA项目 直播时间: 2018年7月26日(本周四)晚8点30分--9点30分 QQ群直

5步实现规模化的Kubernetes CI/CD 流水线

一.背景在近几年,Kubernetes迅速成为了容器编排的事实上的开源标准.与虚拟机不同,Kubernetes在抽象化基础架构的同时可靠地大规模编排容器,这可以帮助开发人员将工作负载与基础架构的复杂性质分开.Kubernetes是CI/CD自动化的理想选择,因为它提供了许多内置功能,这些功能使应用程序部署实现标准化和可重用,提高了开发人员的生产力,并加快了云原生应用程序的采用.Platform9是成立于2013年的云服务提供商,能够提供业界唯一由SaaS管理的混合云解决方案,使用户能够快速采用云

基于Jenkins,docker实现自动化部署(持续交付)

前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此,传统的人工部署已经心有余而力不足.持续集成,持续部署,持续交互对于微服务开发来说,是提高团队整体效率不可或缺的一环.合理的使用CI,CD能够极大的提高了生产效率,也提高了产品的交互质量.本文不对三个概念做过多的介绍,有兴趣可以读读这篇文章:The Product Managers' Guide to

如何使用GitLab和Rancher构建CI/CD流水线 – Part 2

这是我们使用GitLab和Rancher构建CI/CD流水线系列教程的第二部分.第一部分的内容介绍了如何部署.配置和确保GitLab在Rancher的运行.这一部分中,我们将介绍如何使用GitLab CI Multi-Runner构建容器,以及如何使用GitLab容器registry配置项目.除此之外,我们还将涉及如何用GitLab CI建立容器并部署到Rancher上. 使用GitLab CI Multi-Runner构建容器 GitLab CI是用于持续集成和持续交付的强大工具.它需要和Ra

rancher+gitlab+appveyor 实现 CI/CD 流水线(汇总)

rancher+gitlab+appveyor 实现 CI/CD 流水线 本文主要是做一些汇总,将近期接触并弄好的一些工具整合起来,弄一套流水线,减轻一定工作压力 工具介绍 所有的组件都是使用 docker 跑的,所以一款好用的 docker 的 ui 管理工具很重要,那就是rancher.这里只是用来管理一些工具,有点屈才了 项目代码托管使用 gitlab,其内置了 CI/CD,成套使用,非常方便 appveyor 也是一个 CI/CD 解决方案,基于asp.net core开发.其内置 nu