Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。
官网地址
Jenkins的特征
① 开源的 Java 语言开发持续集成工具,支持持续集成,持续部署;
② 易于安装部署配置:可通过yum安装或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理;
③ 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告;
④ 分布式构建:支持Jenkins能够让多台计算机一起构建/测试;
⑤ 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等;
⑥ 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。
服务器列表
名称 | IP地址 | 安装的软件 |
---|---|---|
代码托管服务器 | 192.168.8.20 | Gitlab-12.4.2 |
持续集成服务器 | 192.168.8.19 | Jenkins-2.190.3,JDK1.8,Maven3.6.2,Git, SonarQube |
应用测试服务器 | 192.168.8.18 | JDK1.8,Tomcat8.5 |
百度网盘提取码:vcg1
配置环境变量
C:\Program Files\Java\jdk1.8.0_152\bin
官网
GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。
GitLab 和 GitHub 一样属于第三方基于 Git 开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加 SSHKey 等等。不同的是,GitLab 是可以部署到自己的服务器 上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放 在别人的服务器上吧?简单来说可把 GitLab 看作个人版的 GitHub。
hostnamectl set-hostname gitlab && su
hostnamectl set-hostname jenkins && su
hostnamectl set-hostname tomcat && su
[root@gitlab ~]#yum install -y policycoreutils openssh-server openssh-clients.x86_64 postfix
[root@gitlab ~]#systemctl start sshd && systemctl enable sshd
[root@gitlab ~]#systemctl start postfix && systemctl enable postfix
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
在线下载安装包:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
安装:
rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
修改 gitlab 访问地址和端口,默认为80,我们改为82 external_url 'http://192.168.8.20:82'
[root@gitlab ~]#vim /etc/gitlab/gitlab.rb
23 external_url 'http://192.168.8.20:82' #访问地址设为本机IP地址
1112 nginx['listen_port'] = 82 #监听端口改为82,前面的注释需要取消掉
[root@gitlab ~]#gitlab-ctl reconfigure
[root@gitlab ~]#gitlab-ctl restart
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload
Gitlab用户在组里面有5种不同权限:
Guest:可以创建issue、发表评论,不能读写版本库
Reporter:可以克隆代码,不能提交,QA、PM 可以赋予这个权限
Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限
Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限
Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限
我们要把源码上传到Gitlab的项目仓库中,在idea中Maven构建web项目,且进行环境设置
官网地址:http://www.jetbrains.com/idea/download
安装包自提: a3zs
这个路径是你的安装路径位置
-javaagent:D:\IntelliJ IDEA 2019.3.1\bin\jetbrains-agent.jar
默认设置直接apply—>ok
软件包:i0uq
运行Tomcat,但是会失败
解决方法如下
去tomcat的server.xml看一下(文件路径:C:\Program Files\Apache Software Foundation\Tomcat 8.5\conf),一般安装默认有个端口是-1,端口不能是-1,(数值在1-65535之间的任意一个整数,一般会选大于1024的,小于1024的一般被本地计算机程序占),改成8000就行。
我们建立了一个非常简单的web应用,只有一个index.jsp页面,如果部署好,可以访问该页面就成功了!
git 软件包下载: 3hid
退出重新打开一下
/usr/lib/jvm
yum install java-1.8.0-openjdk* -y
提取码:hf7t
下载页面:https://jenkins.io/zh/download/
安装文件:jenkins-2.277.4-1.1.noarch.rpm
192.168.8.19
服务器,进行安装 rpm -ivh jenkins-2.277.4-1.1.noarch.rpm
vim /etc/sysconfig/jenkins
修改内容如下:注意:如果用户使用默认,则需要在系统上创建jenkins用户
JENKINS_USER="root" JENKINS_PORT="8888"
systemctl start jenkins
http://192.168.8.19:8888
注意:本服务器把防火墙关闭了,如果开启防火墙,需要在防火墙添加端口
[root@jenkins ~]#cat /var/lib/jenkins/secrets/initialAdminPassword
修改配置文件安全功能禁用
vim /var/lib/jenkins/config.xml
<useSecurity>false</useSecurity>
//重启jenkins服务
systemctl restart jenkins
可以直接登录修改账号密码
修改jenkins中已有的用户名和ID
vim /var/lib/jenkins/users/users.xml
Jenkins 本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。
Jenkins->Manage Jenkins->Manage Plugins,点击Available
cd /var/lib/jenkins/updates
sed -i 's/http:\/\/updates.jenkins- ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
Jenkins->Manage Jenkins->Manage Plugins,点击Available,搜索"Chinese"
重启Jenkins后,就看到Jenkins汉化了,但可能部分菜单汉化不成功
版本升级(Jenkins 下载的是var 包)
我们可以利用 Role-based Authorization Strategy
插件来管理 Jenkins 用户权限
Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
Project roles(项目角色): 针对某个或者某些项目的角色
Slave roles(奴隶角色) :节点相关的权限
注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission
apple.*
,意思是只能操作apple开头的项目orange.*
,意思是只能操作 orange 开头的项目apple01
和orange01
结果为:
kali用户登录,只能看到 apple01 项目
jack用户登录,只能看到 orange01 项目
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便 Jenkins 可以和这些第三方的应用进行交互。
Credentials Binding
插件安装插件后,会多出来 “凭证” 菜单,在这里可以管理所有凭证
Username with password
:用户名和密码
SSH Username with private key
: 使用SSH用户和密钥
Secret file
:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
Secret text
:需要保存的一个加密的文本串,如钉钉机器人或Github的api token
Certificate
:通过上传证书文件的方式
常用的凭证类型有:
Username with password(用户密码)和 SSH Username with private key(SSH
密钥)
Git插件安装
Jenkins服务器安装 Git工具
[root@jenkins ~]#yum install git -y
[root@jenkins ~]#git --version
git version 1.8.3.1
添加凭证
选择"Username with password",输入Gitlab的用户名和密码,点击"确定"
找到 “源码管理”-> “Git”,在Repository URL 复制 Gitlab 中的项目 URL
保存配置后,点击构建”Build Now“ 开始构建项目
查看 /var/lib/jenkins/workspace/ 目录,发现已经从 Gitlab 成功拉取了代码到 Jenkins 中
[root@jenkins ~]#cd /var/lib/jenkins/workspace/
[root@jenkins /var/lib/jenkins/workspace]#ls
test01 test01@tmp test02 test02@tmp
/root/.ssh/
目录保存了公钥和私钥[root@jenkins ~]#ssh-keygen -t rsa
使用密钥对的形式构成成功