zoukankan      html  css  js  c++  java
  • 通过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”

     

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

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    [译] 关于CSS中的float和position
    【规范】前端编码规范——注释规范
    【规范】前端编码规范——jquery 规范
    【规范】前端编码规范——javascript 规范
    【规范】javascript 变量命名规则
    如何使用TestFlight进行Beta测试
    i o s 崩溃日志分析
    CocoaPods安装和使用教程
    iOS 程序切换后台
    iOS 百度地图获取当前地理位置
  • 原文地址:https://www.cnblogs.com/straycats/p/14065719.html
Copyright © 2011-2022 走看看