目录
二、持续集成 - CI(GitLab+Maven+Nexus)
前言
一、启动Jenkins
1、前置条件
Wins10上已经通过Jenkins.msi预安装了Jenkins,同时如果要启动Jenkins有以下两种方法:
第一种:在Jenkins安装目录下执行这条命令,该模式以后台服务的方式启动Jenkins。该办法好处是在于每次可以指定不同http端口(特别针对缺省8080被占用),不好的地方是每次重启都要在命令中显式指定端口。
java -jar jenkins.war --ajp13Port=-1 --httpPort=8082
第二种:在Jenkins安装目录下把Jenkins.xml文件的属性httpPort改为其他未被占用的端口,并必须使用以下命令启动Jenkins。此时如果直接使用命令java -jar jenkins.war,你会发现启动的jenkins服务还是用的默认端口8080。
#启动jenkins服务
net start jenkins
2、插件安装
2.2 如果在安装期间部分插件安装失败,可以通过两种办法重新安装。
第一种:可以通过更改源,然后重新安装。
将
http://updates.jenkins-ci.org/update-center.json
替换为清华的镜像源
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
第二种:在网上下载Deploy Plugin插件,下载文件为deploy.hpi
3、配置
3.1 为了实现自动化构建,首先安装以下插件:
- Deploy to container(自动化部署插件)
- Maven Integration(Maven集成插件)
- Publish Over SSH(SSH远程连接插件)
- GitLab(该插件允许Gitlab触发Jenkins构建并把构建结果展示在Gitlab UI上)
- Gitlab Hook(该插件能够使用web hook去触发在gitlab项目上进行SCM polling)
- Gitlab Authentication(Gitlab的权限校验插件)
3.2 在全局工具配置中设置Maven、JDK、git、GitLab
Maven + JDK:
Maven + Git:
GitLab:
3.3 设置邮件通知(SMTP协议)
126邮箱相关服务器服务器信息如下,具体其他如QQ邮箱,foxmail等请咨询相应客服。
二、持续集成 - CI(GitLab+Maven+Nexus)
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建来验证,从而尽早地发现集成错误。因此,整个持续集成应该包含三步:编译、发布、自动化测试。
1、先创建一个任务
2、配置凭据
首先,在git bash中找到对应的公钥和私钥。
justyman@DESKTOP-7GNOQPJ MINGW64 ~/IdeaProjects/callcenter (master)
$ git config user.name
root
justyman@DESKTOP-7GNOQPJ MINGW64 ~/IdeaProjects/callcenter (master)
$ git config user.email
justyman@126.com
justyman@DESKTOP-7GNOQPJ MINGW64 ~
$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1ycsffweAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASSBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBvFUlscXERQK4hhHH9YcAxgr6c8rDrhCdiXJZwsmME/aPF5qTOF09YiIvozFlFGNpFm1cIO7wdgCnlZNEj5MdLx2aboiz7FZDafYb3KtNTPS0zI8GwwFVrO6nLMI6uYIyEKNlACv/3yWpZ7XRlJv0+SgIQbXzJyp/FTViilu71JRUqaJ justyman@126.com
justyman@DESKTOP-7GNOQPJ MINGW64 ~
$ cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA0qWxiOW0t+KFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
sssssssssssssssssssssssssssssssssssssssssssssssssssssswQ==
-----END RSA PRIVATE KEY-----
接着,把公钥保存到GitLab的SSH Keys中。
然后,把私钥保存到Jenkins的凭据中,类型选择“SSH Username with private key”,Username 填写git bash设置的用户名。
3、继续配置剩余配置项
当成功添加完凭据后,在【Source Code Management】项中就可以选择刚才的凭据。
另外,针对下图的【Version】,可以通过以下命令查询,即得到版本号为11.7.6,但是只需要填两位,即11.7。
[root@localhost ~]# rpm -qa|grep gitlab
gitlab-ce-11.7.6-ce.0.el7.x86_64
4、构建任务
从上图可以看到,构建任务执行成功并生成对应的jar包到Jenkins的工作空间D:\Tools\Jenkins\workspace下面。如果是需要构建成功后把包上传到Nexus进行制品管理的话,请参考我的另外一篇文章:Nexus制品库安装使用指南
如果需要实现参数化构建(如基于Tag进行构建),请参考我的另外一篇文章:Jenkins任务基于Tag进行构建。
5、自动触发构建(CI)
该部分我会单独另外一篇文章专门介绍【这里留个随意门】。
三、集成自动化部署(Linux)
整个相对完整的持续构建环境(即CI)基本搭建完后,后续就要搭建持续部署。这里的目的是把上面构建的包自动上传到目的服务器进行部署。
1、配置SSH
前提: 已经安装了【publish over ssh】插件
第一步:把Jenkins服务器的公钥保存到目标服务器的目标登录用户的.ssh/authorized_keys文件中;(具体在linux中如何生成RSA 公私钥这里不再详述)
第二步:把Jenkins服务器的私钥保存到以下地方,并同时配置目标服务器IP、登录用户即目标文件夹。
2、配置构建任务
在上面配置过的构建任务中配置构建步骤。
第一步:在【Pre Steps】选择maven及设置对应的Goals为‘clean package’
第二步:在【Post-build Actions】中选择‘Send build artifacts over SSH’
第三步:配置以下信息:
Name:选择刚才新配置的服务器- SIT_Server;
Source files:指定要上传的文件,这里指定里以jar结尾的包。其中**/指的是Jenkins的工作目录(本机Jenkins的工作目录为D:\Tools\Jenkins\workspace)
Remove prefix:指去掉source files处填写的jar包所在的工作Jenkins目录之后(即D:\Tools\Jenkins\workspace)和*.jar包之前的那几层文件夹(即target文件夹)。否则,到时传到SIT服务器上的文件为带target文件夹的*.jar包。
3、构建任务
从下图构建日志可以看到,对应构建完的callcenter-1.0.0.jar都被上传到SIT服务器上的对应目录/tmp/onboard/中。
另外,当构建成功后,会收到系统发出来的类似以下的一封邮件。