使用dokcer的jenkins容器实现docker-compose自动化部署,并使用gitee的WebHooks触发自动打包

项目准备:

  1. 腾讯云服务器
  2. gitee仓库
  3. 支持docker-compose打包的nestjs项目代码

详细查看:从0搭建nestjs项目并部署到本地docker

一、腾讯云服务器系统重装

使用CentOS7.6-Docker20的容器镜像

image.png

进入服务器检查docker、docker-compose版本


[root@VM-12-6-centos ~]# docker -v

Docker version 20.10.5, build 55c4c88

[root@VM-12-6-centos ~]# docker-compose -v

docker-compose version 1.28.6, build 5db8d86f

设置docker开机启动


sudo systemctl enable docker

sudo systemctl start docker
二、安装jenkins容器

这里提供两种方法

1、命令安装

拉取jenkins镜像,会自动获取最新版本

docker pull jenkins/jenkins 

运行jenkins容器


docker run -u root -d \

-p 10240:8080 -p 10241:50000 \

-v /etc/localtime:/etc/localtime \

-v ./home/jenkins_home/:/var/jenkins_home \

-v /var/run/docker.sock:/var/run/docker.sock \

-v /usr/bin/docker:/usr/bin/docker \

-v /usr/local/bin/docker-compose:/usr/local/bin/docker-compose \

--name jenkins --privileged=true --restart=always jenkins/jenkins
2、docker-compose安装

本地创建docker-compose.yml文件并导入服务器根目录



version: "3.0"


services:

jenkins:

image: jenkins/jenkins

container_name: jenkins

volumes:

- ./home/jenkins_home/:/var/jenkins_home

- /var/run/docker.sock:/var/run/docker.sock

- /usr/bin/docker:/usr/bin/docker #可以在容器内使用docker命令

- /usr/local/bin/docker-compose:/usr/local/bin/docker-compose #可以在容器内使用docker-compose命令

user: root

ports:

- "10240:8080"

- "10241:50000"

expose:

- "50000"

- "8080"

privileged: true

restart: on-failure # 自动重启

environment:

- TZ=Asia/Shanghai # 解决容器 时区的问题

服务器执行docker-compose up -d即可

执行成功后即可打开 服务器ip:10240 访问jinkins

image.png

三、配置jenkins
1、解锁jenkins

查询jenkins容器logs

docker logs jenkins 

复制此串解锁密码粘贴到jenkins解锁

image.png

2、安装jenkins插件

使用推荐的即可

image.png

3、创建jenkins用户

根据提示创建jenkins用户即可,一般使用admin作为账号

4、安装gitee插件

image.png

选择不重启安装

image.png

安装完成后手动重启jenkins容器 docker restart jenkins

四、创建jenkins任务

使用自由风格创建

image.png

1、添加gitee url 并新增gitee凭证

image.png

填写gitee的账号密码

image.png

添加后选择凭证即可

image.png

2、配置gitee WebHooks

触发url

image.png

生成密码

image.png

在gitee配置webhooks

image.png

3、增加构建步骤

选择shell

image.png

cd /var/jenkins_home/workspace/nest-demo // 进入目录 docker-compose stop | true // 停止所有服务,买的服务器太拉胯,2C2G不停止会构建失败 docker-compose up -d --force-recreate --no-deps --build --remove-orphans server_demo 

配置完成后保存即可

四、测试

在gitee webhooks点击测试尝试触发jenkins

image.png

查看控制台输出

image.png

显示成功,此时会出现和本地打包一样的mysql账号权限问题,配置一下即可


docker exec -it mysql_demo /bin/bash

mysql -uroot -p123456

CREATE USER 'demo_user'@'%' IDENTIFIED BY '123456';

GRANT ALL ON *.* TO 'demo_user'@'%';

ALTER USER 'demo_user'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

flush privileges;

使用postman测试 

image.png

 查看logs 

image.png

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末自行领取】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐