极狐gitlab ci job拉取代码之前执行命令

有时候我们希望可以在检索 Git 代码库和任何 submodules 之前执行一下命令操作,接下来为大家介绍下通过 hooks:pre_get_sources_script 可以满足该场景的使用。

文章目录

    • 1. 开启 feature flag
    • 2. 使用方式
      • 方式1在 ci job 中定义 hooks.pre_get_sources_script
    • 方式2:在 runner 中配置参数 pre_get_sources_script

1. 开启 feature flag

此功能 15.6 版本引入,参考 hookspre_get_sources_script。

# 进入到rails控制台
gitlab-rails console
# 查询flag
Feature.enabled?(:ci_hooks_pre_get_sources_script)
# 开启
Feature.enable(:ci_hooks_pre_get_sources_script)

在这里插入图片描述

2. 使用方式

方式1在 ci job 中定义 hooks.pre_get_sources_script

image: busybox:latest

build1:
  stage: build
  script:
    - echo "Do your build here"

test1:
  stage: test
  hooks:
    pre_get_sources_script:
      - echo 'hello job1 pre_get_sources_script'
  script: echo 'hello job1 script'

执行结果:
在这里插入图片描述

Running with gitlab-runner 16.2.1 (674e0e29)
  on dc 2TczXVop, system ID: s_881ce15226e3
Resolving secrets
00:00
Preparing the "docker" executor
00:01
Using Docker executor with image busybox:latest ...
Using locally found image version due to "if-not-present" pull policy
Using docker image sha256:fc9db2894f4e4b8c296b8c9dab7e18a6e78de700d21bc0cfaf5c78484226db9c for busybox:latest with digest busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79 ...
Preparing environment
00:01
Running on runner-2tczxvop-project-3-concurrent-0 via gitlab-31-200...
Getting source from Git repository
00:01
$ echo 'hello job1 pre_get_sources_script'
hello job1 pre_get_sources_script
Fetching changes with git depth set to 20...
Reinitialized existing Git repository in /builds/ops/maven-demo/.git/
Checking out b09407d2 as detached HEAD (ref is master)...
Skipping Git submodules setup
Executing "step_script" stage of the job script
00:00
Using docker image sha256:fc9db2894f4e4b8c296b8c9dab7e18a6e78de700d21bc0cfaf5c78484226db9c for busybox:latest with digest busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79 ...
$ echo 'hello job1 script'
hello job1 script
Job succeeded

方式2:在 runner 中配置参数 pre_get_sources_script

参考:Runner Advanced configuration,这里以 docker runner executer 为例:

concurrent = 1
check_interval = 0
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "dc"
  url = "http://192.168.31.100/"
  id = 3
  token = "2TczXVopZ1fic7GeQ2BS"
  token_obtained_at = 2023-11-29T16:31:40Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  pre_get_sources_script = "eval \"$CI_PRE_CLONE_SCRIPT\""
  [runners.cache]
    MaxUploadedArchiveSize = 0
  [runners.docker]
    pull_policy = ["if-not-present"]
    tls_verify = false
    image = "alpine:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

执行结果:
在这里插入图片描述

Running with gitlab-runner 16.2.1 (674e0e29)
  on dc 2TczXVop, system ID: s_881ce15226e3
Resolving secrets
00:00
Preparing the "docker" executor
00:01
Using Docker executor with image busybox:latest ...
Using locally found image version due to "if-not-present" pull policy
Using docker image sha256:fc9db2894f4e4b8c296b8c9dab7e18a6e78de700d21bc0cfaf5c78484226db9c for busybox:latest with digest busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79 ...
Preparing environment
00:01
Running on runner-2tczxvop-project-3-concurrent-0 via gitlab-31-200...
Getting source from Git repository
00:01
$ eval "$CI_PRE_CLONE_SCRIPT"
CI_PRE_CLONE_SCRIPT
test
Fetching changes with git depth set to 20...
Reinitialized existing Git repository in /builds/ops/maven-demo/.git/
Checking out 5e4a8b55 as detached HEAD (ref is master)...
Skipping Git submodules setup
Executing "step_script" stage of the job script
00:00
Using docker image sha256:fc9db2894f4e4b8c296b8c9dab7e18a6e78de700d21bc0cfaf5c78484226db9c for busybox:latest with digest busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79 ...
$ echo 'hello job1 script'
hello job1 script
Job succeeded

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

私人收藏的动听音乐

私人收藏的动听音乐 电视剧《装台》大雀去世戏歌《人面桃花》华阴老腔--《将令一声震山川》 电视剧《装台》大雀去世 下载地址:https://raw.githubusercontent.com/omaidb/qiaofei_notes/main/music/%E8%A3%85%E5%8F%B0-%E5%A4%A7%E9%9B%80%E6%AD%BB%E4%BA%A1.m4a 戏…

L1-018:大笨钟

题目描述 微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数…

达索系统SOLIDWORKS 2024 Simulation新功能

SolidWorks Simulation是什么? SolidWorks Simulation是一个虚拟测试环境,用于分析你的设计,评估其性能并做出决策以提高产品质量。从SolidWorks2009开始,FEA软件COSMOSWorks改名为SolidWorks Simulation。其为了体现设计仿真一体…

前端传参中带有特殊符号导致后端接收时乱码或转码失败的解决方案

文章目录 bug背景解决思路1:解决思路2解决思路3(最终解决方案)后记 bug背景 项目中采用富文本编辑器后传参引起的bug,起因如下: 数据库中存入的数据会变成这种未经转码的URL编码 解决思路1: 使用JSON方…

基于51单片机智能灯设计教室灯路灯设计

**单片机设计介绍,基于51单片机智能灯设计教室灯路灯设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的智能灯设计可以实现很多功能,包括节能、遥控、自动感应等等。下面我会介绍一下如何…

【运筹优化】运筹学导论:求解线性规划问题 - 单纯形法

文章目录 一、单纯形法的实质(几何原理)1.1 示例的求解1.2 关键的解原理1.2.1 解原理11.2.2 解原理21.2.3 解原理31.2.4 解原理41.2.5 解原理51.2.6 解原理6 二、构建单纯形法(代数原理)三、单纯形法的代数形式3.1 初始化3.2 最优…

网件R8500 trojan

一 将路由器刷机成改版梅林 路由器首页的Firmware:380.70_0-X7.9.1是梅林改版 380.xx 梅林原版固件 380.xx_x 梅林改版固件 必须是改版梅林才支持trojan,所以要确保是梅林改版固件 点击上传文件,选择下载好的改版固件,固件地址下载传送门…

TA-Lib学习研究笔记(八)——Momentum Indicators 下

TA-Lib学习研究笔记(八)——Momentum Indicators 下 Momentum Indicators 动量指标,是最重要的股票分析指标,能够通过数据量化分析价格、成交量,预测股票走势和强度,大部分指标都在股票软件中提供。 21. …

使用Plex结合cpolar搭建本地私人媒体站并实现远程访问

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频,已经算是生活中稀松平常的场景了,特别是各…

Angular 由一个bug说起之三:为什么时不时出现额外的水平/垂直滚动条?怎样能更好的防止它的出现?

目录: 什么是单元溢出 控制滚动条出现的属性 怎样能减少意外的滚动条出现 一、什么是单元溢出 在说到这个问题之前我们先简单阐述一下视图窗口(Viewport)和视图内容(View Content) 视图窗口简单来说就是呈现内容的视口,浏览器就是一个窗口&#xff…

【flink番外篇】1、flink的23种常用算子介绍及详细示例(2)- keyby、reduce和Aggregations

Flink 系列文章 1、Flink 专栏等系列综合文章链接 文章目录 Flink 系列文章一、Flink的23种算子说明及示例6、KeyBy7、Reduce8、Aggregations 本文主要介绍Flink 的3种常用的operator(keyby、reduce和Aggregations)及以具体可运行示例进行说明. 如果需要…

【设计模式】职责链模式设计在线文档帮助系统

职责链模式设计在线文档帮助系统 任务三:使用职责链模式设计在线文档帮助系统 某公司欲开发一个软件系统的在线文档帮助系统,用户可以在任何一个查询环境中输入查询关键字,如果当前查询环境下没有相关内容,则系统会将查询按照一定…

Ubuntu22.04 使用Docker部署Neo4j出错 Exited(70)

项目场景: 最近需要使用Neo4j图数据库,因此打算使用docker部署 环境使用WSL Ubuntu22.04 问题描述 拉下最新Neo4j镜像,执行命令部署 启动容器脚本 docker run -d -p 7474:7474 -p 7687:7687 \ --name neo4j \ --env "NEO4J_AUTHneo…

git的安装及ssh配置(Linux)

环境 CentOS Linux release 7.9.2009 (Core) Xftp7 安装 方法一:yum安装 yum是一个客户端软件,就好比手机上的应用商店,帮助我们对软件的下载、安装和卸载 1、首先查看自己是否安装过git [rootxiaoxi ~]# git -bash: git: command not fo…

一文入门Python面向对象编程(干货满满)

在开始之前,我一直企图找到一个通俗直观的例子来介绍面向对象。找来找去,发现什么都可以是面向对象,什么又都不是面向对象。后来我发现,人类认识社会的方式更多的就是面向对象的方式。“物以类聚、人以群分”,这句话好…

观察者模式(常用)

观察者模式(Observer模式) 在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者…

VPS简介:基于Amazon Ligtsail的概述

当你作为一个开发者,你想要开发自己的系统,构建自己的系统架构时,你会有以下两种选择:第一种就是亲自去挑选组件,例如:云服务器、存储、IP地址等等,然后再花时间自己组装起来,就像该…

VIVADO-FFT IP核学习记录

根据用户手册使用IP核 ① 找到user guide / product guide 并打开 ② 找到Customizing and Generating the Core(不同手册可能题目不一样),查看IP核的创建过程中各个参数的意义和设置方法。 ③ 找到port description ,查看接口注释 根据网络教程使用…

Python中PyQt5可视化界面通过拖拽来上传文件

注:这个窗口提供了一个快速上传文件的小tips,如果需要对上传的文件进行进一步处理的可以在“processFiles”函数或者编写其它函数进行扩充就可以。 1、需要安装模块 pip install PyQt5 2、运行效果 1、通过拖拽的方式上传需要的文件到窗口,会…