如何在 Bitbucket 管道中使用 git 个子模块?
How to use git submodules with Bitbucket pipelines?
如何将 git 子模块与 Bitbucket 管道一起使用?
我正在使用 Bitbucket 管道构建我的项目,但在拉入我的子模块时遇到问题,我可能没有正确配置 SSH 密钥。
我做了什么:
- 在我的电脑中创建了 SSH 密钥对。
- 在 Settings/SSH 键下的两个存储库(构建将 运行 和依赖项存储库中的存储库)中粘贴相同的密钥对。
构建错误:
Submodule 'dependencies/my-dependency' (git@bitbucket.org:mycompany/my-dependency.git) registered for path 'dependencies/my-dependency'
Cloning into 'dependencies/my-dependency'...
Warning: Permanently added the RSA host key for IP address '18.205.93.2' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Clone of 'git@bitbucket.org:mycompany/my-dependency.git' into submodule path 'dependencies/my-dependency' failed
我的 yml 文件
image:
name: myuser/my-image-name
username: $DOCKER_HUB_USERNAME
password: $DOCKER_HUB_PASSWORD
email: $DOCKER_HUB_EMAIL
pipelines:
branches:
pipelines-setup:
- step:
script:
- git submodule update --init
找到解决方案。我必须将 ssh public 密钥添加到 Settings / Access Keys
not Settings / SSH Keys
.
下的子模块存储库
这是另一个例子
- 使用默认图片
- 添加子模块
- 仅压缩需要的文件并上传到 bitbucket 下载
image: atlassian/default-image:2
pipelines:
default:
- step:
deployment: production
script:
- git submodule update --recursive --init
- apt-get update && apt-get install -y zip
- zip -r Test.zip . -x bitbucket-pipelines.yml *.git*
- pipe: atlassian/bitbucket-upload-file:0.1.3
variables:
BITBUCKET_USERNAME: $BITBUCKET_USERNAME
BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD
FILENAME: Test.zip
- 您的源存储库应包含文件
MyProject/.gitmodules
,其中包含子模块的路径(您 .gitmodules
文件中存储库的路径应采用 git@bitbucket.org:....git
格式):
[submodule "modules"]
path = modules
url = git@bitbucket.org:....git
[submodule "translations"]
path = translations
url = git@bitbucket.org:....git
- 打开你想要运行pipelines
的存储库
- 打开设置
- 在 PIPELINES 部分打开 SSH 密钥
- 单击生成密钥
- 复制public键
现在您需要将 ssh 密钥添加到子模块存储库
- 打开子模块存储库
- 打开设置
- 在 GENERAL 部分打开 Access keys
- 添加复制的 ssh public 密钥
如果您已经在主存储库中初始化了一个子模块,那么您可以在 bitbucket 管道步骤脚本中添加此命令:
- git submodule update --init --recursive
无需使用 SSH 密钥方法。
如何将 git 子模块与 Bitbucket 管道一起使用?
我正在使用 Bitbucket 管道构建我的项目,但在拉入我的子模块时遇到问题,我可能没有正确配置 SSH 密钥。
我做了什么:
- 在我的电脑中创建了 SSH 密钥对。
- 在 Settings/SSH 键下的两个存储库(构建将 运行 和依赖项存储库中的存储库)中粘贴相同的密钥对。
构建错误:
Submodule 'dependencies/my-dependency' (git@bitbucket.org:mycompany/my-dependency.git) registered for path 'dependencies/my-dependency'
Cloning into 'dependencies/my-dependency'...
Warning: Permanently added the RSA host key for IP address '18.205.93.2' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Clone of 'git@bitbucket.org:mycompany/my-dependency.git' into submodule path 'dependencies/my-dependency' failed
我的 yml 文件
image:
name: myuser/my-image-name
username: $DOCKER_HUB_USERNAME
password: $DOCKER_HUB_PASSWORD
email: $DOCKER_HUB_EMAIL
pipelines:
branches:
pipelines-setup:
- step:
script:
- git submodule update --init
找到解决方案。我必须将 ssh public 密钥添加到 Settings / Access Keys
not Settings / SSH Keys
.
这是另一个例子
- 使用默认图片
- 添加子模块
- 仅压缩需要的文件并上传到 bitbucket 下载
image: atlassian/default-image:2
pipelines:
default:
- step:
deployment: production
script:
- git submodule update --recursive --init
- apt-get update && apt-get install -y zip
- zip -r Test.zip . -x bitbucket-pipelines.yml *.git*
- pipe: atlassian/bitbucket-upload-file:0.1.3
variables:
BITBUCKET_USERNAME: $BITBUCKET_USERNAME
BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD
FILENAME: Test.zip
- 您的源存储库应包含文件
MyProject/.gitmodules
,其中包含子模块的路径(您.gitmodules
文件中存储库的路径应采用git@bitbucket.org:....git
格式):
[submodule "modules"]
path = modules
url = git@bitbucket.org:....git
[submodule "translations"]
path = translations
url = git@bitbucket.org:....git
- 打开你想要运行pipelines 的存储库
- 打开设置
- 在 PIPELINES 部分打开 SSH 密钥
- 单击生成密钥
- 复制public键
现在您需要将 ssh 密钥添加到子模块存储库
- 打开子模块存储库
- 打开设置
- 在 GENERAL 部分打开 Access keys
- 添加复制的 ssh public 密钥
如果您已经在主存储库中初始化了一个子模块,那么您可以在 bitbucket 管道步骤脚本中添加此命令:
- git submodule update --init --recursive
无需使用 SSH 密钥方法。