集成部署开发人员(gitlab+jenkins+docker)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用Jenkins+Gitlab搭建持续集成环境
• 基础环境 gitlab配置 jenkins配置 • 项目配置 • 测试验证
gitlab配置
• • • • • 注册gitlab用户,创建工程 安装git、tortoiseGit 生成公私钥与gitlab关联 使用tortoiseGit操作gitlab代码仓库 git分支介绍
分支切换 要切换到一个已存在的分支,你需要使用git checkout命令。 我们现在切 换到新创建的 testing 分支去: git checkout testing 这样 HEAD 就指向 testing 分支了。
那么,在testing分支下修改文件,然后提交本地
HEAD 分支随着提交操作自动向前移动,如图所示,你的 testing 分支向 前移动了,但是 master 分支却没有,它仍然指向运行 git checkout 时所 指的对象。
分支合并冲突 如果在不同分支同时修改文件,当合并分支的时候就会出现冲突,Git用 <<<<<<<,=======,>>>>>>>标记出不同分支的内容,这时需要手动将冲 突代码合并,然后再提交
jenkins配置
• 注册用户创建Job • 配置Job构建信息
注册用户创建project 使用管理员账号配置允许用户注册
注册gitlab用户,创建工程 访问gitlab网址(根据用户配置决定):
输入用户名密码和邮箱,点击register
注册成功
在project菜单下可以创建工程
点击create project按钮
工程创建成功提示添加SSH key(后续安装git后生成公私钥添加)
安装Git和tortoiseGit 在git官网https://git-scm.com/downloads下载相应的安装包,直接安装, 采用默认设置,直接next。
将项目拷贝到clone的代码库文件夹中
右键从gitlab上clone的代码库,选择Git commit->”master”,弹出对话框
提交本地并推送
推送gitlab
推送成功,查看gitlab上代码库
git分支介绍 Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。 在进行提交操作时,Git会保存一个提交对象(commit object)。该提交 对象会包含一个指向暂存内容快照的指针。 但不仅仅是这样,该提交对 象还包含了作者的姓名和邮箱、提交时输入的信息以及指向它的父对象 的指针。首次提交产生的提交对象没有父对象,普通提交操作产生的提 交对象有一个父对象,而由多个分支合并产生的提交对象有多个父对象。 Git的分支,其实本质上仅仅是指向提交对象的可变指针。 Git的默认分支 名是 master。 在多次提交操作之后,你其实已经有一个指向最后那个提 交对象的 master 分支。 它会在每次的提交操作中自动向前移动。 Git 的 “master” 分支并不是一个特殊分支。它就跟其它分支完全没有区 别。 之所以几乎每一个仓库> 都有 master 分支,是因为 git init 命令默认 创建它,并且大多数人都懒得去改动它。 无论创建、切换和删除分支,Git在1秒钟之内就能完成!无论你的版本 库是1个文件还是1万个文件
点击Add Credentials,步骤一样
构建 设置构建方式,选择ant invoker,ant version 从之前的ant配置后自动获取, Build File为build.xml,Properties 可以设置变量用于build.xml中直接引用, 配置界面如下
ant构建完成后执行Execute shell来通过docker自动部署 具体执行脚本如下 获取上传到私有库的原始镜像:sudo docker pull 192.168.11.98:4000/tomcat 启动tomcat容器:sudo docker run -it -d --name tomcat_source 192.168.11.98:4000/tomcat 复制war包到tomcat容器中:sudo docker cp /var/lib/jenkins/workspace/ehr_project/ehr.war tomcat_source:/usr/local/tomcat/webapps/ 生成新的镜像:sudo docker commit tomcat_source tomcat_ehr 修改tag,生成push所需镜像:sudo docker tag tomcat_ehr 192.168.11.98:4000/tomcat_ehr_test:v1 Push镜像到私有库中:sudo docker push 192.168.11.98:4000/tomcat_ehr_test:v1 停止容器:sudo docker stop tomcat_source 删除容器:sudo docker rm tomcat_source 删除上传镜像:sudo docker rmi tomcat_ehr 192.168.11.98:4000/tomcat_ehr_test:v1 删除本地原始镜像:sudo docker rmi 192.168.11.98:4000/tomcat 远程部署:ssh root@192.168.19.97 "docker stop tomcat_ehr_1;docker rm tomcat_ehr_1;docker rmi 192.168.11.98:4000/tomcat_ehr_test:v1;docker pull 192.168.11.98:4000/tomcat_ehr_test:v1;docker run -it -d --name tomcat_ehr_1 -p 8700:8080 192.168.11.98:4000/tomcat_ehr_test:v1"
分支创建 Git是怎么创建新分支的呢? 它只是为你创建了一个可以移动的新的指针。 比如,创建一个 testing分支, 你需要使用 git branch 命令: git branch testing 这会在当前所在的提交对象上创建一个指针。
使用tortoiseGit同样可以创建分支,点击clone的工程,右键tortoiseGit>Create Branch,如下图所示:
在Repository URL中输入你的项目链接之后,如果没有权限则会提示如下 图
点击credentials后面的add,kind为SSH Username with private key,在private key 中选择Enter directly,输入保存的私钥保存
添加成功பைடு நூலகம்
也可单独对Credentials设置 点击Jenkins页面左侧Credentials菜单,如下图:
定义这个工程所使用的properties:
这里定义了全局属性。这些属性是可选的,但使用属性会更方便,尤其 是便于维护。一种更有效的方式是将这些属性放到一个专门文件里,从 而使这个xml文件更加灵活,易于重用。
定义path:
Path元素用来表示一个类路径,用于在后续target中需要引用path中的相关 内容,比如项目中经常将jar包放在lib目录下,而代码编译需要引用jar包
在本地代码存放的地方右键鼠标,出现Git clone,点击出现对话框
URL为gitlab上工程的地址,点击具体工程
进入工程详细,默认为SSH,复制地址,拷贝到Git clone对话框中的URL 中
勾选Load PuTTY Key,将之前用PuTTYgen生成保存的私钥加载
从gitlab上成功clone代码库
定义所要执行的targets:
一个项目标签下可以有一个或多个target标签。一个target标签可以依赖 其他的target标签。例如,有一个target用于编译程序,另一个target用于 声称可执行文件。在生成可执行文件之前必须先编译该文件,因此可执 行文件的target依赖于编译程序的target。Target的所有属性如下。 (1) name表示标明,这个属性是必须的。 (2) depends表示依赖的目标。 (3) if表示仅当属性设置时才执行。 (4) unless表示当属性没有设置时才执行。 (5) description表示项目的描述。 Ant的depends属性指定了target的执行顺序。Ant会依照depends属性中 target出现顺序依次执行每个target。在执行之前,首先需要执行它所依 赖的target。程序中的名为publish的target的depends属性compile,而名为 compile的target的depends属性是prepare,所以这几个target执行的顺序 是prepare->compile-> publish 。一个target只能被执行一次,即使有多个 target依赖于它。如果没有if或unless属性,target总会被执行。
从tortoiseGit官网https://download.tortoisegit.org/tgit/下载安装包,直接 安装,采用默认设置,直接next。
生成公私钥与gitlab关联 tortoiseGit自带PuTTYgen,直接运行即可
生成公私钥,采用默认配置,无需更改
点击save public key 保存公钥到本地 点击 save private key 保存私钥到本地 将公钥添加到Gitlab
合并完分支后,甚至可以删除testing分支。删除testing分支就是把testing 指针给删掉,删掉后,我们就剩下了一条master分支,这里需要使用git branch -d命令来删除分支: git branch -d testing
同样使用tortoiseGit也可以合并分支,右键clone的工程,tortoriseGit>Merge
Ant使用XML来存储build信息,在xml文件里有很多task的定义,默认使用 的文件是build.xml。 首先,要有<project>元素:
<project>中的name属性标识工程名,basedir指示根目录,default标识默 认执行的target。如果运行ant时不指定这些属性,Ant将无法。
项目配置
项目通过ant进行配置 Apache Ant是目前事实上的Java应用的标准build脚本工具 一般情况,开发人员花费大量的时间做一般性的任务,比如:构建和部 署,通常包含下面的工作: • 编译代码 • 封装二进制文件 • 在测试服务器上部署二进制文件 • 测试修改 • 从一个地点拷贝代码到另一个地点 为了自动和简化上面的工作,Apache Ant 是非常有用的。这是一个基于 开放的操作系统构建和部署的工具,该工具需要从命令行执行。
tortoiseGit上同样可以操作,右键clone的工程,tortoiseGit>Switch/Checkout,弹出如下对话框:
合并分支(快速合并) 假如我们在testing上的工作完成了,就可以把testing合并到master上。Git 怎么合并呢?最简单的方法,就是直接把master指向testing的当前提交, 就完成了合并,这里你需要使用git merge命令 git merge testing git merge命令用于合并指定分支到当前分支。合并后,再查看内容,就 可以看到,和testing分支的最新提交是完全一样的。
点击gitlab页面右上角Settings,进入SSH Keys
将从PuTTYgen上拷贝的公钥复制到Key文本框中
使用tortoiseGit操作gitlab代码仓库 在本地代码存放的地方右键鼠标,出现TortoiseGit,进入Settings,点击出 现对话框
点击Settings对话框中的Git,设置用户名和邮箱
访问注册页面
注册成功
构建自由风格的Job(使用ant编译) 新建自由风格构建任务(name不要采用中文) 在已运行的Jenkins主页中,点击左侧的新建Job进入如下界面:
源码管理配置 演示是使用Git的链接,在Repository URL中输入你的项目链接, Repository URL为gitlab上创建的项目路径,进入Gitlab中的project页面, 点击使用的project,如下图:
使用命令git checkout master切换回 master 分支:
检出时 HEAD 随之移动. 这条命令做了两件事。 一是使 HEAD 指回 master 分支,二是将工作目录 恢复成 master 分支所指向的快照内容。 也就是说,你现在做修改的话, 项目将始于一个较旧的版本。 本质上来讲,这就是忽略testing 分支所做 的修改,以便于向另一个方向进行开发。
同提交历史的分支。 那么,Git又是怎么知道当前在哪一个分支上呢? 它有一个名为 HEAD 的 特殊指针。 在 Git中,它是一个指针,指向当前所在的本地分支(译注: 将 HEAD 想象为当前分支的别名)。 在本例中,你仍然在master 分支上。 因为 git branch 命令仅仅 创建 一个新分支,并不会自动切换到新分支中 去。
• 基础环境 gitlab配置 jenkins配置 • 项目配置 • 测试验证
gitlab配置
• • • • • 注册gitlab用户,创建工程 安装git、tortoiseGit 生成公私钥与gitlab关联 使用tortoiseGit操作gitlab代码仓库 git分支介绍
分支切换 要切换到一个已存在的分支,你需要使用git checkout命令。 我们现在切 换到新创建的 testing 分支去: git checkout testing 这样 HEAD 就指向 testing 分支了。
那么,在testing分支下修改文件,然后提交本地
HEAD 分支随着提交操作自动向前移动,如图所示,你的 testing 分支向 前移动了,但是 master 分支却没有,它仍然指向运行 git checkout 时所 指的对象。
分支合并冲突 如果在不同分支同时修改文件,当合并分支的时候就会出现冲突,Git用 <<<<<<<,=======,>>>>>>>标记出不同分支的内容,这时需要手动将冲 突代码合并,然后再提交
jenkins配置
• 注册用户创建Job • 配置Job构建信息
注册用户创建project 使用管理员账号配置允许用户注册
注册gitlab用户,创建工程 访问gitlab网址(根据用户配置决定):
输入用户名密码和邮箱,点击register
注册成功
在project菜单下可以创建工程
点击create project按钮
工程创建成功提示添加SSH key(后续安装git后生成公私钥添加)
安装Git和tortoiseGit 在git官网https://git-scm.com/downloads下载相应的安装包,直接安装, 采用默认设置,直接next。
将项目拷贝到clone的代码库文件夹中
右键从gitlab上clone的代码库,选择Git commit->”master”,弹出对话框
提交本地并推送
推送gitlab
推送成功,查看gitlab上代码库
git分支介绍 Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。 在进行提交操作时,Git会保存一个提交对象(commit object)。该提交 对象会包含一个指向暂存内容快照的指针。 但不仅仅是这样,该提交对 象还包含了作者的姓名和邮箱、提交时输入的信息以及指向它的父对象 的指针。首次提交产生的提交对象没有父对象,普通提交操作产生的提 交对象有一个父对象,而由多个分支合并产生的提交对象有多个父对象。 Git的分支,其实本质上仅仅是指向提交对象的可变指针。 Git的默认分支 名是 master。 在多次提交操作之后,你其实已经有一个指向最后那个提 交对象的 master 分支。 它会在每次的提交操作中自动向前移动。 Git 的 “master” 分支并不是一个特殊分支。它就跟其它分支完全没有区 别。 之所以几乎每一个仓库> 都有 master 分支,是因为 git init 命令默认 创建它,并且大多数人都懒得去改动它。 无论创建、切换和删除分支,Git在1秒钟之内就能完成!无论你的版本 库是1个文件还是1万个文件
点击Add Credentials,步骤一样
构建 设置构建方式,选择ant invoker,ant version 从之前的ant配置后自动获取, Build File为build.xml,Properties 可以设置变量用于build.xml中直接引用, 配置界面如下
ant构建完成后执行Execute shell来通过docker自动部署 具体执行脚本如下 获取上传到私有库的原始镜像:sudo docker pull 192.168.11.98:4000/tomcat 启动tomcat容器:sudo docker run -it -d --name tomcat_source 192.168.11.98:4000/tomcat 复制war包到tomcat容器中:sudo docker cp /var/lib/jenkins/workspace/ehr_project/ehr.war tomcat_source:/usr/local/tomcat/webapps/ 生成新的镜像:sudo docker commit tomcat_source tomcat_ehr 修改tag,生成push所需镜像:sudo docker tag tomcat_ehr 192.168.11.98:4000/tomcat_ehr_test:v1 Push镜像到私有库中:sudo docker push 192.168.11.98:4000/tomcat_ehr_test:v1 停止容器:sudo docker stop tomcat_source 删除容器:sudo docker rm tomcat_source 删除上传镜像:sudo docker rmi tomcat_ehr 192.168.11.98:4000/tomcat_ehr_test:v1 删除本地原始镜像:sudo docker rmi 192.168.11.98:4000/tomcat 远程部署:ssh root@192.168.19.97 "docker stop tomcat_ehr_1;docker rm tomcat_ehr_1;docker rmi 192.168.11.98:4000/tomcat_ehr_test:v1;docker pull 192.168.11.98:4000/tomcat_ehr_test:v1;docker run -it -d --name tomcat_ehr_1 -p 8700:8080 192.168.11.98:4000/tomcat_ehr_test:v1"
分支创建 Git是怎么创建新分支的呢? 它只是为你创建了一个可以移动的新的指针。 比如,创建一个 testing分支, 你需要使用 git branch 命令: git branch testing 这会在当前所在的提交对象上创建一个指针。
使用tortoiseGit同样可以创建分支,点击clone的工程,右键tortoiseGit>Create Branch,如下图所示:
在Repository URL中输入你的项目链接之后,如果没有权限则会提示如下 图
点击credentials后面的add,kind为SSH Username with private key,在private key 中选择Enter directly,输入保存的私钥保存
添加成功பைடு நூலகம்
也可单独对Credentials设置 点击Jenkins页面左侧Credentials菜单,如下图:
定义这个工程所使用的properties:
这里定义了全局属性。这些属性是可选的,但使用属性会更方便,尤其 是便于维护。一种更有效的方式是将这些属性放到一个专门文件里,从 而使这个xml文件更加灵活,易于重用。
定义path:
Path元素用来表示一个类路径,用于在后续target中需要引用path中的相关 内容,比如项目中经常将jar包放在lib目录下,而代码编译需要引用jar包
在本地代码存放的地方右键鼠标,出现Git clone,点击出现对话框
URL为gitlab上工程的地址,点击具体工程
进入工程详细,默认为SSH,复制地址,拷贝到Git clone对话框中的URL 中
勾选Load PuTTY Key,将之前用PuTTYgen生成保存的私钥加载
从gitlab上成功clone代码库
定义所要执行的targets:
一个项目标签下可以有一个或多个target标签。一个target标签可以依赖 其他的target标签。例如,有一个target用于编译程序,另一个target用于 声称可执行文件。在生成可执行文件之前必须先编译该文件,因此可执 行文件的target依赖于编译程序的target。Target的所有属性如下。 (1) name表示标明,这个属性是必须的。 (2) depends表示依赖的目标。 (3) if表示仅当属性设置时才执行。 (4) unless表示当属性没有设置时才执行。 (5) description表示项目的描述。 Ant的depends属性指定了target的执行顺序。Ant会依照depends属性中 target出现顺序依次执行每个target。在执行之前,首先需要执行它所依 赖的target。程序中的名为publish的target的depends属性compile,而名为 compile的target的depends属性是prepare,所以这几个target执行的顺序 是prepare->compile-> publish 。一个target只能被执行一次,即使有多个 target依赖于它。如果没有if或unless属性,target总会被执行。
从tortoiseGit官网https://download.tortoisegit.org/tgit/下载安装包,直接 安装,采用默认设置,直接next。
生成公私钥与gitlab关联 tortoiseGit自带PuTTYgen,直接运行即可
生成公私钥,采用默认配置,无需更改
点击save public key 保存公钥到本地 点击 save private key 保存私钥到本地 将公钥添加到Gitlab
合并完分支后,甚至可以删除testing分支。删除testing分支就是把testing 指针给删掉,删掉后,我们就剩下了一条master分支,这里需要使用git branch -d命令来删除分支: git branch -d testing
同样使用tortoiseGit也可以合并分支,右键clone的工程,tortoriseGit>Merge
Ant使用XML来存储build信息,在xml文件里有很多task的定义,默认使用 的文件是build.xml。 首先,要有<project>元素:
<project>中的name属性标识工程名,basedir指示根目录,default标识默 认执行的target。如果运行ant时不指定这些属性,Ant将无法。
项目配置
项目通过ant进行配置 Apache Ant是目前事实上的Java应用的标准build脚本工具 一般情况,开发人员花费大量的时间做一般性的任务,比如:构建和部 署,通常包含下面的工作: • 编译代码 • 封装二进制文件 • 在测试服务器上部署二进制文件 • 测试修改 • 从一个地点拷贝代码到另一个地点 为了自动和简化上面的工作,Apache Ant 是非常有用的。这是一个基于 开放的操作系统构建和部署的工具,该工具需要从命令行执行。
tortoiseGit上同样可以操作,右键clone的工程,tortoiseGit>Switch/Checkout,弹出如下对话框:
合并分支(快速合并) 假如我们在testing上的工作完成了,就可以把testing合并到master上。Git 怎么合并呢?最简单的方法,就是直接把master指向testing的当前提交, 就完成了合并,这里你需要使用git merge命令 git merge testing git merge命令用于合并指定分支到当前分支。合并后,再查看内容,就 可以看到,和testing分支的最新提交是完全一样的。
点击gitlab页面右上角Settings,进入SSH Keys
将从PuTTYgen上拷贝的公钥复制到Key文本框中
使用tortoiseGit操作gitlab代码仓库 在本地代码存放的地方右键鼠标,出现TortoiseGit,进入Settings,点击出 现对话框
点击Settings对话框中的Git,设置用户名和邮箱
访问注册页面
注册成功
构建自由风格的Job(使用ant编译) 新建自由风格构建任务(name不要采用中文) 在已运行的Jenkins主页中,点击左侧的新建Job进入如下界面:
源码管理配置 演示是使用Git的链接,在Repository URL中输入你的项目链接, Repository URL为gitlab上创建的项目路径,进入Gitlab中的project页面, 点击使用的project,如下图:
使用命令git checkout master切换回 master 分支:
检出时 HEAD 随之移动. 这条命令做了两件事。 一是使 HEAD 指回 master 分支,二是将工作目录 恢复成 master 分支所指向的快照内容。 也就是说,你现在做修改的话, 项目将始于一个较旧的版本。 本质上来讲,这就是忽略testing 分支所做 的修改,以便于向另一个方向进行开发。
同提交历史的分支。 那么,Git又是怎么知道当前在哪一个分支上呢? 它有一个名为 HEAD 的 特殊指针。 在 Git中,它是一个指针,指向当前所在的本地分支(译注: 将 HEAD 想象为当前分支的别名)。 在本例中,你仍然在master 分支上。 因为 git branch 命令仅仅 创建 一个新分支,并不会自动切换到新分支中 去。