• 男神鹏:在外部 Coding 中如何实现 CICD


    零. 前置条件

     
    1. docker安装成功;
    2. 配置镜像加速;
      docker-machine ssh default
      sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile
      exit
      docker-machine restart default

    一. 构建基础镜像

     
    1. 运行centos基础镜像
      docker pull centos:centos7
      docker run -itd --privileged centos:centos7 /usr/sbin/init
      docker exec -it 容器ID /bin/bash
    2. 安装golang1.13
      tar zxvf /soft/go1.13.12.linux-amd64.tar.gz -C /usr/local
      vim /etc/profile.d/go.sh

     

    1. export GOROOT=/usr/local/go
    2. export PATH=$PATH:$GOROOT/bin
    3. export GOPATH=/root/go
    4. export PATH=$PATH:$GOPATH/bin

    source go.sh
    使用命令 go version验证golang是否安装成功

    注意:/soft 目录是 docker宿主机与容器里文件共享目录。
    例如:docker run -it -v /machine:/soft centos:centos7 /bin/bash,启动容器。即可实现宿主机/machine目录与容器内/soft文件共享
    1. 安装 protobuf 编译插件
      • protoc
        • 请从页面中选择对应平台的版本下载解压,并将protoc复制到/usr/bin/
          unzip /soft/protoc-3.7.0-linux-x86_64.zip -d /usr/local/protobuf
          cp /usr/local/protobuf/bin/protoc /usr/bin/protoc
      • protoc-gen-go
        go get github.com/golang/protobuf/protoc-gen-go@v1.3.2
      • protoc-gen-micro
        go get github.com/micro/protoc-gen-micro@v1.0.0

     

    注意:如果protoc安装完成,运行 protoc --version
    报错:protoc: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory
    请运行命令: libatomic-4.8.5-39.el7.x86_64.rpm下载地址
    yum -y install gcc gcc-c++
    rpm -ivh /soft/libatomic-4.8.5-39.el7.x86_64.rpm
    protoc-gen-micro 和 protoc-gen-go 如果未能成功安装,请尝试:
    go env -w GOPROXY=https://goproxy.io,direct
    go env -w GO111MODULE=on
    再进行安装,安装成功之后会在 $GOPATH/bin 目录生成 protoc-gen-micro / protoc-gen-go 两个文件。
    1. 容器内安装docker
      1. // 卸载旧版本
      2. yum remove docker
      3. docker-client
      4. docker-client-latest
      5. docker-common
      6. docker-latest
      7. docker-latest-logrotate
      8. docker-logrotate
      9. docker-engine
      10. // 安装所需的软件包
      11. yum install -y yum-utils
      12. device-mapper-persistent-data
      13. lvm2
      14. // 设置仓库
      15. yum-config-manager
      16. --add-repo
      17. https://download.docker.com/linux/centos/docker-ce.repo
      18. //列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序
      19. yum list docker-ce --showduplicates | sort -r
      20. //安装特定版本,例如:docker-ce-18.09.1
      21. yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
    注意:容器内docker安装完成,运行 docker version
    提示docker客户端正常启动,docker服务端启动失败,这是正常现象。
    如果想要正常启动容器内docker服务端,可保存镜像后,使用docker run -v /var/run/docker.sock:/var/run/docker.sock ... 启动。CI流程不必尝试此命令
    1. 安装其它命令:
      yum install -y git make

    二. 推送镜像到Docker制品库

     

    如何在 CODING 中使用 Docker 制品库

    1. 保存镜像:
      docker commit 容器ID golang:1.13v11
    2. 设置凭证
      docker login -u songrongliang@digibms.com cloud-industry-docker.pkg.coding.net
    3. 给本地的镜像打标签
      docker tag <LOCAL_IMAGE_TAG> cloud-industry-docker.pkg.coding.net/billing-app/docker/<PACKAGE>
    4. 推送镜像到制品库
      docker push cloud-industry-docker.pkg.coding.net/billing-app/docker/<PACKAGE>

    三. 配置构建计划

     
      1. 创建构建计划
        新建构建计划 -- 空白模板 -- 使用静态配置的 Jenkinsfile --前往配置详情
      2. 环境变量
        enter image description here
        外部构建环境变量:

        1. DOCKER_USERNAME = 100008089439
        2. DOCKER_PWD = LRSxVZwaZ#kj
        3. NAMESPACE = cloudindustry
        4. BASE_IMAGE = alpine-ci:3.11
        5. MICRO_SELECTOR = static
        6. MICRO_SERVER_ADDRESS = :8080
        7. QCI_MODULE = .
      3. 设置运行环境
        流程配置中设置构建环境为制品库中的镜像
        并配置运行参数 -v /var/run/docker.sock:/var/run/docker.sock
        enter image description here
      4. 配置 shell 脚本
        自定义构建过程增加执行shell脚本阶段,/bin/bash qci_build.sh
        enter image description here
  • 相关阅读:
    多目标遗传算法 ------ NSGA-II (部分源码解析)两个个体支配判断 dominance.c
    多目标遗传算法 ------ NSGA-II (部分源码解析)二元锦标赛选择 tourselect.c
    多目标遗传算法 ------ NSGA-II (部分源码解析)介绍
    遗传算法,实数编码的交叉操作之SBX(模拟二进制交叉)
    多媒体开发之wis-stream
    嵌入式驱动开发之--- 虚拟磁盘SBULL块设备驱动程序分析
    游戏开发之八卦图形生成
    目标跟踪之光流法---光流法简单介绍
    目标跟踪之高斯混合模型---cv实现
    嵌入式开发之davinci--- ipnc中用到的cmem
  • 原文地址:https://www.cnblogs.com/lyp0626/p/14148592.html
Copyright © 2020-2023  润新知