本文介绍: 该方法并不需要对submodule文件进行调整,但是需要对ci文件进行比较大的调整。另外需要注意的是GITLABUSERNAME和GITLAB_TOKEN都已经保存到变量中。该方法并不需要对submodule文件进行调整,只需要对ci文件进行稍微的调整即可。另外就是里面的修改涉及到了对ssh端口是标准方式和非标准方式的修改。该方法并不需要对ci文件进行大的调整,只需要添加。客户的submodule使用的是ssh协议拉取。但是需要修改submodule文件。修改submodule文件。
背景信息
前置操作
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
在CI/CD中使用submodule
方法1: 使用相对路径的方式
该方法并不需要对ci文件进行大的调整,只需要添加GIT_SUBMODULE_STRATEGY: recursive关键字;但是需要修改submodule文件。
[submodule "test-1"]
path = test-1
url = ../../approve/test-1.git
[submodule "123123"]
path = 123123
url = ../../mr/123123.git
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: clone
GIT_SUBMODULE_STRATEGY: none
default:
tags:
- docker-mac
test1:
extends: .git:submodule
stage: test
script:
- 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 -l
image:
entrypoint: ['']
name: bitnami/git
方法 3: 通过pre_get_sources_script关键字
该方法并不需要对submodule文件进行调整,只需要对ci文件进行稍微的调整即可。
将私钥以变量的方式通过base64加密添加到变量中
gitlab-ci文件
variables:
GIT_STRATEGY: clone
GIT_SUBMODULE_STRATEGY: recursive
default:
tags:
- '888'
build:
image: ubuntu:latest
script:
- ls -l
- ls -l envsubst
hooks:
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
原文地址:https://blog.csdn.net/weixin_44729138/article/details/134662139
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_26956.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。