• .NET 微服务——CI/CD(3):镜像自动分发 老马


    如何通过Jenkins完成镜像分发?基本做法是:打包镜像→上传镜像到仓库→脚本分发。镜像仓库也有很多,比如docker hub、Harbor等,今天这一篇讲一下基于阿里云镜像仓库的操作。

    首先,准备一个阿里云镜像仓库,个人版是免费的。

    然后下载这个插件:

    Publish Over SSH

    这个插件主要用来远程登录服务器并执行脚本。

    插件安装完毕后,系统设置会多出这一项,戳图里这个按钮:

    然后,把服务器的ip、账户、密码填进去:

    配置好以后,最好点测试按钮试一下,如果没问题会输出“Success”

    接下来找到之前的工作流,新增构建步骤:

    选中刚才新增的server,编写脚本进行上传:

    echo "==========登录仓库=========="
    docker login --username=阿里云账户 --password=阿里云仓库密码 registry.cn-shenzhen.aliyuncs.com
    
    echo "==========上传镜像=========="
    docker tag mydotnet6 registry.cn-shenzhen.aliyuncs.com/命名空间/仓库名:latest
    docker push registry.cn-shenzhen.aliyuncs.com/命名空间/仓库名:latest
    
    echo "==========清理镜像=========="
    docker rmi -f mydotnet6
    docker rmi registry.cn-shenzhen.aliyuncs.com/命名空间/仓库名:latest

    手动构建一下,去看阿里云仓库:

    镜像自动上传,Get~

    接下来要从仓库拉取镜像并运行,该怎么做呢?想必聪明的你已经知道了——没错,还是同样的流程:添加SSH Server→添加构建步骤→编写Shell。添加并选择新的SSH Server,执行这些shell:

    echo "==========停止进程=========="
    docker kill -s KILL mydotnet6
    
    echo "==========删除容器=========="
    docker rm mydotnet6 
    
    echo "==========删除镜像=========="
    docker rmi -f registry.cn-shenzhen.aliyuncs.com/命名空间/仓库名:latest
    
    echo "==========登录仓库=========="
    docker login --username=阿里云账户 --password=阿里云仓库密码 registry.cn-shenzhen.aliyuncs.com
    
    echo "==========拉取新镜像=========="
    docker pull registry.cn-shenzhen.aliyuncs.com/命名空间/仓库名:latest
    
    echo "==========开始运行=========="
    docker run -itd -p 5000:80 --restart always --name=mydotnet6 registry.cn-shenzhen.aliyuncs.com/命名空间/仓库名:latest

    然后再次手动触发构建,去server02查看容器:

    访问一下:

    访问正常。手动构建没问题,那么自动构建呢?打开项目新增一个NB方法:

    Git提交,等待一段时间后直接刷新swagger:

    只需要Git上传代码就能完成这些,爽不?

    自动部署Get~

    小结

    看完这三篇文章,你应该可以成功搭建CICD环境了,然后你会发现它并不难。不过如果你想在生产环境应用它,可能会有些坑。当然,我已经踩过了,而且有些坑还给我的公司造成了损失。既然说到这里,当然不会看着同学们踩坑,所以我还会写个防踩坑指南,下一篇见。

    声明:未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
    本文原创发表于博客园,作者为暮城倾心。欢迎转载。Donation(扫码支持作者)↓

    微信
    支付宝
  • 相关阅读:
    【转载】中文分词整理
    【转载】浅谈事件冒泡与事件捕获
    【转载】SpringCloud-Eurek 心跳阈值说明
    【转载】Linux下查看CPU、内存占用率
    Linux内存、性能诊断中vmstat命令的详解
    【转载】springboot四 全局异常处理
    【转载】linux系统时间自动同步:ntp
    springboot整合三 共享session,集成springsession
    git把一个分支上的某个提交合并到另一个分支
    VS Code打开新的文件会覆盖窗口中的,怎么改
  • 原文地址:https://www.cnblogs.com/muchengqingxin/p/15768330.html
Copyright © 2020-2023  润新知