首先声明,我时在centos7.4上安装的。其他centos应该类似。
安装配置:
* https://www.cnblogs.com/gcgc/p/5631385.html 讲了如何添加触发条件。
* http://blog.csdn.net/a464057216/article/details/51865148
* http://blog.csdn.net/secretx/article/details/51066395
如同《Gitlab搭建内网服务器一篇就够》,本文分两部分,第一部分介绍传统方式安装Jenkins,第二部分介绍Docker安装(推荐)。
#yum install java
#wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
#rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
#yum -y install jenkins
配置文件在/etc/sysconfig/jenkins,web服务(jetty)默认使用8080端口,若要修改,编辑配置文件里JENKINS_PORT变量;建议改成8081(如果你用gitlab的unicorn也默认8080端口),把8080留给gitlab。
然后设置防火墙、启动/开机启动jenkins
#firewall-cmd --zone=public --add-port=8081/tcp --permanent
#firewall-cmd --reload
#systemctl start jenkins
#systemctl enable jenkins
注: firewall-cmd命令含义:
1. –zone #作用域
2. –add-port=8081/tcp
3. #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效。
日志存储在/var/log/jenkins/jenkins.log。
接着就可浏览器访问localhost:8081,访问不了的话,看看是否防火墙。
根据提示输入验证随机密码,然后安装插件,此时可能提示
“Jenkins maybe offline”,因为你没有科学上网,所以挂个VPN吧骚年。
如果日后想要升级的话,直接重新 #yum -y install jenkins 即可。
安装成功后,登录到localhost:8081,系统要求你Unlock Jenkins:
#cat /var/lib/jenkins/secrets/initialAdminPassword
看一下系统中的那串随机密码然后输入。
接着会给你推荐插件,你可以选择Install suggested plugins,也可以Customize。
如果自定义,建议必装的插件:
* Git Plugin:使用Git作为源代码管理
* Python Plugin:Adds the ability to execute python scripts as build steps.
* Violations:代码质量检测,支持pylint、jslint等
* Email Extension Plugin: 邮件通知服务。
*
安装好docker后,下载一个lts版本:
# docker pull registry.docker-cn.com/jenkins/jenkins:lts
# 然后重命名成[jenkins/jenkins:lts]
———-如下步骤为可选—————
如果你想让jenkins的数据都保存到指定目录,那就pull完毕后,用docker tags来重命名,然后在centos上创建一个jenkins/data数据卷目录,如:
#/home/kyle/dockers/jenkins/data
#sudo chown -R 1000 jenkins
注意一定要给jenkins目录普通用户的权限,否则会出现下面错误:
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
————–可选结束———————–
在jenkins下见一个docker-compose.yml,内容如下:
version: '2'
services:
jenkins:
image: 'jenkins/jenkins:lts'
restart: unless-stopped
container_name: jenkins
user: root
ports:
- '8080:8080'
volumes:
- './data/:/var/jenkins_home'
external_links: # 连接到gitlab容器
- gitlab:gitlab.etaray.com
>
完成后,docker-compose up -d即可启动。然后设置密码、安装插件等。
首先记住一点:所有要和Gitlab交互(推、拉代码)的,都需要SSH-key绑定授权。
然后看下图:
Git开发端(推上去提交)-->--Gitlab-->--Jenkins(拉下来构建)
所以要在你的Git开发端和Jenkins都要生成ssh-key。并且都要吧二者的id_rsa.pub传到gitlab的SSH-keys中。
先试试jenkins能否ping通gitlab的容器(ping container_name):
# docker exec -it jenkins ping gitlab
# docker network inspect gitlab_default
上面第二条能查出gitlab_default网络的信息(CONTAINERS应该有它们两个容器)。
上面完成后,依次:
- gitlab中,管理员登录,右上角头像 - 设置 - 访问令牌(API Token)
- 令牌名称随意,过期时间可不填,范围选择完全访问,复制令牌码。
- jenkins中,系统管理 - 插件管理中,安装【Gitlab Plugin】、【Build Authorization Token Root Plugin】,若不安装后者则Gitlab的Test Hook时可能报403错。
- 系统管理 - 系统设置中,下拉找到【Gitlab】配置栏。
- connection name 随便选。地址输入Gitlab访问地址【http://X.X.X.X】。
- Credentials选择添加,弹出框的Kind选择GitLab API token,在API token粘贴令牌码,其余默认或不填。
- 点击完成回到页面,就可以下拉选择该token了。
- 点击测试,出现Success即可配置完成。
- 找到【Git plugin】(若没有请安装),配置用户名密码(因为要用此账户拉取代码)。
- 在jenkins机器上使用ssh-keygen生成密钥并将公钥填到gitlab用户配置中。
Gitlab Plugin官方说只支持freestyle和pipline风格的项目。另有Gitlab Hook插件(稍老旧)貌似可以替代它,具体没深究。
以上参考:https://www.cnblogs.com/bugsbunny/p/7919993.html
至此完成。后续也可以使用docker构建(前提要用Docker outside of Docker来将宿主机的Docker工具映射/暴露到Jenkins里以便其调用,因为Jenkins的镜像并没有封装docker)。具体可参考:http://blog.csdn.net/zhou8622/article/details/52259709。