同步操作将从 turnon/linux-tutorial 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
环境要求
- JDK:JDK7+,官网推荐是 JDK 8
- Jenkins:2.190.1
Jenkins 是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对 CI 加以理解。
CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是 CI/CD 的大概工作模式。
更详细内容请参考:Jenkins 官方安装文档
安装步骤如下:
(1)下载并解压到本地
进入官网下载地址,选择合适的版本下载。
我选择的是最新稳定 war 版本 2.89.4:http://mirrors.jenkins.io/war-stable/latest/jenkins.war
我个人喜欢存放在:/opt/software/jenkins
mkdir -p /opt/software/jenkins
wget -O /opt/software/jenkins/jenkins.war http://mirrors.jenkins.io/war-stable/latest/jenkins.wa
(2)启动
如果你和我一样,选择 war 版本,那么你可以将 war 移到 Tomcat 的 webapps 目录下,通过 Tomcat 来启动。
当然,也可以通过 java -jar
方式来启动。
cd /opt/software/jenkins
nohup java -jar jenkins.war --httpPort=8080 >> nohup.out 2>&1 &
(1)下载安装
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
(2)启动
systemctl start jenkins
http://localhost:8080
.Jenkins 是一个强大的 CI 工具,虽然本身使用 Java 开发,但也能用来做其他语言开发的项目 CI。下面讲解如何使用 Jenkins 创建一个构建任务。
登录 Jenkins, 点击左侧的新建,创建新的构建任务。
跳转到如下界面。任务名称可以自行设定,但需要全局唯一。输入名称后选择构建一个自由风格的软件项目(其他选项不作介绍)。并点击下方的确定按钮即创建了一个构建任务。之后会自动跳转到该 job 的配置页面。
新建自由风格的软件项目
下图是构建任务设置界面,可以看到上方的几个选项**"General", "源码管理", "构建触发器","构建环境", "构建", "构建后操作"**。下面逐一介绍。
General 是构建任务的一些基本配置。名称,描述之类的。
重要配置项:
点击右方的问号图标可以查看帮助信息。
Source Code Management,即源码管理,就是配置你代码的存放位置。
*/master
表示 master 分支,也可以设置为其他分支。Build Triggers,即构建触发器,用于构建任务的触发器。
配置说明:
H/30 * * * *
,表示每隔 30 分钟进行一次构建。Build Environment,即构建环境,配置构建前的一些准备工作,如指定构建工具。
Build,即构建。
点击下图中的 Add build step 按钮,会弹出一个构建任务菜单,可以根据实际需要来选择。
【说明】
Post-build Actions,即构建后操作,用于构建完本项目的一些后续操作,比如生成相应的代码测试报告。
个人较常用的配置:
以上配置完成后,点击保存即可。
如上图所示,一切配置好后,即可点击 Build Now 开始构建。
登录 jenkins -> 系统管理 -> 系统设置
配置请看下图:
重要配置:
SSH Servers: 由于 jenkins 服务器公钥文件我已经配置好,所以之后新增 SSH Servers 只需要配置这一项即可。
Name: 自定义,需要全局唯一。
HostName: 主机名,直接用 ip 地址即可。
Username: 新增 Server 的用户名,这里配置的是 root。
Remote Directory: 远程目录。jenkins 服务器发送文件给新增的 server 默认是在这个目录。
在 gitlab 的 project 页面 打开settings,再打开 web hooks 。点击**"ADD WEB HOOK"** 添加 webhook。把之前 jenkins 配置中的那个 url 添加到这里,添加完成后,点击**"TEST HOOK"**进行测试,如果显示 SUCCESS 则表示添加成功。
配置 phpunit.xml
phpunit.xml 是 phpunit 这个工具用来单元测试所需要的配置文件。这个文件的名称同样也是可以自定义的,但是要在"build.xml"中配置好名字就行。默认情况下,用"phpunit.xml", 则不需要在"build.xml"中配置文件名。
build.xml 中 phpunit 配置
fileset dir 指定单元测试文件所在路径,include 指定包含哪些文件,支持通配符匹配。当然也可以用 exclude 关键字指定不包含的文件。
由于 jenkins 默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,本文将使用 Role Strategy Plugin。基于这个插件的权限管理设置请参考这篇文章:http://blog.csdn.net/russ44/article/details/52276222,这里不作详细介绍。
至此,就可以用 jenkins 周而复始的进行 CI 了,当然 jenkins 是一个强大的工具,功能绝不仅仅是以上这些,其他方面要是以后用到,我会更新到这篇文章中。有疑问欢迎在下方留言。
如果不知道初始登录密码,可以通过以下方式查看:
执行命令 cat /root/.jenkins/secrets/initialAdminPassword
,打印出来的即是初始登录密码。
1.执行 vim /root/.jenkins/config.xml
,删除以下内容
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
<denyAnonymousReadAccess>true</denyAnonymousReadAccess>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>true</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>
2.重启 Jenkins 服务;
3.进入首页>“系统管理”>“Configure Global Security”;
4.勾选“启用安全”;
5.点选“Jenkins 专有用户数据库”,并点击“保存”;
6.重新点击首页>“系统管理”,发现此时出现“管理用户”;
7.点击进入展示“用户列表”;
8.点击右侧进入修改密码页面,修改后即可重新登录。
现象:输入密码后,卡在 check 页面
原因:jenkins 在安装插件前总是尝试连接 www.google.com,来判断网络是否连通。谷歌的网站在大陆是连不上的,所以会出现这个问题。
解决方案:执行vim /root/.jenkins/updates/default.json
,将 connectionCheckUrl
后的 www.google.com
改为 www.baidu.com
。然后重启即可。
或者直接执行命令:
sed -i 's/www.google.com/www.baidu.com/g' /root/.jenkins/updates/default.json
现象:卡在 getting startted 页面
原因:jenkins 默认的插件下载服务器地址在国外,如果不翻墙下载不了。
解决方案:执行vim /root/.jenkins/hudson.model.UpdateCenter.xml
,将 <url>
改为 http://mirror.xmission.com/jenkins/updates/update-center.json
。然后重启即可。
或者直接执行命令:
sed -i '/^<url>/s/.*/<url>http:\/\/mirror.xmission.com\/jenkins\/updates\/update-center.json<\/url>/g' /root/.jenkins/hudson.model.UpdateCenter.xml
(1)修改 jenkins 用户
vim /etc/sysconfig/jenkins
修改用户
$JENKINS_USER="root"
(2)修改 Jenkins
相关文件夹用户权限
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
(3)重启 Jenkins
systemctl restart jenkins
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。