私网环境下如何使用云效流水线进行 CI/CD?

作者:怀虎

场景介绍

代码库、制品库等数据资产托管在内部办公网,公网不能访问,希望能够使用云效流水线进行 CICD 的编排和控制。

整体方案

云效流水线可以托管用户的私网环境内的机器,并将构建任务调度到这些机器上,从而确保整个构建过程,和代码库和制品库的交互在私网环境下进行。

在主机上安装 Runner 程序, 该程序需要能够访问到云效流水线的服务端,以便从服务端获取任务,并在执行任务的过程中上报日志和状态。

操作实践

3.1 创建私有构建集群

进入云效 Flow 首页 -> 全局设置 -> 构建集群管理页面:

1)点击新建构建集群,填入基础信息之后,完成私有构建集群创建。

2)进入私有构建集群,点击接入新节点,可以选择不同的方式接入构建节点。支持阿里云 ECS 的 Linux 和 Windows 机器,或者自己的 Linux、Windows 及 macOS机器,可以按需选择。

  • 如果是自己的机器,则可以选择手动安装 Runner 方式添加机器。复制 Runner 安装命令,在机器上执行,即可安装好 Runner 程序,该程序会是以服务的形式常驻在机器上,详见 Runner 文档。
  • 如果是阿里云 ECS 机器,则可以选择阿里云 ECS 方式添加机器,流水线会调用云助手 API 自动安装好 Runner 程序。


3)创建好私有构建集群之后,就可以创建流水线,并选择这个构建集群执行流水线任务了。

3.2 创建代码库服务连接

假设你内网的代码托管地址是 https://myrepo.com,为了在构建过程中和代码服务进行交互,需要配置代码库的服务连接。

云效 Flow 首页 -> 全局设置 -> 服务连接管理页面:

1)点击新建服务连接 ,并选择通用 Git 服务连接类型。

2)点击下一步 ,点击新建服务授权/证书,输入账密信息。


3)点击确定 完成证书创建,回到服务连接页面,该证书会自动被选中,点击创建即可完成服务连接的创建。

3.3 创建流水线,配置代码源和构建任务

进入云效 Flow 首页 -> 我的流水线 页面,点击新建流水线,选择空模板,可以选择可视化编排 或者 YAML 化编排任一种方式创建流水线。下面以 YAML 化流水线编排为示例。

1)输入代码源配置 YAML,在 serviceConnection 关键字后面键入空格会进行自动补全,可以看到刚才创建的那个服务连接,并进行选择。

sources: 
  my_repo:
    type: git
    name: 我的代码源
    endpoint: http://myrepo.com/ns/code-repo.git  # 请换成你自己的代码仓库地址
    branch: master
    triggerEvents: push
    certificate:
      type: serviceConnection
      serviceConnection: <your-service-connection-id>  # 请替换成上述创建好的服务连接ID

2)输入构建配置 YAML,在 runsOn 关键字后面键入空格会进行自动补全,可以看到刚才创建的私有构建集群,并进行选择。

sources: 
  my_repo:
    type: git
    name: 我的代码源
    endpoint: http://myrepo.com/ns/code-repo.git  # 请换成你自己的代码仓库地址
    branch: master
    triggerEvents: push
    certificate:
      type: serviceConnection
      serviceConnection: <your-service-connection-id>  # 请替换成上述创建好的服务连接ID


stages:
  build_stage:
    name: 构建阶段
    jobs:
      build_job:
        name: 构建任务
        runsOn: <your-build-cluster-id>  # 请替换成上述创建好的私有构建集群ID
        steps:
          build_step:
            step: JavaBuild
            name: java构建
            with:
              jdkVersion: "1.8"
              mavenVersion: "3.5.2"
              run: "mvn -B clean package -Dmaven.test.skip=true -Dautoconfig.skip\n"

3)根据实际情况填入你自己的代码仓库地址、服务链接 ID、私有构建集群 ID 之后,保存并运行流水线。

3.3 运行流水线,执行代码拉取和构建任务

运行上述配置好的流水线,点击查看构建任务日志,可以看到构建任务运行在你自己的私有构建机器上,只需要你自己的私有构建机器能够访问到你的代码仓库即可,无需代码仓库出公网。

更多参考

在了解了上述基本用法后,可以继续阅读以下文档,以探索更多使用场景:

[1] YAML语法规范

https://help.aliyun.com/document_detail/609178.html?spm=a2c4g.2831722.0.i1

[2] 流水线 Runner

https://help.aliyun.com/document_detail/2825830.html?spm=a2c4g.2831722.0.i2

[3] 流水线缓存

https://help.aliyun.com/document_detail/2831720.html?spm=a2c4g.2831722.0.i3

相关推荐
为什么这亚子39 分钟前
九、Go语言快速入门之map
运维·开发语言·后端·算法·云原生·golang·云计算
划水小将军1 小时前
阿里云函数计算GBK编码
阿里云·云计算
ZHOU西口2 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
牛角上的男孩3 小时前
Istio Gateway发布服务
云原生·gateway·istio
JuiceFS4 小时前
好未来:多云环境下基于 JuiceFS 建设低运维模型仓库
运维·云原生
景天科技苑5 小时前
【云原生开发】K8S多集群资源管理平台架构设计
云原生·容器·kubernetes·k8s·云原生开发·k8s管理系统
wclass-zhengge6 小时前
K8S篇(基本介绍)
云原生·容器·kubernetes
颜淡慕潇6 小时前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决
昌sit!14 小时前
K8S node节点没有相应的pod镜像运行故障处理办法
云原生·容器·kubernetes
茶馆大橘17 小时前
微服务系列五:避免雪崩问题的限流、隔离、熔断措施
java·jmeter·spring cloud·微服务·云原生·架构·sentinel