前言:最近想学习一下通过Jenkins实现自动化部署,源代码管理器用的是GitHub。如有需要的伙伴们可以尝试以下相关材料,有所了解可忽略。
CentOS下部署.NetCore
CentOS下使用Docker方式部署.NetCore
让我们开始进入正题,开始我们的自动化部署踩坑之路,希望整理后分享出来的教程能给有需要的伙伴避避坑。如有错误,欢迎交流。
1、安装Jenkins
安装Jenkins教程请参考:CentOS 7安装Jenkins
2、安装Docker和Git
# 安装docker-ce
yum -y install docker-ce
# 查看版本,测试是否安装成功
docker version
# 安装git客户端
yum install -y git
# 查看版本,测试是否安装成功
git --version
3、新建任务
4、从Github拿到仓库地址和Token
(4-1)仓库地址
(2-1)Token
5、在Jenkins配置Github项目地址
在Jenkins点击源码管理选择Git,Repository URL(仓库地址)填写步骤(4-1)仓库地址,也就是你Github项目的https地址
项目属于私有的,所以需要在下面添加Github用户名密码(密码填写Github Token参考步骤(2-1)Token)
选择配置的账号
6、立即构建
构建过程中常见错误
错误:ERROR: Error fetching remote repo 'origin'
解决方案:Jenkins构建过程中报错误Error fetching remote repo ‘origin‘
错误:ERROR: Error cloning remote repo 'origin'
时而出现这个错误,时而成功,猜测是由于使用Github网络原因。如有了解具体原因的知情小伙伴,可在评论区分享。 (为了验证是否是Github的原因,我后面将Github改为Gitee,多次构建都成功)
根据控制台输出可知道构建工作空间路径,打开该路径发现Github项目已经被拉取下来。仅仅拉取下来还不够,我们希望能自动部署到Docker。
7、生成Dockerfile文件
8、配置执行shell
shell命令
#!/bin/bash
echo ---------------获取短版本号...--------
GITHASH=`git rev-parse --short HEAD`
# # PS:根据vs生成的Dockerfile文件中的一些执行路径可以发现是要与项目文件同级,所以这边需要把他移动到与项目文件同级。
echo ---------------移动Dockerfile文件到当前文件...--------
mv WebApplication1/Dockerfile .
echo ---------------Building Docker Image...--------
docker build -t jkdemo:$GITHASH .
echo ---------------将短版本号标记为最新版本...--------
docker tag jkdemo:$GITHASH jkdemo:latest
echo ---------------删除当前运行的容器...----------
docker rm -f jkdemo
echo ---------------Launching Container...----------
docker run -d -p 5001:80 --name jkdemo jkdemo:latest
9、再次立即构建
10、测试
根据shell执行,运行的容器端口为5001