• 通过jenkins实现持续发布


    ===============================================

     2020/11/30_第1次修改                       ccb_warlock

     

    ===============================================

    部署完jenkins(https://www.cnblogs.com/straycats/p/14033405.html)后,接着就是使用jenkins实现持续发布.net项目,下面架构图是基于《京东基础架构建设之路》的解决方案做了些调整。

    1.提交源码

    2.触发Jenkins任务

    3.远程执行shell脚本,操作构建服务器

    4.构建服务器拉取源码构建打包

    5.将包和Dockerfile发给镜像构建节点

    6.在镜像构建节点生成镜像

    7.将镜像上传至仓库

    8.部署容器

     

    这里合并了构建功能到开发服务器,故接着就是配置开发服务器、jenkins服务器即可。


    一、选择镜像仓库

    可以选择一些免费的镜像仓库(dockerhub、阿里云等等)用于存放你构建的镜像。如果需要搭私有仓库可以选择搭建基于https的harbor(https://www.cnblogs.com/straycats/p/8850693.html

     

    本次示例就是选择搭建了私有的harbor,并将修改了host使用myharbor.cn。

     


    二、配置开发服务器

    2.1 安装docker

    centos7上部署参考 https://www.cnblogs.com/straycats/p/10680502.html

     

    2.2 安装git

    sudo yum install -y git

    2.3 拉取源码

    假设代码的项目为abc,开发分支是dev,这里先将源码拷贝到目录/opt/source目录下。

    cd /opt/source
    git clone -b dev <git地址>

    2.4 创建构建目录

    mkdir -p /opt/publish/abc/published

    2.5 编写远程执行用的shell脚本

    mkdir -p /opt/build/abc
    cd /opt/build/abc
    vi build.sh

    # 将下面的内容保存到build.sh中。

    #!/bin/bash
    source_dir="/opt/source/abc"
    publish_dir="/opt/publish/abc/published"
    
    echo "==> Begin build project <=========="
    cd $source_dir
    sudo git checkout dev
    
    commit_id_old=`git rev-parse HEAD`
    sudo git pull
    commit_id_current=`git rev-parse HEAD`
    
    if [ $commit_id_old = $commit_id_current ];then
        echo "==> Branch dev has not changed, exit <=========="
        exit 1
    fi
    
    sudo rm -rf $publish_dir
    sudo mkdir -p $publish_dir
    sudo dotnet publish -o $publish_dir
    echo "==> End build project <=========="
    
    echo "==> Begin build image <=========="
    # Dockerfile文件放在源码的Server目录下
    sudo yes| cp -rf $source_dir/Server/Dockerfile /opt/publish/abc
    cd /opt/publish/abc
    # 这里myharbor.cn是私有的harbor,并修改了本地host
    sudo docker build --rm -t myharbor.cn/abc/abc:latest .
    sudo docker push myharbor.cn/abc/abc:latest
    echo "==> End build image <=========="
    
    echo "==> Begin deploy stack <=========="
    cd /opt/docker/compose/abc
    sudo docker stack rm abc-stack
    sudo docker stack deploy -c abc-stack.yml abc-stack
    echo "==> End deploy stack <=========="

    三、部署jenkins服务器

    3.1 部署jenkins服务器

     参考:https://www.cnblogs.com/straycats/p/14033405.html

     

    3.2 配置密钥对

     参考:https://www.cnblogs.com/straycats/p/14058205.html

     

    3.3 配置凭据

     <明天继续写后面的内容>

     

     

     

     

     

     

    3.4 安装jenkins插件Publish Over SSH

     

    3.5 创建jenkins任务

    1)点击“新建任务”

    2)构建环境,勾选“Add timestamps to the Console Output”

     

     <明天继续写后面的内容>

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    python3爬虫--反爬虫应对机制
    mongodb与mysql区别(超详细)
    cookie和session运行机制、区别
    flask轻量级框架入门
    python自定义元类metaclass,约束子类
    MongoDB ObjectId类型 序列化问题
    【python 内置模块】 返回一个规定长度的随机字符串
    使用PyMongo有多重,使用MongoClientwith的实例时必须小心 fork()
    MySQL 服务正在启动 . MySQL 服务无法启动。 服务没有报告任何错误。
    分布式文件系统架构HDFS、FastDFS、Haystack
  • 原文地址:https://www.cnblogs.com/straycats/p/14065719.html
Copyright © 2020-2023  润新知