在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.mzph.cn/news/180133.shtml

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

相关文章

java三大集合类--List

List Set Map 一、List 几个小问题: 1、接口可以被继承吗?(可以) 2、接口可以被多个类实现吗?(可以) 3、以下两种写法有什么区别? //List list1new List();是错误的因为List()…

数据治理技术:研究现状与数据规范

随着信息技术的迅速发展,数据规模逐渐扩大,与此同时,劣质数据也随之而来,极大地降低了数据挖掘的质量,对信息社会造成了严重的困扰,劣质数据大量存在于很多领域和机构,国外权威机构的统计表明:美…

Android : 异常记录

查询大数据时 报错 android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos0, totalRows1解决办法:cursor DB.rawQuery("select * from " DBhelpUtil.TABLE_NAME" where id ?",new String[]…

untiy 配置iis服务器来打开webgl

最简单的方法是不需要配置服务器,打包的时候直接build and run,但是有时候如果我们需要调整js的内容,会很不方便,所以配置一个iis服务器还是很有必要的 首先要开启iis服务 控制面板,查看方式选类型,点击程…

C++设计模式——工厂模式 :简单工厂、工厂方法、抽象工厂

工厂模式可以分为三种,简单工厂模式,工厂方法模式和抽象工厂模式。 那么,这三种工厂模式长啥样,又为啥会衍生出这三种模式来呢?本篇和大家一起来学习总结一下。 一、简单工厂模式 简单工厂SimpleFactory 负责创建所有…

Webpack——模块打包

模块之于程序,就如同细胞之于生物体,是具有特定功能的组成单元。不同的模块负责不同的工作,它们以某种方式联系在一起,共同保证程序的正常运转。介绍Webpack如何对其进行打包以及合并,主要内容如下: 不同模…

使用OSS搭建私有云内网yum仓库的方法

使用OSS搭建私有云内网yum仓库的方法 文字&图片内容已脱敏 #、前几天接到一个搭建内网yum源的任务。刚接到这个任务的时候还是比较头疼的,因为内部有很多VPC。VPC与VPC之间是不互通的,又不能打高速通道,也不可能每个VPC下边都建一个yum…

Python 判断域名是否合规且是否可访问

需求 获得参数为域名的字符串后 1. 判定是否为合规域名 2. 该域名是否活着(可访问) 实例 headers { # 默认标头User-Agent: $,Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8,Accept-Language: en-US,en;q0.5,Accept-Enc…

csv文件EXCEL默认打开乱码问题

这里讨论的问题是,当用记事本打开带有中文字符的csv正常时,用excel打开却是乱码。 简单概括就是:编码问题,windows的 excel打开csv文本文件时,默认使用的是系统内的ANSI,在中文环境下就是GB2312。如果写文件…

mySQL踩坑记录

1.MYSQL Workbench-8.0.27.1出现"Exception: Current profile has no WMI enabled"错误的解决方法 MYSQL Workbench-8.0.27.1出现“Exception: Current profile has no WMI enabled“错误的解决方法_赛风扥的博客-CSDN博客 C:\Program Files\MySQL\MySQL Workbench …

windows11 phpstudy_pro php8.2 安装redis扩展

环境:windows11 phpstudy_pro php8.2.9 一、命令查看是否安装redis扩展 在对应网站中通过打开,,选择对应的PHP版本,用命令 php -m 查看自己的php 有没有redis扩展 上面如果有,说明已经安装了,如果没有安装&#xff1…

AWL中英文对照表

Sublist 1 sector:部门、 available:可用的、 financial:财务的、 process:过程、 individual:个人的、 specific:具体的、 principle:原则、 estimate:估计、 variables&#xff1…

5 时间序列预测入门:LSTM+Transformer

0 引言 论文地址:https://arxiv.org/abs/1706.03762 1 Transformer Transformer 模型是一种用于处理序列数据的深度学习模型,主要用于解决自然语言处理(NLP)任务。它在许多 NLP 任务中取得了重大突破,如机器翻译、文本…

docker安装elasticsearch

1、拉取镜像 docker pull elasticsearch:7.17.5 (听说这玩意不同版本有不同的坑,不兼容程序等等,所以要注意下载对应版本号) 2、创建挂载目录 mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/data echo "http.host: …

Linux内存管理(六十四):ION 内存管理器——system heap

源码基于:Linux 5.4 约定: 芯片架构:ARM64内存架构:UMACONFIG_ARM64_VA_BITS:39CONFIG_ARM64_PAGE_SHIFT:12CONFIG_PGTABLE_LEVELS :30. 前言 ION 是 Google 在 Android 4.0 中引入,目的主要是通过在硬件设备和用户空间之间分配和共享内存,实现设备之间零拷贝共享内存…

Servlet-Vue-JSON交互

Servlet-Vue-JSON交互 统一结果返回 定义 package org.example.result;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data NoArgsConstructor AllArgsConstructor public class Result<T> {private Integer code;private St…

Android Studio 模拟器设置独立窗口

目录 模拟器在窗口内部运行 设置成独立窗口 模拟器在窗口内部运行 操作起来十分不便 设置成独立窗口 Android Studio -> Preferences(Settings) -> Tools-> Emulator ->取消勾选 Launch in a tool window -> 点击右下角的 OK 按钮 -> 重启 Android Studio

Python与微信交互(互动)神器yyds

Weixin-Python 是一个用于开发微信公众平台应用的 Python 库。它可以帮助你轻松地处理微信服务器发来的消息&#xff0c;以及向用户发送各种类型的消息。 Weixin-Python 的主要功能包括&#xff1a; 验证微信服务器的签名&#xff0c;确保请求来自微信服务器。解析微信服务器发…

前端---CSS篇(详解CSS)

1.CSS简介 CSS(Cascading Style Sheets)层叠样式表&#xff0c;是用来为结构化文档&#xff08;HTML、XML等应用&#xff09;添加样式,比如字体、颜色、大小、间距的计算机语言。CSS目前已经发展到了CSS3.0了。 2.CSS导入方式 CSS有三种导入方式&#xff1a; 1.行内样式&am…

MySQL在Docker容器中的性能损失分析与优化策略

文章目录 1. Docker容器对MySQL性能的潜在影响1.1. IO性能1.2. 网络性能1.3. 资源隔离 2. 优化策略2.1. 使用本地数据卷2.2. 配置合理的容器网络2.3. 限制容器资源2.4. 使用容器编排工具 3. 性能测试与监控4. 结论 &#x1f389;MySQL在Docker容器中的性能损失分析与优化策略 ☆…