【Oracle云】OCI DevOps Services 构建自动化流水线 (2) - 创建 Build Pipeline 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流水线执行完成后,构建产物(如编译后的代码)会被上传至制品仓库,供后续的部署流水线或其他环境使用。

1.1 示例代码结构

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

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

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-clitype: 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: 40command: |                  # 生成唯一的镜像tag, 用于后续的镜像推送 export BUILDRUN_HASH=`echo ${OCI_BUILD_RUN_ID} | rev | cut -c 1-7`            echo "BUILDRUN_HASH: " $BUILDRUN_HASH- type: CommandtimeoutInSeconds: 600name: "Build the app"command: |                   # 按照golang并进行代码编译cd ${OCI_PRIMARY_SOURCE_DIR}rm -rf /usr/local/go && tar -C /usr/local -xzf gocli.tar.gzexport PATH=$PATH:/usr/local/go/binecho "======================================"/usr/local/go/bin/go versionecho "======================================"/usr/local/go/bin/go version/usr/local/go/bin/go build -o main .- type: Command                # 编译成功的代码包, 通过 docker build 推送至timeoutInSeconds: 1200name: "Build container image"command: |cd ${OCI_PRIMARY_SOURCE_DIR}docker build --pull --rm -t golan_app_base .outputArtifacts:                 # 输出到Artifacts中,Artifacts需要提前创建- name: golan_app_latest_imagetype: DOCKER_IMAGElocation: golan_app_base:latest

1.3 Dockerfile 示例

FROM golang:latestWORKDIR /appCOPY . /app/EXPOSE 8080CMD [ "/app/main" ]

2 创建 CI 流水线步骤

2.1 创建 CI 流水线

2.2  通过 “+” 增加步骤

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

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

2.5 CI流水线涉及权限配置

2.6 选择代码仓库

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

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

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

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

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

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

3 参考资料

Build_spec.yaml 的语法介绍

Build Specification

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue学习总结

声明:本文来源于黑马程序员PDF讲义 双向绑定: 修改表单项标签,发现vue对象data中的数据也发生了变化 双向绑定的作用:可以获取表单的数据的值,然后提交给服务器 事件绑定 v-on: 用来给html标签绑定事件的。需要注意…

【算法题】86. 分隔链表

题目 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1: 输入:head [1,4,3,2,5,2], x 3 …

Zookeeper分布式队列实战

目录 Zookeeper分布式队列 普通方式实现 设计思路 具体实现 使用Curator实现 具体实现 注意事项 Zookeeper分布式队列 常见的消息队列有:RabbitMQ,RocketMQ,Kafka等。Zookeeper作为一个分布式的小文件管理系统,同样能实现简单的队列功…

PCB过孔过电流能力计算

PCB(印刷电路板)过孔的过电流能力计算通常基于以下几个关键参数: 过孔直径(D):过孔的直径决定了其有效导电截面积,进而影响载流能力。 铜厚度(t):内层或外层…

ImportError: You must install pydot (`pip install pydot`) and install graphviz

1、安装pydot pip install pydot2、安装cudnn 官方下载页面 下载解压后,复制bin、lib、include的三个文件夹到到cuda安装路径中,这是我的cuda路径: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5直接复制粘贴这三个文件夹&a…

从零学习Linux操作系统 第二十三部分 系统中火墙的管理及优化

1 、实验环境设定 第一台主机需要两个网卡 另一台主机一个网卡桥接到VMnet0上 第一台主机保证能够和windows保持连接 设定第一块儿网卡能够与Windows连接 设定第二台主机能够与第一台主机连接 二、火墙中的基本名词及知识 火墙就相当于是一个表格,这个表格里写…

svn 安装路径

SVN客户端安装(超详细) 一、SVN客户端安装 1、下载安装包地址:https://tortoisesvn.net/downloads.html 此安装包是英文版的,还可以下载一个语言包,在同界面的下方 一直点击下一步,直到弹出选择红框 然…

QuertWrapper and 和or 用法

1.使用 MyBatis Plus 实现上述 SQL 查询条件可以按照以下步骤进行&#xff1a; 创建一个 QueryWrapper 对象&#xff1a;QueryWrapper<Entity> queryWrapper new QueryWrapper<>();使用 eq 方法添加等于条件和 and 条件&#xff1a;queryWrapper.eq("age&qu…

jsonwebtoken使用HS256生成token失败

项目场景&#xff1a; 用户登入将token返回给用户 问题描述 在koa中使用jsonwebtoken库生成token失败&#xff0c;找了很多原因。 const jwt require("jsonwebtoken"); const { PRIVATE_KEY } require("../config/screct");class LoginController {as…

3. Mybatis的XML配置文件(重点)

目录 1 Mybatis的XML配置文件 1.1 XML配置文件规范 1.2 XML配置文件实现 1.3 MybatisX的使用 2. Mybatis动态SQL 2.1 什么是动态SQL 2.2 动态SQL-if 2.2.1 条件查询 2.2.2更新 2.3 动态SQL-foreach 2.4 动态SQL-sql&include 1.mybatis入门 2.mybatis基本操作 1…

AI智能分析+明厨亮灶智慧管理平台助力“舌尖上的安全”

春节是中国最重要的传统节日之一&#xff0c;在春节期间&#xff0c;人们聚餐需求激增&#xff0c;餐饮业也迎来了高峰期。在这个时期&#xff0c;餐饮企业需要更加注重食品安全和卫生质量&#xff0c;以保证消费者的健康和权益&#xff0c;明厨亮灶智慧管理成为了餐饮业中备受…

记一次复杂左连接的优化之路

慢执行分析 create table t3 as select t_1.lon as lon, t_1.lat as lat, t_1.label as label, t_1.is_core as is_core, t_2.grid_id as grid_id, t_2.mid_jd as mid_jd, t_2.mid_wd as mid_wd, t_2.zs_jd as zs_jd, t_2.zs_wd as zs_wd, t_2.yx_jd as yx_jd, t_2.yx_wd as y…

基于单片机温度控制系统的研究

摘 要&#xff1a;笔者基于单片机的温度控制系统&#xff0c;从单片机选择、传感器选择、系统框架设计等方面概述了单片机的温度控制系统内涵&#xff0c;分析了其运行原理&#xff0c;列举了单片机温度控制系统设计的实操方法&#xff0c;从硬件系统、软件系统、温度检测方法…

windows 11安装跳过联网,使用本地账户登陆

windows 11安装跳过联网&#xff0c;使用本地账户登陆 第一步 断开网络&#xff0c;拔网线 第二步 安装windows11 第三步 shiftF10调出命令行 第四步 输入命令&#xff1a; OOBE\BYPASSNRO回车自动重启&#xff0c;随后继续安装选择我没有网络&#xff0c;即可跳过win…

springboot144基于mvc的高校办公室行政事务管理系统设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

二叉搜索树操作题目:删除二叉搜索树中的结点

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;删除二叉搜索树中的结点 出处&#xff1a;450. 删除二叉搜索树中的结点 难度 5 级 题目描述 要求 给定二叉…

Ubuntu Linux 下安装和卸载cmake 3.28.2版本

一、安装cmake 1.首先&#xff0c;先从cmake官网下载cmake-3.28.2-linux-x86_64.tar.gz 2.用FinalShell 等文件上传工具&#xff0c;将这个压缩包上传到 虚拟机的某个路径去&#xff08;自选&#xff09; 3. cd /usr/local/bin/&#xff0c;然后创建cmake文件夹&#xff0c;…

pnpm : 无法加载文件 D:\tool\nvm\nvm\node_global\pnpm.ps1,因为在此系统上禁止运行脚本

你们好&#xff0c;我是金金金。 场景 新创建的项目&#xff0c;在vscode编辑器终端输入 pnpm i&#xff0c;显示报错如上 解决 在终端输入get-ExecutionPolicy(查看执行策略/权限) 输出Restricted(受限的) 终端再次输入Set-ExecutionPolicy -Scope CurrentUser命令给用户赋予…

STM32低功耗模式

一、低功耗模式介绍 STM32 的低功耗模式有 3 种&#xff1a; 1)睡眠模式&#xff08;CM3 内核停止&#xff0c;外设仍然运行&#xff09; 2)停止模式&#xff08;所有时钟都停止&#xff09; 3)待机模式&#xff08;1.8V 内核电源关闭&#xff09; 在这三种低功耗模式中&#…

Vue3项目封装一个Element-plus Pagination分页

前言:后台系统分页肯定是离不开的,但是ui框架都很多,我们可以定义封装一种格式,所有项目按到这个结构来做. 实例: 第一步:在项目components组件新建一个分页组件,用来进行封装组件. 第二步:根据官方的进行定义,官方提供的这些,需要我们封装成动态模式 第三步:代码改造 <!-…