环境安装:
sudo yum install -y curl policycoreutils-python openssh-server perl
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld
安装Postfix以发送通知电子邮件,可以使用其它smtp的途径而跳过此步骤(非必须)
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
安装镜像仓库:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
gitlab-ee安装:
EXTERNAL_URL为gitlab的访问地址,需要在客户端机器上配置hosts:
gitlab服务器的ip地址 iefihz.gitlab.com
sudo EXTERNAL_URL="http://iefihz.gitlab.com:8888" yum install -y gitlab-ee
或者EXTERNAL_URL直接配置成ip+端口号,而不使用主机名的方式
vim /etc/gitlab/gitlab.rb //如有必要修改配置
gitlab-ctl reconfigure //修改完配置后,需要重新配置
gitlab-ctl restart //重启服务,尽管服务启动完成后,仍需稍等片刻才能正常访问
这里以163邮箱为例,其他邮箱配置请查看官方文档:https://docs.gitlab.com/omnibus/settings/smtp.html
执行:
vim /etc/gitlab/gitlab.rb
在此文件中新增以下内容:
# Smtp configuration
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "[email protected]" #改为真实的163邮箱
gitlab_rails['smtp_password'] = "xxx" #邮箱密码
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
# If your SMTP server does not like the default 'From: gitlab@localhost' you
# can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = '[email protected]' #改为真实的163邮箱
gitlab_rails['gitlab_email_reply_to'] = '[email protected]' #改为真实的163邮箱
最后执行gitlab-ctl reconfigure重新加载配置
firewall-cmd --zone=public --add-port=8888/tcp --permanent
systemctl reload firewalld
通过http://iefihz.gitlab.com:8888去访问
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 -y jenkins //如果镜像源连接不同,则到官网下载对应版本的rpm包,使用rpm -ivh jenkins的rpm包进行安装
vim /etc/sysconfig/jenkins //修改端口,默认为8080,改为8250或其它没被占用的端口
vim /etc/init.d/jenkins //指定java命令的位置,如下图所示
自启动配置:
chkconfig --add /etc/init.d/jenkins
chkconfig jenkins on
systemctl start jenkins.service #启动
systemctl stop jenkins.service #停止
systemctl status jenkins.service #查看状态
systemctl restart jenkins.service #重启
开放8250端口
firewall-cmd --zone=public --add-port=8250/tcp --permanent
systemctl reload firewalld
通过:http://ip:port去访问:
查看初始密码:cat /var/lib/jenkins/secrets/initialAdminPassword
1)插件安装:系统管理》插件管理》可选插件》安装GitLab Plugin、Generic Webhook Trigger Plugin、Publish over SSH
2)系统管理》系统配置》Publish over SSH
这个插件的主要作用:通常情况下,jenkins服务器和实际的项目不是同一个服务器,主要用于把jenkins拉取到的代码远程发送到实际的服务器上,并执行响应的脚本,如果是在同一个服务器,且系统的用户相同,则不需要此配置。
i.登录jenkins服务器,查看该用户(启动jenkins的用户)是否已经配置了ssh秘钥
cat ~/.ssh/id_rsa #如果有此文件,则已经有配置过了,可以直接使用,如果不存在,则需要生成公私秘钥
ssh-keygen -t rsa #指定生成的路径(不指定默认为当前用户的.ssh/id_rsa和id_rsa.pub)、秘钥的密码(不指定默认为空)
ii.把~/.ssh/id_rsa和id_rsa.pub复制到/var/lib/jenkins/.ssh/下,如果没有此目录,先创建:
mkdir -p /var/lib/jenkins/.ssh/ #如果没有此目录,先创建
cp ~/.ssh/id_rsa ~/.ssh/id_rsa.pub /var/lib/jenkins/.ssh/ #复制到/var/lib/jenkins/.ssh/
iii.配置免密登录
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.xxx.xxx
指令说明:ssh-copy-id -i 公钥 远程服务器的用户@远程服务器的ip,本人测试搭建用的是root用户,实际中不建议使用root用户
测试免密登录是否配置成功:
ssh 192.168.xxx.xxx
ⅳ.回到jenkins界面》系统管理》系统配置》Publish over SSH
ⅴ.jenkins任务配置
生成secret token,gitlab钩子要用到:
脚本内容,仅供参考:
[root@iefihz bbb]# cat start.sh
export PATH=/usr/local/node/bin:$PATH
cd /root/bbb
npm install
netstat -apn|grep 8081|grep LISTEN|awk -F' ' '{print $7}'|awk -F'/' '{print $1}'|xargs kill -9
nohup npm run dev > ./sys-info.log 2>&1 &
具体项目》Settings》Webhooks
最后测试一下是否配置成功:
如果提示:Requests to the local network are not allowed,配置如下:
最后,通过提交代码,去jenkins中查看,是否自动触发了构建