Jenkins和Gitlab均采用Docker方式部署。Gitlab部署见以前的文章。
docker启动Gitlab:
docker run --detach --hostname IP --publish 8320:443 --publish 8321:8321 --publish 8322:22 --name gitlab --restart always --volume /data/dockervol/gitlab/config:/etc/gitlab --volume /data/dockervol/gitlab/logs:/var/log/gitlab --volume /data/dockervol/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
注意:
- hostname不能加端口
--publish 8321:80
解决wiki上传不了附件问题:修改/etc/gitlab/gitlab.rb
,增加external_url 'http://IP:port'
,因为设置了扩展url,docker内部不再是80端口,而是port定义的端口,所以外部还是用8321访问内部80会打不开,需要修改docker端口映射为--publish 8321:8321
。
Gitlab配置SSH Key
ssh-keygen -t rsa -b 4096 -C "admin@example.com"
cat ~/.ssh/id_rsa.pub
复制公钥添加到Gitlab,主要去掉里面的换行符。
测试:c
ssh -vT git@x.x.x.x -p 8322
Jenkins安装
docker run \
-u root \
--name jenkins \
--rm \
-d \
-p 49000:8080 \
-p 50000:50000 \
-v /data/jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
# 或
sudo apt-get install openjdk-8-jdk
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
建议直接安装在ubuntu,不然还要通过ssh执行宿主机bash。
编辑/etc/default/jenkins
, 修改 ----HTTP_PORT=8080----
,如果要修改home目录,请提前修改再开始Jenkins的初始化配置。
Jenkins设置时区和时间:
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
在Jenkins创建任务
首先获取私钥:
cat ~/.ssh/id_rsa
配置git仓库,需要录入上面获取的私钥。
执行Shell,注意在Jenkins上执行npm start
是可以执行,但是构建过程一直没结束,会一直阻塞;另外也创建不了会话,例如screen -S api
是不起作用的,也不知道是为什么。所以这里用pm2来管理node服务,对于vue项目,最好采用npm build
生成静态文件。
配置自动部署
1、Jenkins安装Gitlab插件
2、Jenkins构建触发器选择Build when a change is pushed to GitLab. GitLab webhook URL: XXX
,复制URL地址到Gitlab,Allowed branches选择Filter branches by regex
,Target Branch Regex可以输入.*master
,生成Secret token
,复制该值到Gitlab。
3、到Gitlab,找到Setting>Webhooks,输入刚刚的URL和Secret token,不选择Enable SSL verification
,点击Add webhook
即可,点击Test
可以进行测试。