极狐GitLab 多行命令的 CI 日志管理体验的改进

news2024/9/21 18:33:12

极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitLab,详情可以参考极狐GitLab 下载安装官网。

GitLab 中文版学习资料

  • 驭码CodeRider 官网:https://coderider.gitlab.cn/
  • GitLab 中文版官网:https://gitlab.cn
  • GitLab 中文文档:https://docs.gitlab.cn
  • GitLab 中文下载安装:https://gitlab.cn/install

GitLab CI 是业界常用的 CI 工具,用来落地实践 DevOps。而极狐GitLab 作为 GitLab 在国内的发行版,也是一个一体化的 DevOps 平台,CI/CD 功能是内置的。通常情况下,用户将 CI 作业中需要执行的命令写在 script关键字下面,执行流水线之后,会在日志输出界面看到相应命令的执行情况,这些详细的日志信息便于 DevOps 或者研发人员查看 CI 作业的执行情况,尤其在遇到问题的情况下这些日志就能够用来故障的查找了。

在 script块中,多行命令的执行往往是家常便饭。但是日志的输出体验往往不是很多。现在,查看多行命令的 CI 作业的日志输出要比之前容易多了。下面的内容会解释我们是怎么做到这些的。

改善极狐GitLab 多行命令作业的 CI/CD 日志体验已经是一个存在了很长时间的功能请求了。在最新版本的极狐GitLab 和极狐GitLab Runner 中,对于具有多行命令作业的日志部分体验比之前好了很多。此文章,我们将描述此新功能带来的体验,并展示如何在流水线中开启新的日志输出,讨论有关 CI/CD 脚本执行和各种 Shell(例如 Bash 和 PowerShell)中日志输出的要点。

多行命令概览

首先,明白我们通常所说的具有多行命令的 CI 作业到底意味着什么是非常重要的。在极狐GitLab CI 中, script关键字被指定用来在 CI 作业中执行特定的命令。例如在下面的示例中,build-job有一个简单的命令,是一个基本的输出命令:

## A pipeline with a single line command in the script block for the build-job

build-job:
  stage: build
  script:
    - echo "this is the script to run for the build job"

如果执行此流水线,UI 界面中的日志输出如下图所示:第 17 行 - 极狐GitLab CI 会自动生成一个执行命令的日志条目。第 18 行 — 就是被执行命令的最终执行结果。

在这里插入图片描述

现在,如你所想象的,CI 作业的脚本块中展示的脚本内容要比上面的复杂的多,是多行命令。

## A pipeline with a multi-line command in the script block for the build-job

build-job:
  stage: build
  script:
       - |
         echo "this is a multi-line command"  # a simple echo statement
         ls  

如果执行此流水线,UI 界面上的日志输出如下图:

第 17 行—— 在之前的例子中,极狐GitLab 会为脚本块中指定的命令行自动生成一个日志条目。你可能注意到了,第 17 行只包含脚本块中的第一行命令。这就让问题的调试变得困难了很多,因为你需要回到原始的流水线文件来看脚本到底在执行什么命令。

在这里插入图片描述

新特性是什么呢?

自极狐GitLab & 极狐GitLab Runner 16.7 始,你可以打开功能开关 FF_SCRIPT_SECTIONS,此开关可以将多行日志脚本块的 CI 作业日志进行一个折叠。此功能开关改变了在 Bash shell 中 CI 作业的日志输出方式。

在这里插入图片描述
第 17 行:和之前的例子有所不同的是,可以从截图看出,默认情况下多行命令的日志输出被折叠了起来。

单行命令不会显示在可折叠的元素中。

对于多行脚本中的多行命令来说,现在变成了折叠元素,因此,但你打开折叠的第 17 行时,日志就会详细展示脚本块中所有的执行命令。

在这里插入图片描述

这也就是所说的 定制化折叠部分功能,此功能和全新的多行日志输出能力一起使用,能够给用户提供额外的灵活性,用来在 UI 上看 CI 作业日志输出。下面这个例子就能很好的展示这两个特性:

## A pipeline with a multi-line command in the script block for the build-job

variables:
  FF_PRINT_POD_EVENTS: "true"
  FF_USE_POWERSHELL_PATH_RESOLVER: "true"
  FF_SCRIPT_SECTIONS: "true"

collapsible_job_multiple:
  stage: build
  script:
    - |
      echo "{
        'test': 'data',
        'test2': 'data2',
      }"
    - |
      echo "{
        'test': 'data',
        'test2': 'data2',
      }"
    - echo -e "\033[0Ksection_start:`date +%s`:my_first_section\r\033[0KHeader of the 1st collapsible section"
    - echo 'this line should be hidden when collapsed'
    - |
      echo "{
        'test': 'data',
        'test2': 'data2',
      }"
    - echo -e "\033[0Ksection_start:`date +%s`:second_section\r\033[0KHeader of the 2nd collapsible section"
    - echo 'this line should be hidden when collapsed'
    - echo -e "\033[0Ksection_end:`date +%s`:second_section\r\033[0K"
    - echo -e "\033[0Ksection_end:`date +%s`:my_first_section\r\033[0K"

如果 FF_SCRIPT_SECTIONS设置为 false,然后执行此流水线,日志输出如下所示:

在这里插入图片描述

但是如果把 FF_SCRIPT_SECTIONS设置为 true,然后执行流水线,日志输入就变成下面这样了:

在这里插入图片描述

其他 shell 是怎样的呢?

在 16.7 中,将 CI 作业中多行命令的日志输出进行折叠仅仅对在 Bash Shell 中执行的 CI/CD 作业可见。当前还不支持在 PowerShell 中执行的 CI/CD 作业。将来的版本中可能会新增此功能。

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

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

相关文章

Python中15个递归函数经典案例解析

文末赠免费精品编程资料~~ 递归是Python编程中一个强大的工具,它允许函数调用自身以解决复杂问题。在本文中,我们将探索15个递归函数的经典案例,从基础到进阶,帮助你理解和掌握递归编程。 1. 阶乘计算 阶乘是一个常见的递归应用…

CSP-CCF 202109-1 数组推导

一、问题描述 二、解答 初版&#xff1a; 只得了60分 #include<iostream> using namespace std; int main() {int n;cin >> n;int B[101] { 0 };int sum_max 0;int sum_min0;//以防错误“使用未初始化的局部变量”&#xff0c;建议所有变量都要初始化&#xf…

2024 Google 开发者大会,沉浸式体验AI社会公益

文章目录 一、现场打卡二、AI 社会公益三、Gemma 模型四、Gemini 模型五、Google Cloud六、现场体验七、带着问题逛展八、学习资源和活动九、结束 Happy Hour 一、现场打卡 大家好&#xff0c;我是小雨。 2024 Google 开发者大会&#xff0c;沉浸式体验AI社会公益 今天我们参加…

ERD Online即将突破 4500 用户的喜悦与展望

亲爱的朋友们&#xff1a; 大家好&#xff01; 今天&#xff0c;我怀着无比激动的心情&#xff0c;要与大家分享一个令人振奋的消息&#xff1a;我们的网站用户即将突破 4500 大关&#xff01; 这一路走来&#xff0c;充满了挑战与艰辛&#xff0c;但每一次的困难都成为了我们前…

2024新型数字政府综合解决方案(十)

新型数字政府综合解决方案融合先进的人工智能、大数据、区块链及云计算技术&#xff0c;旨在通过数据共享、智能分析与自动化处理&#xff0c;打造高效、透明、安全的政务环境&#xff0c;优化服务流程&#xff0c;提升决策科学性&#xff0c;加强信息安全&#xff0c;实现政府…

java入门-成员内部类和静态内部类的访问

&#xff08;一&#xff09;成员内部类 package InnerClass;import javax.print.attribute.standard.MediaSize;public class Outer {//2外部类中的成员private int age99;public static String a;public class Inner{//普通的成员内部类//1.1成员变量public String name;priva…

删除镜像报子镜像依赖错误

1、删除镜像报子镜像依赖错误 出现这个错误的原因是因为有其他镜像依赖需要删除的镜像。 2解决方法 2.1首先查看无法删除的镜像被哪些镜像所依赖 docker image inspect --format{{.RepoTags}} {{.Id}} {{.Parent}} $(docker image ls -q --filter since${image_id}) # ${ima…

数据结构:线性结构之顺序表、链表篇

数据结构&#xff1a;顺序表、链表篇 线性表一、顺序表&#xff08;一&#xff09;顺序表的结构定义&#xff08;二&#xff09;顺序表的功能实现1、初始化2、销毁3、扩容4、插入5、删除 &#xff08;三&#xff09;顺序表例题分析1、删除有序数组中的重复项2、合并两个有序数组…

【Hot100】LeetCode—73. 矩阵置零

目录 1- 思路开辟额外两个一维数组 2- 实现⭐53. 最大子数组和——题解思路 3- ACM 实现 原题连接&#xff1a;73. 矩阵置零 1- 思路 开辟额外两个一维数组 1- 利用额外的两个一维数组 boolean 数组空间&#xff0c;遇到 0 则将当前位置的元素设置为 true 一维 row 数组&…

如何判断一个dll/exe是32位还是64位

通过记事本判断&#xff08;可判断C或者C#&#xff09; 64位、将dll用记事本打开&#xff0c;可以看到一堆乱码&#xff0c;但是找到乱码行的第一个PE&#xff0c;如果后面是d?则为64位 32位、将dll用记事本打开&#xff0c;可以看到一堆乱码&#xff0c;但是找到乱码行的第…

最好用的Linux发行版---WSL

使用debian开发半年&#xff0c;那个号称稳定的操作系统&#xff0c;ubuntu也是基于它的testing版本开发的&#xff0c;在一次设置testing更新后英伟达驱动掉了、引导区无法启动、bios损坏&#xff0c;现在老实了&#xff0c;换回了Window&#xff0c;并且激进的选择了win11&am…

c语言中的宏函数及c++的内联函数及auto及NULL

c的内联函数 使用内联函数可以减少函数栈帧的开销。 Swap(a, b); 00A516C8 mov eax,dword ptr [a] 00A516CB mov dword ptr [ebp-20h],eax 00A516CE mov ecx,dword ptr [b] 00A516D1 mov dword ptr [a],ecx 00A516D4 mov …

Linux登录后自动健康检查:一键掌握系统状态

Linux登录后自动健康检查&#xff1a;一键掌握系统状态 最近开始公众号文章也开始同步更新了&#xff0c;对Java、大数据、人工智能、开发运维相关技术分享&#xff0c;文章对您有用的话&#xff0c;辛苦您也关注下公众号&#xff0c;感谢&#xff01; 引言 当我们登录到某些服…

rt-thread 打开flashdb若干问题

1、打开FAL和SFUD功能 2、打开FLASHDB时&#xff0c;想用utest测试工程&#xff0c;结果报错&#xff0c;缺少mkdir函数&#xff1a; 解决办法&#xff1a;打开DFS RT-Thread Components → DFS: device virtual file system 重新编译

大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

windows重装系统后无法安装软件,Windows软件无法打开,缺少dll,缺少c++运行库

如果你使用Directx&#xff0c;要么识别不出来&#xff0c;要么装上之后更新会发现重复安装了很多运行库 装一个visual stiudio&#xff1a;<Visual Studio 2022 IDE - 适用于软件开发人员的编程工具> 选择使用C游戏开发、.Net桌面开发 然后安装即可

学习Java的日子 Day71 手写一个SpringMVC的框架(一)

手写一个SpringMVC的框架 1.理解为什么要写这样一个框架 SpringMVC 实际上跟Servlet是一样&#xff0c;都是 Controller的一个解决方案&#xff0c;也就是说我们手写这个框架的目的就是为了替换原来的 Servlet 注意&#xff1a; spring不是框架&#xff0c;springMVC才是框架&…

一文入门mysql 数据库

一、数据库概述 什么是数据库 数据库是一个用于存储和管理数据的仓库。数据按照特定的格式存储&#xff0c;可以对数据库中的数据进行增加、修改、删除和查询操作。数据库的本质是一个文件系统&#xff0c;按照一定的逻辑结构组织数据&#xff0c;以方便高效地访问和维护。 什…

使用Python创建LNK文件选择器并导出配置文件

在这篇博客中&#xff0c;我将介绍如何使用Python的wxPython库开发一个GUI应用程序&#xff0c;该应用程序可以选择文件夹中的.lnk&#xff08;快捷方式&#xff09;文件&#xff0c;并将选中的文件导出为特定格式的buttons.ini配置文件。这个工具非常适合用来快速生成配置文件…

使用Java调用Apache commons-text求解字符串相似性实战

目录 前言 一、字符串距离的几种计算方法 1、Levenshtein 距离 2、Overlap Coefficient计算 3、Q-gram Matching 4、余弦相似性计算 二、基于余弦相似性的基地名称对比 1、加载百科中的基地信息列表 2、设置忽略词列表 3、将数据库地名和Excel进行对比 三、总结 前言…