📣读完这篇文章里你能收获到
- 全文采用图文形式讲解
- 学会使用Harbor配置项目
- 学会在Jenkins中配置Harbor推送权限
- 使用Jenkins和Harbor进行持续集成的实践
- 感谢点赞+收藏,避免下次找不到~
文章目录
- 一、准备工作
- 1. 环境准备
- 2. 修改Docker配置文件
- 3. Docker登陆Harbor
- 4. Harbor项目准备
- 二、配置 Jenkins 任务
- 1. 构建一个自由风格的软件项目
- 2. 选择 Git 并填写你的代码仓库 URL
- 3. 参数化构建过程
- 4. 构建触发器
- 三、保存并启动 Jenkins 任务
- 1. 参数化构建任务
- 2. 查看Harbor项目
- 四、持续集成解决方案
- 1. 基于 Webhook 的方案
- 五、异常处理
- 1. Jenkins中Docker Push时没权限
- 1.1 现象及原因
- 1.2 解决方式
在现代软件开发中,自动化部署是提高效率和可靠性的关键。本文将带你深入探索如何使用Jenkins和Harbor实现.NET Core项目的自动化部署。我们将一步步指导如何配置Jenkins、Harbor和Docker环境,以及使用最佳实践来简化部署流程。
一、准备工作
1. 环境准备
- Docker环境
- DockerFile文件(需要提前写好DockerFile文件)
2. 修改Docker配置文件
$ vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://k728i8z5.mirror.aliyuncs.com"],
"insecure-registries":["harborip:port"]//添加harbor地址
}
- 重新启动Docker
systemctl daemon-reload
systemctl restart docker
3. Docker登陆Harbor
docker login harborip:port
# 退出登陆则为:docker logout harborip:port
#2. 把.docker复制到/var/lib/jenkins目录下
cp -r /root/.docker/ /var/lib/jenkins/
#3. 修改文件夹权限
cd /var/lib/jenkins/
chown -R jenkins.jenkins .docker
4. Harbor项目准备
- 提前新建一个devops项目
二、配置 Jenkins 任务
1. 构建一个自由风格的软件项目
2. 选择 Git 并填写你的代码仓库 URL
- 在 Jenkins 任务配置页面的 “源码管理” 中填写
3. 参数化构建过程
- 勾选参数化构建过程
- 添加文本参数
- 分别添加pName、pVersionPrefix、port、IMG
4. 构建触发器
- 在 “构建” 部分,点击 “增加构建步骤” 并选择 “执行Shell”
- 在命令框中输入以下命令:
export pVersion=${pVersionPrefix}_${GIT_COMMIT:0:8}_`date +%Y%m%d%H%M`
export container=${IMG}${pName}:${pVersion}
# 使用Docker构建镜像
docker build -t ${container} .
# 推送至Harbor仓库
docker push ${container}
# 检查容器是否存在
if docker inspect --type=container ${pName} >/dev/null 2>&1; then
# 停止容器
docker stop ${pName}
# 删除容器
docker rm ${pName}
fi
# 运行新的容器
docker run -d -p ${port}:80 --name ${pName} ${container}
三、保存并启动 Jenkins 任务
1. 参数化构建任务
- 保存 Jenkins 任务配置并返回主页
- 点击任务名称进入任务详情页面
- 点击 “立即构建"或者"通过参数构建”
Jenkins 将开始监测代码仓库并自动构建和部署 .NET Core 项目
2. 查看Harbor项目
四、持续集成解决方案
1. 基于 Webhook 的方案
- 在 Jenkins 项目中实现自动构建,持续集成,点击查看文章
五、异常处理
1. Jenkins中Docker Push时没权限
1.1 现象及原因
这是因为jenkins在推送镜像的时候使用的是jenkins的伪用户,那么既然要推送就要登录,那么首先在当前用户生成config.json
unauthorized: unauthorized to access repository: ocp/eureka-server, action: push: unauthorized to access repository: ocp/eureka-server, action: push
1.2 解决方式
#1. 当前用户使用docker login生成config.json
docker login http://ip:port
#2. 把.docker复制到/var/lib/jenkins目录下
cp -r /root/.docker/ /var/lib/jenkins/
#3. 修改文件夹权限
cd /var/lib/jenkins/
chown -R jenkins.jenkins .docker