Docker学习-jenkins+github实现持续集成和部署

时间:2024-01-11 18:15:08

ChuanGoing 2019-12-15

  上一篇介绍了docker环境搭建,本篇继续深入,结合jenkins利用docker-compose容器编排简单介绍下如何实现个人学习的持续集成/部署。

本篇学习曲线:

1.安装/运行jenkins容器

2.asp.net core web项目配置

3.jenkins配置github代码管理

4.示例演示

安装/运行jenkins容器

1.登录服务器运行命令,拉取jenkins镜像(注意jenkins tag):

docker pull jenkins/jenkins

启动jenkins容器:

docker run -d --name jenkins -p : -p : -v /root/jenkins_home:/var/jenkins_home -v /usr/bin/docker:/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/bin/docker-compose:/bin/docker-compose jenkins/jenkins

上面命令稍作解释:-d标识后台运行,-name标识镜像名,-p指定主机端口-容器内部端口映射,-v标识主机目录-容器卷映射(将容器目录挂载到主机目录,以便持久化数据)

注意我这里-v /var/run/docker.sock:/var/run/docker.sock命令实现容器内部响应docker命令,详细说明请看关于/var/run/docker.sock

2.输入服务器ip+jenkins端口

Docker学习-jenkins+github实现持续集成和部署

jenkins容器运行后,第一次使用admin账号登录,admin密码可以在:/容器挂载路径/secrets/initialAdminPassword文件中查看。

登录后就是选择默认模式安装插件,等待插件安装完成后自动进入页面(如因网速等原因导致插件安装失败,去系统管理-插件管理手动安装即可)

进入到jenkins主页:

Docker学习-jenkins+github实现持续集成和部署

asp.net core web项目配置

1.新建asp.net core web项目并上传至github仓储

2.配置jenkins/github webhook,使得有代码提交到github后自动触发消息发送订阅目标

jenkins关联github webhook配置请参考:https://www.jianshu.com/p/07b60b788088

jenkins配置github代码管理

登录jenkins,新建*风格软件项目

Docker学习-jenkins+github实现持续集成和部署

源码管理设置项目地址即访问凭证

Docker学习-jenkins+github实现持续集成和部署

勾选如上选项(github代码提交自动触发构建任务)

Docker学习-jenkins+github实现持续集成和部署

构建脚本如上,简单说明下:

#移除docker构建过程临时镜像(无镜像名和tag:none<none>)

docker image prune -f

jenkins接收到github触发构建时间时,代码下载到:{容器挂载目录}/workspace/{jenkins项目名称},注意这里时在jenkins容器内执行shell命令,因此绝对路径为jenkins内部的绝对路径,进入到代码存储位置:cd /var/jenkins_home/workspace/WorkPipeline

执行docker-compose构建命令

有关于docker-compose.yml即Dockerfile文件,请看本篇末尾github项目链接

示例演示

提交代码,

Docker学习-jenkins+github实现持续集成和部署Docker学习-jenkins+github实现持续集成和部署

jenkins工作台可以看到正在构建

Docker学习-jenkins+github实现持续集成和部署

查看构建日志:

Docker学习-jenkins+github实现持续集成和部署

Docker学习-jenkins+github实现持续集成和部署

项目构建成功,docker-compose.yml文件中将主机端口映射到webonline容器5000端口

Docker学习-jenkins+github实现持续集成和部署

现在,浏览器输入:http://{服务器ip}:5000

Docker学习-jenkins+github实现持续集成和部署

web项目成功部署

本示例中的web项目及相关dockerfile配置见github链接:https://github.com/ChuanGoing/DockerMain.git