vim /etc/hosts
192.168.xx.xxx gitlab.test.com
方法一:克隆项目到本地
git clone -b master http://gitlab.test.com/dev/jd.git
git remote -v
可以看到已经与该仓库建立了连接
方法二:与远程仓库建立连接
git remote add origin http://gitlab.test.com/dev/jd.git
git add .
git commit -m '第一次提交html代码'
git push
在gitlab可以看到刚才提交的html代码
1.创建一个freestyle的项目名称-freestyle-test
2.找到源码管理–选择git–>填写我们git项目的地址
此处的Credentials(凭证)填写的是Jenkins服务器的root用户的私钥,因为我更改了启动Jenkins的用户为root
这里一定要注意,高版本jenkins的配置文件,不是以前的/etc/sysconfig/jenkins
,更改它是不起作用的,高版本Jenkins的配置文件为/usr/lib/systemd/system/jenkins.service
,改它才有效果!!!
由于我们是在做测试,所以域名用的是假的,一定要在Jenkins服务器上做劫持,不然Jenkins不知道gitlab.test.com是谁
192.168.xx.xx gitlab.test.com
添加Jenkins的公钥到gitlab上,添加到对项目有权限的用户下
gitlab使用公钥加密,Jenkins通过凭据的私钥解密。这样Jenkins就能获取到项目的代码了。
接下来就该发布项目了,发布前,先准备好对应的环境。lb+两台webservers
负载均衡配置
vim proxy_html.test.com.conf
upstream web {
server 192.168.xx.xx1;
server 192.168.xx.xx2;
}
server {
listen 80;
server_name html.test.com;
location / {
proxy_pass http://web;
include proxy_params;
}
}
配置web集群
集群中的每台机器的配置都一样
vim /etc/nginx/conf.d/html.test.com.conf
server {
listen 80;
server_name html.test.com;
root /code/html;
location / {
index index.html;
}
}
web集群每台机器需要创建一个code目录
mkdir -p /code
将负载均衡的地址解析到写好的域名
192.168.xx.xxx html.test.com
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
1.进入到jenkins项目的目录中
2.将项目进行打包,打包到指定目录
3.将打包的内容推送到webservers集群
4.登陆到webservers执行解压、创建软连接等操作
#!/usr/bin/bash
webservers="192.168.xx.xx1 192.168.xx.xx2"
Date=$(date +%F-%H-%M)
Web_Dir=/opt
Web_Name=web_jd_${Date}
tar_code() { #打包项目的函数
cd /var/lib/jenkins/workspace/freestyle-test1 #进入到jenkins项目的目录中
tar czf ${Web_Dir}/${Web_Name}.tar.gz ./* #将项目的目录中的所有内容进行打包,打包到指定目录
}
scp_code() { #推送项目包的函数,将打包的内容推送到webservers集群
for host in ${webservers}
do
scp ${Web_Dir}/${Web_Name}.tar.gz root@$host:${Web_Dir} && \ #拷贝打包好的项目到集群机器的指定目录
ssh root@$host "cd ${Web_Dir} && \ #登陆到集群的机器(这就是为什么要Jenkins与webservers集群免密),进入存放项目代码包的目录
mkdir -p ${Web_Name} && \ #创建一个目录
tar xf ${Web_Name}.tar.gz -C ${Web_Name} && \ #解压项目包到刚才创建的目录
rm -f ${Web_Name}.tar.gz && \ #删除压缩包
rm -rf /code/html && \ #删除Nginx配置中,项目指定的根目录
ln -s ${Web_Dir}/${Web_Name} /code/html" #创建软连接
done
}
main() { #调用前面两个函数
tar_code
scp_code
}
main #调用main函数
不报错的情况下,就可以打开浏览器查看发布结果