使用jenkins构建自动化发布系统之构建jenkins
牛恒博 DevOps视角
jenkins安装
安装
设置jenkins目录 在catalina.sh 中定义jenkins
$ export CATALINA_OPTS="-DJENKINS_HOME=/path/to/jenkins_home/ -Xmx512m"
$ catalina.sh start
在linux环境变量中定义jenkins
$ export JENKINS_HOME=/path/to/jenkins_home/
$ catalina.sh start
在 context中定义jenkins-home
<Context ...>
<Environment name="JENKINS_HOME" value="/path/to/jenkins_home/" type="java.lang.String"/>
</Context>
安装及初始化
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
java -jar jenkins.war
http://localhost:8080
安装常用插件
选择安装
开始安装
插件安装完成后,开始配置admin的用户名密码。 开始使用jenkins
更改jenkins的家目录
jenkins的家目录默认路径在/root/.jenkins/路径。根据启动方式的不同,修改方式略有不同。
1.直接命令行启动java -jar jenkins.war
cat >>/etc/profile<<EOF
export JENKINS_HOME=/data/db/jenkins/
EOF
source /etc/profile
2.使用tomcat容器启动
vim /data/app/tomcat/bin/catalina.sh
export JENKINS_HOME=/data/db/jenkins/
# OS specific support. $var _must_ be set to either true or false.
3.修改jenkins.war包(不推荐)
vim jenkins /web.xml
<!-- if specified, this value is used as the Hudson home directory -->
<env-entry>
<env-entry-name>HUDSON_HOME</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>/data/db/jenkins/</env-entry-value> #填入路径
</env-entry>
开始安装插件
jenkins最常用的就是插件,所以我们从安装插件开始。
方法一
路径:系统管理-->管理插件,开始安装插件。
- Build Pipeline Plugin:build 流程配置插件。
- Gitlab Plugin :gitlab pull 插件。
- Gitlab Hook Plugin:gitlab 钩子插件。
- Build Authorization Token Root Plugin :用户权限验证插件。
- SonarQube Scanner for Jenkins :代码质量管理插件。
- Parameterized Remote Trigger Plugin :远程触发插件。
- AnsiColor(可选):这个插件可以让Jenkins的控制台输出的log带有颜色(就和linux控制台那样)
- Maven Integration plugin
- Extended Choice Parameter Plug-In: 图像界面配置多选参数
方法二
上传插件 Jenkins-插件管理-高级-上传插件
方法三
直接上传到文件目录(根据上文中密码文件的路径,可以知道jenkins的目录在/root/.jenkins/中)/root/.jenkins/plugins重启Jenkins
创建一个构建过程
输入项目名称--选择构建一个自由风格的软件项目
配置源码下载地址
添加gitlab的认证key,这里配置ssh的私钥
gitlab中添加ssh-key的公钥
配置构建过程
这里有个需要注意的地方,比如我们想要在远端的机器上执行相关的脚本怎么办?
一个原理: jenkins 在执行过程中,使用的是jenkins的用户在执行。
两种方法:
- 所有服务器跟jenkins做无密钥登录。
- 所有服务器的root做无密钥登录。
推荐使用第二种,因为发布的脚本,可能涉及权限的问题,如果使用jenkins可能会出现权限不足的情况。
最佳方案
sudo ssh -p 52113 [email protected] "/data/scripts/web-deploy.sh"
执行立即构建-查看控制台输出
解释说明:
jenkins会git clone到jenkins的/workspace上。
[root@linux-node1 web-build16:29:46]#pwd
/root/.jenkins/workspace/web-build
[root@linux-node1 web-build16:29:56]#ls -a
. .. .git index.html README.md
[root@linux-node1 web-build16:29:58]#
[root@linux-node1 web-build16:31:49]#cat /tmp/1.txt
2017-03-01
敬请等待下篇:Sonar代码质量管理