关于持续集成是什么,可以参考阮一峰老师的持续集成是什么?以及网上的一些资料。
基本环境搭建
从安装最Mini的CentOS开始,我们需要解决如下事情。
在CentOS中使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org *” 这是因为DNS配置错误,我装的是Cent OS 6.4 Server,没有图形界面,这个版本默认安装后,配置文件中没有配置DNS。需要通过更改配置文件来解决。方法如下:在命令提示符中输入vi /etc/sysconfig/network-scripts/ifcfg-eth0
用vi 打开这个文件后,接下来会出现截图的内容, 其中要注意两个配置(按下面的值去设置)。
ONBOOT=yes
MM_CONTROLLED=no
安装一些常用的工具
yum install net-tools
yum install wget
yum install vim
yum install git
搭建Java环境
步骤1:验证是否安装了Java。java -version
步骤2:下载JDK。运行以下:
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"
步骤3:安装下载好的JDK。rpm -ivh jdk-8u131-linux-x64.rpm
步骤4:设置环境变量。运行vim /etc/profile.d/java.sh
,然后写入以下语句:
#!/bin/bash
JAVA_HOME=/usr/java/jdk1.8.0_131/
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME
export CLASSPATH=.
保存关闭,执行命令chmod +x /etc/profile.d/java.sh
让它可以运行;最后执行命令source /etc/profile.d/java.sh
让环境变量失效。
步骤5:验证。java -version
,echo $JAVA_HOME
Jenkins搭建
步骤1:添加yum repos,运行以下命令,
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
步骤2:安装。yum install jenkins
。
步骤3:配置Jenkins文件。主要配置Jenkins的端口等,避免与其它软件冲突。主要方法如下:
$ sudo vim /etc/sysconfig/jenkins
# 修改运行端口为9999,默认为8080
JENKINS_PORT="8181"
重启Jenkins。sudo service jenkins start
步骤4:开启防火墙。
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload
步骤5:安装插件以及配置全局参数。
GitLab搭建
参考官方文档进行安装。
步骤1:安装必要的依赖
sudo yum install curl openssh-server openssh-clients postfix cronie
sudo service postfix start
sudo chkconfig postfix on
sudo lokkit -s http -s ssh
步骤2:下载
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
步骤3:配置与启动服务
sudo gitlab-ctl reconfigure
步骤4:修改端口以及地址。
1)修改Nginx端口以及地址监听的操作如下:
在文件/etc/gitlab/gitlab.rb中修改:
nginx['listen_addresses'] = ["0.0.0.0", "[::]"] # listen on all IPv4 and IPv6 addresses
nginx['listen_port'] = 8082
2)修改地址:在文件/etc/gitlab/gitlab.rb中修改,external_url '你想要的地址'
3)系统默认会用到8080端口作为启动时候的必须端口。
如果不想用8080端口的话,可以通过这样的操作:在/etc/gitlab/gitlab.rb中修改unicorn['port']=端口号
4)运行sudo gitlab-ctl reconfigure
步骤5:登录。第一次登录GitLab的用户名密码为root和5iveL!fe。首次登录后会强制用户修改密码。
常用命令:
sudo gitlab-ctl start # 启动所有 gitlab 组件;
sudo gitlab-ctl stop # 停止所有 gitlab 组件;
sudo gitlab-ctl restart # 重启所有 gitlab 组件;
sudo gitlab-ctl status # 查看服务状态;
sudo gitlab-ctl reconfigure # 启动服务;
sudo vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
sudo gitlab-ctl tail # 查看日志;
LDAP搭建
步骤1:安装
1)检查是否安装:rpm -qa | grep openldap
2)安装:
yum install -y openldap openldap-clients openldap-servers migrationtools
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap. /var/lib/ldap/DB_CONFIG
systemctl start slapd
systemctl enable slapd
3)验证端口:netstat -tlnp | grep slapd
步骤2:设置 OpenLDAP 的管理员密码
1)生成处理以后的管理员密码:
[root@bogon ~]# slappasswd
New password:
Re-enter new password:
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
2)新建文件chrootpw.ldif。{SSHA}xxxxxxxxxxxxxxxxxxxxxxxx为你在第1小步的时候生成的密码。
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
3)执行ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
步骤3:导入基本的Schema
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
步骤4:设置自己的Domain Name
1)首先要生成经处理后的目录管理者明文密码。
slappasswd
New password:
Re-enter new password:
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
2)新建文件。chdomain.ldif,并把以下内容写入文件。(需要把"dc=***,dc=***"替换成你自己的dc内容,需要把{SSHA}xxxxxxxxxxxxxxxxxxxxxxxx替换成刚才生成的密码)
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
read by dn.base="cn=Manager,dc=dynamax,dc=io" read by * none
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=dynamax,dc=io
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=dynamax,dc=io
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
dn="cn=Manager,dc=dynamax,dc=io" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=dynamax,dc=io" write by * read
3)执行:ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
4)再新建文件:basedomain.ldif,并将以下内容写入。并将一些dc替换成你自己的
dn: dc=dynamax,dc=io
objectClass: top
objectClass: dcObject
objectclass: organization
o: Dynamax
dc: Dynamax
dn: cn=Manager,dc=dynamax,dc=io
objectClass: organizationalRole
cn: Manager
description: Directory Manager
dn: ou=people,dc=dynamax,dc=io
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=dynamax,dc=io
objectClass: organizationalUnit
ou: groups
5)执行语句:ldapadd -x -D cn=Manager,dc=dynamax,dc=io -W -f basedomain.ldif (注意dc之类的替换)
步骤5:允许防火墙访问 LDAP 服务
firewall-cmd --add-service=ldap --permanent
firewall-cmd --reload
步骤6:查询。ldapsearch -x -b "dc=dynamax,dc=io" -H ldap://192.168.118.130
步骤7:安装客户端。选择有:phpLDAPadmin等。
Nexus搭建
Nexus现在为Nexus Repository Manager OSS 3.x。
安装
下载安装包:wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.4.0-02-unix.tar.gz
解压(我这边是解压到/usr/local中):sudo tar -zxvf nexus-3.4.0-02-unix.tar.gz
创建链接:sudo ln -s nexus-3.4.0-02 nexus
创建nexus用户:sudo useradd nexus
授权:
sudo chown -R nexus:nexus /usr/local/nexus
sudo chown -R nexus:nexus /usr/local/sonatype-work/
修改运行用户:
sudo vi /usr/local/nexus/bin/nexus.rc
# 修改一下内容
run_as_user="nexus"
修改端口号:
修改文件/usr/local/nexus/etc/nexus-default.properties中的application-port为你想要的端口号。
启动服务:在/usr/local/nexus/bin的目录下运行./nexus run &
注册为服务:
vi /etc/systemd/system/nexus.service
添加如下内容:
[Unit]
Description=nexus service
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nexus/bin/nexus start
ExecStop=/usr/local/nexus/bin/nexus stop
User=nexus
Restart=on-abort
[Install]
WantedBy=multi-user.target
安装并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable nexus.service
sudo systemctl start nexus.service
查看服务:
sudo systemctl status nexus.service
添加防火墙规则
Jenkins配置LDAP认证登录
简单介绍在Jenkins中使用LDAP进行认证的话需要哪些配置。
配置LDAP
在“系统管理 ”->“Configure Global Security”中,访问控制选择LDAP。为了预防能在万一配置不成功的情况下依然可以进行配置,可以先勾选上授权策略中的“ 任何用户可以做任何事(没有任何限制)”。
如下图配置LDAP:
配置详解:
- Server:配置LDAP的服务器地址
- root DN:配置根DN
- User search base:配置用户开始查找的DN
- User search filter:用户搜索过滤器,其实就是用户的登录标识
- Group search base:配置用户的组查找的DN
- Group search filter:组搜索过滤器,其实就是组名的标识
- Manager DN:LDAP服务器的管理账号
- Manager Password:LDAP服务器的管理密码
然后点击“Test LDAP settings”,然后输入用户名密码(注意,这边的用户名为uid的值)。查看是否LDAP的配置是正确的。
然后使用LDAP中的账号登录Jenkins。
授权策略
在LDAP中,我们新建2个Group(dev1和dev2),dev1组包含用户user1,dev2组包含用户user2。
也就是:
dn: ou=Group,dc=dynamax,dc=io
objectClass: organizationalUnit
ou: Group
dn: cn=dev1,ou=Group,dc=dynamax,dc=io
objectClass: posixGroup
objectClass: top
cn: dev1
memberUid: user1
gidNumber: 15107
dn: cn=dev2,ou=Group,dc=dynamax,dc=io
objectClass: posixGroup
objectClass: top
cn: dev2
memberUid: user2
gidNumber: 32679
在Jenkins中的配置如下:
注意:上图中红色框内的为选勾内容,蓝色框中的为必选内容。
项目授权策略
使用admin登录系统。新建2个job(dev1_job和dev2_job)。
如上图所示,点击“配置 ”按钮,对项目(任务)进行设置。
如下图所示,dev1_job配置用户组为dev1,dev2_job配置用户组为dev2。
值得注意的是“ Block inheritance of global authorization matrix”一定要勾选。
然后,用user1和user2登录Jenkins验证是否完成配置。
GitLab配置LDAP认证登录
关于GitLab中搭配LDAP权限的操作可以参考GitLab的文档。
下面的内容是一些简单的配置,为了就是省去看英文文档的麻烦。
在 /etc/gitlab/gitlab.rb
或者 /home/git/gitlab/config/gitlab.yml
中添加以下内容:
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-EOS # remember to close this block with 'EOS' below
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: '192.168.118.129'
port: 389
uid: 'uid'
method: 'plain' # "tls" or "ssl" or "plain"
allow_username_or_email_login: true
bind_dn: 'cn=Manager,dc=dynamax,dc=io'
password: 'gzhx0211'
active_directory: false
base: 'ou=People,dc=dynamax,dc=io'
user_filter: ''
EOS
然后运行以下命令让配置生效。gitlab-ctl reconfigure
OK,这样以后你就可以使用LDAP的用户登录了。接下来问题来了,怎么分配角色呢?貌似CE版本没有提供,不过我们可以使用程序进行开发。
Nexus配置LDAP认证登录
在安装Nexus 3.3.2-02以后,默认的用户名为admin,密码为admin123。用admin登录Nexus。
在“Security”->”LDAP”中配置LDAP的信息。
配置连接
点击“ Verify connection”如果连接成功则在屏幕的右上角弹出一个绿色的提示。
配置用户
如下图显示:
配置角色
如下图所示:
至此,CI需要的基本上就搭建OK了。剩下的Sonar和Jira等下次再搭建。