容器化简易cicd(3):jenkins+gitlab 自动发布

  sre

共三页:

容器化简易cicd(1):kubernetes安装jenkins master

容器化简易cicd(2):jenkins slave安装

容器化简易cicd(3):jenkins+gitlab 自动发布

先实现手动构建+发布

gitlab凭据

在jenkins添加一下gitlab的账户凭据:
wwwww.png
fffffffffff.png
ggggggggg.png
hhhhhhhhhhhhh1.png

测试

还是新建一个freestyle构建,标签选择器maven
代码源选gitlab,地址抄下项目地址,凭据选刚才增加的。
qqqqqqqqqqq.PNG
构建方式还是shell构建,以下为例子:

DOCKER_HARBOR=hub.xxx.com       #harbor地址
DOCKER_HUB=DOCKER_HARBOR/xxx  #仓库地址
DOCKER_HUB_USER=jenkins         #harbor上创建一个管理员用户
DOCKER_HUB_PASSWORD=123456
MODULE_LIST="zuul admin open-api"   #枚举一下需要运行的子项目jar包
K8S_NS=xxx      #项目跑在xxx空间
BUILD=BUILD_NUMBER     # BUILD_NUMBER是构建号,jenkins自带的

#编译 打镜像
/usr/local/maven/bin/mvn  compile package -DskipTests -Dmaven.compile.fork=true -Pprod  #fork开启多线程编译 -P接配置文件的环境
docker login --username=DOCKER_HUB_USERDOCKER_HARBOR --password DOCKER_HUB_PASSWORD
for module inMODULE_LIST;do   
cd module
docker build -f Dockerfile -tDOCKER_HUB/module:BUILD .  #循环打镜像,注意在项目的根目录放好Dockerfile
docker push DOCKER_HUB/module:BUILD
if [? -ne 0 ];then
    echo "module push error"
    exit 1
fi
cd ../
done

echo "image push sucess:"
for module inMODULE_LIST;do 
echo "DOCKER_HUB/module:BUILD"
done
# 没有用module来轮询,每个项目的子项目启动依赖可能不一样
kubectl set image deployments eureka-01 *=DOCKER_HUB/admin:BUILD -nK8S_NS
kubectl set image deployments eureka-02 *=DOCKER_HUB/zuul:BUILD -n K8S_NS
kubectl set image deployments eureka-03 *=DOCKER_HUB/open-api:BUILD -nK8S_NS

开始构建,发现启动了一个slave节点:
zzzzzzzzzzzzzzz.png
其实就是这个新pod:
xxxxxx.png
构建完成后,pod会释放掉
vvvvvvvvvvv.png

自动构建+发布

还是看下刚才的构建,看下触发器部分:
mmmmmmmmmmmmmm.png
增加了个远程触发,手动指定一个token即可。
我们现在可以用http://xxx.jenkins.xxx/构建/build?token=xxx来实现get触发构建。
没有成功,需要把匿名可读打开下:
cccccccccccccc.png
打开gitlab,找到需要构建的项目,填下刚才的触发url,其中Trigger只用勾上push eventsssl关闭即可。
vvvvvvvnbbbb.png
test,选push events,发现报403错误。
打开gitlab的安全配置,把跨域勾掉即可:

LEAVE A COMMENT

Captcha Code