男神鹏:在外部 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
posted @ 2020-12-17 11:15  男神鹏●詹姆斯  阅读(183)  评论(0编辑  收藏  举报