在CI/CD中使用submodule

背景信息

客户的submodule使用的是ssh协议拉取

前置操作

gitlab添加子模块

git clone ssh://git@kube.bdeet.top:2222/cicd/123.git
cd 123/
ls -la
git submodule add ssh://git@kube.bdeet.top:2222/approve/test-1.git
git submodule add ssh://git@kube.bdeet.top:2222/mr/123123.git
ls -la
cat .gitmodules
git add .
git commit -m 'add submodule repo'
git push

界面查看.gitmodules文件
在这里插入图片描述

在CI/CD中使用submodule

方法1: 使用相对路径的方式

该方法并不需要对ci文件进行大的调整,只需要添加GIT_SUBMODULE_STRATEGY: recursive关键字;但是需要修改submodule文件。

修改submodule文件

[submodule "test-1"]path = test-1url = ../../approve/test-1.git
[submodule "123123"]path = 123123url = ../../mr/123123.git

gitlab-ci文件

image: ubuntu:22.04
variables:GIT_SUBMODULE_STRATEGY: recursive
build2:script: - echo "**************** $(date +'%H:%M:%S') Update DVC****************="tags:- docker-mac

方法2: 通过单独一个job来控制

该方法并不需要对submodule文件进行调整,但是需要对ci文件进行比较大的调整。另外需要注意的是GITLABUSERNAME和GITLAB_TOKEN都已经保存到变量中
另外就是里面的修改涉及到了对ssh端口是标准方式和非标准方式的修改

variables:GIT_STRATEGY: cloneGIT_SUBMODULE_STRATEGY: nonedefault:tags:- docker-mactest1:extends: .git:submodulestage: testscript:- echo "input your code".git:submodule:before_script:# 还未update submodule之前- ls -l- ls 123123 test-1- pwd# 检查未替换前效果- cat .gitmodules## 情况1: 标准的ssh# 调整.gitmodules中的url配置,ssh-> http,标准端口STEP1: 为了匹配https的url规范,需替换:为/#- sed -i "s/:/\//g" .gitmodules## 情况2: 非标准的ssh# 调整.gitmodules中的url配置,ssh-> http,非标准端口STEP1: 为了删除前面的ssh://- sed -i "s%ssh://%%g" .gitmodules# 调整.gitmodules中的url配置,ssh-> http,非标准端口STEP1: 为了删除前面的端口数字- sed -i "s%:${CI_SERVER_SHELL_SSH_PORT}%%g" .gitmodules# STEP2: 加入submodule的用户名和personal token 换为http 模式的url- sed -i "s/git@/https:\/\/${GITLAB_USERNAME}:${GITLAB_TOKEN}@/g" .gitmodules# 检查替换后效果- cat .gitmodules# 做首层的submodule的拉取- git submodule sync- git submodule update --init# 检查拉取状态- git submodule# 检查submodule代码是否拉取成功- ls -limage:entrypoint: ['']name: bitnami/git

方法 3: 通过pre_get_sources_script关键字

该方法并不需要对submodule文件进行调整,只需要对ci文件进行稍微的调整即可。
将私钥以变量的方式通过base64加密添加到变量中

gitlab-ci文件

variables:GIT_STRATEGY: cloneGIT_SUBMODULE_STRATEGY: recursivedefault:tags:- '888'build:image: ubuntu:latestscript:- ls -l- ls -l envsubsthooks:pre_get_sources_script:- apk update- apk add openssh-client- eval $(ssh-agent -s)- echo $SSH_PRIVATE_KEY | base64 -d > id_rsa- chmod 400 id_rsa- ssh-add id_rsa- mkdir -p ~/.ssh- chmod 700 ~/.ssh- mv id_rsa ~/.ssh/- ssh-keyscan -t rsa $CI_SERVER_HOST >> ~/.ssh/known_hosts

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

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

相关文章

带你用uniapp从零开发一个仿小米商场_10. 首页开发

图标菜单栏开发 轮播图开发完成后,就是图标菜单栏了 可以看出这些图标都是一样的样式,所以可以勇哥flex布局让他们每个占百分之20 代码如下,既然都是一样的那就直接用个循环嵌套一下 data数据如下 同样,为了能让这段代码能在别的地方也用到,我直接把它封装成组件 <templ…

【算法】七大经典排序(插入,选择,冒泡,希尔,堆,快速,归并)(含可视化算法动图,清晰易懂,零基础入门)

​ 目录 一、排序的概念及其运用1.1 排序的概念1.2 排序的应用1.3 常见的排序算法 二、常见排序算法的实现2.1 插入排序2.1.1 直接插入排序2.1.2 希尔排序2.1.3 直接插入排序和希尔排序的性能对比 2.2 选择排序2.2.1 直接选择排序2.2.2 堆排序2.2.3 直接选择排序和堆排序的性能…

京东秒杀之项目搭建

shop-parent [pom] &#xff08;商品父模块&#xff09; 1 创建maven项目 2 配置pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSch…

Pytorch Lightning 完全攻略

Pytorch-Lightning这个库我“发现”过两次。第一次发现时&#xff0c;感觉它很重很难学&#xff0c;而且似乎自己也用不上。但是后面随着做的项目开始出现了一些稍微高阶的要求&#xff0c;我发现我总是不断地在相似工程代码上花费大量时间&#xff0c;Debug也是这些代码花的时…

【栈和队列(1)(逆波兰表达式)】

文章目录 前言什么是栈(Stack)栈方法栈的模拟实现链表也可以实现栈逆波兰表达式逆波兰表达式在栈中怎么使用 前言 什么是栈(Stack) 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0…

C++不同平台下的RTTI实现

给定一个含有虚函数的对象的地址&#xff0c;找到对应的类名&#xff0c;不同平台下方法也不同&#xff0c;这是由于RTTI实现并没有统一的标准。 Linux&#xff1a; #include <iostream> #include <typeinfo>class Person { public:virtual void func(){std::cout…

人机交互2——任务型多轮对话的控制和生成

1.自然语言理解模块 2.对话管理模块 3.自然语言生成模块

【FGPA】Verilog:JK 触发器 | D 触发器 | T 触发器 | D 触发器的实现

0x00 JK 触发器 JK 触发器是 RS 触发器和 T 触发器的组合&#xff0c;有两个输入端 J 和 K&#xff0c;如果两个输入端都等于 1&#xff0c;则将当前值反转。 行为表 状态图 Timing Diagram Circuit JK 触发器的设计目的是防止 RS 触发器在输入 S 和 R 均等于 …

JAVA文件IO, File类, 字符流,字节流

文章目录 文件IO1. File2. IO流2.1 字符流2.1.1 Reader2.1.2 Writer 2.2 字节流2.2.1 InputStream2.2.2 FileInputStream2.2.3 利用Scanner进行字符读取2.2.4 OutputStream 文件IO I: Input, 从硬盘往内存读数据 O: Output, 从内存往硬盘输出数据 1. File Java 中通过 java…

java:jpa、Hibernate、Spring Data JPA、ORM以及和mybatis的区别

文章目录 Java连接数据库几种方式JPAHibernate和Spring Data JPAORM框架jpa和mybatis区别Spring Boot JPA使用例子1、创建库和表2、添加依赖3、配置数据源和Hibernate属性4、配置实体类5、创建一个继承JpaRepository的接口&#xff1a;6、创建一个控制器&#xff08;Controller…

SpringCloud原理-OpenFeign篇(四、请求原理)

文章目录 前言正文一、书接上回&#xff0c;从代理对象入手二、ReflectiveFeign.FeignInvocationHandler#invoke()三、SynchronousMethodHandler#invoke(...) 的实现原理3.1 invoke(...)源码3.2 executeAndDecode(...) 执行请求并解码 四、如何更换client 的实现 附录附1&#…

mac电脑下载Netflix Mac(奈飞客户端)安装教程

Netflix Mac&#xff0c;奈飞官方客户端&#xff0c;带给您无限的电影和剧集体验&#xff01;与朋友分享最新热门剧集、电影&#xff0c;与家人一起享受高品质的流媒体内容。 通过Netflix Mac&#xff0c;您可以轻松地搜索、浏览和观看各种类型的影片&#xff0c;包括剧情片、…

Java设计模式系列:单例设计模式

Java设计模式系列&#xff1a;单例设计模式 介绍 所谓类的单例设计模式&#xff0c;就是采取一定的方法保证在整个的软件系统中&#xff0c;对某个类只能存在一个对象实例&#xff0c;并且该类只提供一个取得其对象实例的方法&#xff08;静态方法&#xff09; 比如 Hiberna…

【TC3xx芯片】TC3xx芯片的Clock System功能详解

目录 前言 正文 1.时钟源 1.1 有源晶振和无源晶振 1.1.1 无源晶振 1.1.2 有源晶振 1.1.3 有源晶振和无源晶振的区别 1.1 振荡器电路&#xff08;OSC&#xff09; 1.1.1外部输入时钟模式 1.1.2 外部晶体 / 陶瓷谐振器模式 1.1.3 OSC控制寄存器 1.1.4 配置OSC 1.1.5…

Android Frameworks 开发总结之七

1.修改android 系统/system/下面文件时权限不够问题 下面提到的方式目前在Bobcat的userdebug image上测试可行,还没有在user上测试过. 修改前: leif@leif:~$ adb root restarting adbd as root leif@leif:~$ adb disable-verity verity is already disabled using overlayf…

Unity 关于SpriteRenderer 和正交相机缩放

float oldWidth 750f;float oldHeight 1334f;float newWidth Screen.width;float newHeight Screen.height;float oldAspect oldWidth / oldHeight;float newAspect newWidth / newHeight;//水平方向缩放float horizontalCompressionRatio newAspect / oldAspect;//垂直…

笔记十七、认识React的路由插件react-router-dom和基本使用

react-router 分类 web使用 react-router-dom native使用 react-router-native anywhere&#xff08;使用麻烦&#xff09; react-router 安装 yarn add react-router-dom main.jsx import React from "react"; import ReactDOM from "react-dom/client"…

基于可微分渲染器的相机位置优化【PyTorch3D】

在这个教程中&#xff0c;我们将使用可微渲染学习给定参考图像的相机的 [x, y, z] 位置。 我们将首先使用相机的起始位置初始化渲染器。 然后&#xff0c;我们将使用它来生成图像&#xff0c;使用参考图像计算损失&#xff0c;最后通过整个管道进行反向传播以更新相机的位置。…

C#,《小白学程序》第五课:队列(Queue)其一,排队的技术与算法

日常生活中常见的排队&#xff0c;软件怎么体现呢&#xff1f; 排队的基本原则是&#xff1a;先到先得&#xff0c;先到先吃&#xff0c;先进先出 1 文本格式 /// <summary> /// 《小白学程序》第五课&#xff1a;队列&#xff08;Queue&#xff09; /// 日常生活中常见…

申银万国期货通过ZStack Cube信创超融合一体机打造金融信创平台

信创是数字中国建设的重要组成部分&#xff0c;也是数字经济发展的关键推动力量。作为云基础软件企业&#xff0c;云轴科技ZStack产品矩阵全面覆盖数据中心云基础设施&#xff0c;ZStack信创云首批通过可信云《一云多芯IaaS平台能力要求》先进级&#xff0c;是其中唯一兼容四种…