码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 『DevOps最佳实践』使用Jenkins和Harbor进行持续集成和交付的解决方案


    请添加图片描述

    请添加图片描述
    📣读完这篇文章里你能收获到

    • 全文采用图文形式讲解
    • 学会使用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地址
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 重新启动Docker
    systemctl daemon-reload
    systemctl restart docker
    
    • 1
    • 2

    3. Docker登陆Harbor

    docker login harborip:port
    
    # 退出登陆则为:docker logout harborip:port
    
    • 1
    • 2
    • 3

    image.png

    #2. 把.docker复制到/var/lib/jenkins目录下
    cp -r /root/.docker/ /var/lib/jenkins/
    
    #3. 修改文件夹权限
    cd /var/lib/jenkins/
    chown -R jenkins.jenkins .docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4. Harbor项目准备

    • 提前新建一个devops项目

    image.png

    请添加图片描述

    二、配置 Jenkins 任务

    1. 构建一个自由风格的软件项目

    image.png

    2. 选择 Git 并填写你的代码仓库 URL

    • 在 Jenkins 任务配置页面的 “源码管理” 中填写

    image.png

    3. 参数化构建过程

    1. 勾选参数化构建过程
    2. 添加文本参数

    image.png

    1. 分别添加pName、pVersionPrefix、port、IMG

    image.png

    4. 构建触发器

    1. 在 “构建” 部分,点击 “增加构建步骤” 并选择 “执行Shell”
    2. 在命令框中输入以下命令:
    export pVersion=${pVersionPrefix}_${GIT_COMMIT:0:8}_`date +%Y%m%d%H%M`
    export container=${IMG}${pName}:${pVersion}
    
    # 到Dockerfile文件所在目录
    # cd src
    
    # 使用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}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    请添加图片描述

    三、保存并启动 Jenkins 任务

    1. 参数化构建任务

    1. 保存 Jenkins 任务配置并返回主页
    2. 点击任务名称进入任务详情页面
    3. 点击 “立即构建"或者"通过参数构建”

    Jenkins 将开始监测代码仓库并自动构建和部署 .NET Core 项目

    image.png

    2. 查看Harbor项目

    image.png

    请添加图片描述

    四、持续集成解决方案

    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

    1.2 解决方式

    #1. 当前用户使用docker login生成config.json
    docker login http://ip:port
    
    • 1
    • 2


    image.png

    #2. 把.docker复制到/var/lib/jenkins目录下
    cp -r /root/.docker/ /var/lib/jenkins/
    
    #3. 修改文件夹权限
    cd /var/lib/jenkins/
    chown -R jenkins.jenkins .docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    请添加图片描述

    请添加图片描述

  • 相关阅读:
    android 33 适配升级踩坑
    computed 和 watch的区别
    uniapp插件,对接穿山甲广告sdk
    嵌入式芯片-NE555
    PDF控件Spire.PDF for .NET【安全】演示:从加密的 PDF 文档中删除密码
    软件公司如何提升效能?研发团队的北极星指标
    ESP8266-Arduino编程实例-OLED显示DS18B20传感器数据
    Java - Exception 和 Error 有什么区别?
    微软澳洲数据中心起火,仅3名员工值班
    Java ZGC 算法调优
  • 原文地址:https://blog.csdn.net/qq_34202873/article/details/131144899
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号