【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】

在软件开发的生命周期中,持续集成(Continuous Integration, CI)是确保团队协作、代码质量和交付效率的关键环节。

OCI DevOps Services 作为 Oracle 云原生 CI/CD 服务,为开发者提供了标准的CI/CD平台,支持构建自动化的流水线,从代码提交到部署全程实现自动化。

本系列的第二篇文章将深入介绍如何在 OCI DevOps Services 中创建 Build Pipeline(构建流水线),这是 CI 流水线的关键组成部分。

  • 基础架构流程 && OCI 代码仓库使用
  • Build Pipeline (CI)
  • Deployment Pipeline (CD)
  • 整合 CI/CD

通过本系列的文章,您将了解如何在 OCI DevOps Services 中搭建自动化流水线,提高应用开发和交付的效率,同时充分发挥 OCI 云原生服务的作用。

我们将探讨如何配置构建环境、定义构建步骤,并利用 OCI 提供的资源实现高效的构建过程。通过这一步,您将更好地理解如何将 OCI DevOps Services 集成到日常开发中,实现持续交付的最佳实践。

1 创建 DevOps CI 流水线

CI流水线的主要组成:

CI流水线文件: 在持续集成(Continuous Integration, CI)的过程中,CI流水线文件是定义整个构建和部署过程的重要组成部分。它包含了任务的执行顺序、依赖关系以及每个任务的具体内容。通过声明式配置的方式,可以清晰的了解每部分的执行操作;

应用代码: 代码是CI流水线的核心,它是通过流水线执行的主要对象。在CI流水线中,代码会被编译、测试、安全和审计等功能集成,最终生成构建产物。通过自动化这些步骤,开发者可以确保代码的质量和稳定性;

制品仓库: 制品仓库是存储构建产物的地方。在CI流水线执行完成后,构建产物(如编译后的代码)会被上传至制品仓库,供后续的部署流水线或其他环境使用。

【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】_第1张图片

1.1 示例代码结构

示例流程对golang代码进行推送至代码仓库后,执行编译、打包和归档操作,示例主要包含如下内容:

  • build_spec.yaml → ci配置文件
  • Dockerfile → 镜像构建文件
  • main.go → golang http 主程序

【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】_第2张图片

1.2 build_spec.yaml 基础解释

version: 0.1                    # ci版本,当前为0.1,固定写法
component: build                # 组件名称,固定写法
timeoutInSeconds: 6000          # 构建超时时间,单位为秒
runAs: root                     # 构建时的用户,root或者opc, root可以实现更多的操作,如安装软件包等
shell: bash                     # 构建时使用的shell,bash模式
env:                            # 环境变量
  exportedVariables:            # 导出的环境变量,可以在后续CD的步骤中使用
    - BUILDRUN_HASH             # 用于生成唯一的镜像tag
inputArtifacts:                 # 输入的构建产物,可以是源代码,二进制文件,镜像等
    - name: golan-cli
      type: URL 
      url: https://go.dev/dl/go1.18.10.linux-amd64.tar.gz  # golang解释器
      location: ${OCI_PRIMARY_SOURCE_DIR}/gocli.tar.gz     # 本地存储路径
steps:                          # 构建步骤,标准语法格式
  - type: Command               # 步骤类型,Command表示执行命令
    name: "Define unique image tag"
    timeoutInSeconds: 40
    command: |                  # 生成唯一的镜像tag, 用于后续的镜像推送 
      export BUILDRUN_HASH=`echo ${OCI_BUILD_RUN_ID} | rev | cut -c 1-7`            
      echo "BUILDRUN_HASH: " $BUILDRUN_HASH
  - type: Command
    timeoutInSeconds: 600
    name: "Build the app"
    command: |                   # 按照golang并进行代码编译
      cd ${OCI_PRIMARY_SOURCE_DIR}
      rm -rf /usr/local/go && tar -C /usr/local -xzf gocli.tar.gz
      export PATH=$PATH:/usr/local/go/bin
      echo "======================================"
      /usr/local/go/bin/go version
      echo "======================================"
      /usr/local/go/bin/go version
      /usr/local/go/bin/go build -o main .
  - type: Command                # 编译成功的代码包, 通过 docker build 推送至
    timeoutInSeconds: 1200
    name: "Build container image"
    command: |
      cd ${OCI_PRIMARY_SOURCE_DIR}
      docker build --pull --rm -t golan_app_base .

outputArtifacts:                 # 输出到Artifacts中,Artifacts需要提前创建

  - name: golan_app_latest_image
    type: DOCKER_IMAGE
    location: golan_app_base:latest

1.3 Dockerfile 示例

FROM golang:latest

WORKDIR /app

COPY . /app/

EXPOSE 8080

CMD [ "/app/main" ]

2 创建 CI 流水线步骤

2.1 创建 CI 流水线

【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】_第3张图片

2.2  通过 “+” 增加步骤

【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】_第4张图片

2.3 创建CI流水线 增加新的集成步骤

【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】_第5张图片

2.4 创建CI流水线步骤的基础属性说明

【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】_第6张图片

2.5 CI流水线涉及权限配置

【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】_第7张图片

2.6 选择代码仓库

支持多种代码仓库的集成:

  • OCI Code Repository
  • GitHub
  • GitLab Cloud/Server
  • Bitbucket Cloud
  • Visual Builder Studio
  • Bitbucket Server

【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】_第8张图片

2.7 创建 CI 流水线 - 创建容器镜像制品库

镜像制品库用于docker镜像的上传,主要使用其推送至镜像仓库。

2.8 执行 CI 流水线 && 构建过程

【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】_第9张图片

【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】_第10张图片

至此CI部分将代码成功推送至镜像仓库。

3 参考资料

Build_spec.yaml 的语法介绍

Build Specification

在下一节,我们将介绍 Deployment Pipeline ...

  • 基础架构流程 && OCI 代码仓库使用
  • Build Pipeline (CI)
  • Deployment Pipeline (CD):     即将更新..
  • 整合 CI/CD:                             即将更新..

通过本系列的文章,您将了解如何在 OCI DevOps Services 中搭建自动化流水线,提高应用开发和交付的效率,同时充分发挥 OCI 云原生服务的作用。

炸鸡物料库

内容定位: IT技术领域,云计算、云原生、DevOps 和 AI 等相关的技术资讯、实践和经验分享。面向开发、系统和云计算,提供实用的技术内容。

目标受众: 面向开发者、系统管理员和云计算从业者,提供实用的技术内容。

️ 更新频率:每周更新,每次分享都为您带来有价值的技术内容。

互动与反馈: 鼓励读者留言、评论,有问题随时提问,我们将积极互动并提供帮助。

订阅方式: 扫描二维码或搜索“炸鸡物料库”关注,不错过每一篇精彩内容。

合作与分享: 如果您有技术分享或合作计划,欢迎联系我们,共同成长!

【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】_第11张图片【Oracle云】OCI DevOps Services 教程 (2) - 创建自动化构建流水线【CI流水线】_第12张图片

你可能感兴趣的:(devops,自动化,ci/cd,云计算,云原生)