IBM Cloud Code Engine 无法为私有存储库构建
IBM Cloud Code Engine fails to build for private repo
我正在使用 IBM Cloud Code Engine to build the source code from a private git repo。我试了很多次,build运行总是失败。以下是我完成的步骤。
将我的 public 密钥 (/root/.ssh/id_rsa.pub) 作为部署密钥添加到我的私有仓库中
使用 IBM Cloud Code Engine CLI 创建存储库访问凭证
ibmcloud ce repo create --name ibmgithub --key-path /root/.ssh/id_rsa --host github.ibm.com
使用 IBM Cloud Code Engine CLI 创建构建,然后提交构建 运行
ibmcloud ce build create --name minion --image us.icr.io/mynamespace/myimg --rs ce-default-icr-us-south --git-repo-secret ibmgithub --source https://github.ibm.com/myaccount/myrepo --strategy dockerfile --size medium
构建运行总是失败
#:~/synthetics-private-minion# ibmcloud ce bd get -n minion
Getting build 'minion'
OK
Name: minion
ID: 0abc63a0-07d5-42c5-b70a-227e52310276
Project Name: private location
Project ID: 25491342-e9e8-4ac7-90ff-b9994cda9242
Age: 6m24s
Created: 2021-03-31T04:11:41-05:00
Status: Succeeded
Reason: all validations succeeded
Image: us.icr.io/mynamespace/myimg
Registry Secret: ce-default-icr-us-south
Build Strategy: kaniko-medium
Timeout: 10m0s
Source: https://github.ibm.com/myaccount/myrepo
Commit: main
Dockerfile: Dockerfile
Repo Secret: ibmgithub
Build Runs:
Name Status Age
minion-run-sj5fl "step-git-source-source-cm7pc" exited with code 1 (image: "icr.io/obs/codeengine/tekton-pipeline/git-init-4874978a9786b6625dd8b6ef2a21aa70@sha256:47b8008fa1910fa36c8284871eb9d8e7fbab8bc3a1db4cdd97c61d88727cc58f"); for logs run: kubectl -n 7pztl5cw3ad logs minion-run-sj5fl-nbzft-pod-rx9x9 -c step-git-source-source-cm7pc 5m42s
- 我怀疑构建 运行 未能从我的私人仓库中获取源代码。我检查了回购 UI,它显示了部署密钥
Never used
。
任何人都可以解释一下吗?谢谢。
由于您使用的是 ssh 密钥,请确保 git 存储库的 URL 以 git@
而不是 https://
开头。所以在你的情况下应该是 git@github.ibm.com/myaccount/myrepo.
有关构建失败的更多问题,您可以查看相关的 troubleshooting buildruns section in the Code Engine docs。
IBM Cloud Code Engine 的构建功能可以访问 public 和私有存储库中的源代码。存储库有两个条件 public:
- 存储库必须在您的存储库提供商处标记为 public(例如 GitHub 或 GitLab)。
- 存储库必须无需任何身份验证即可访问。这对 GitHub 企业安装起作用,例如 github.ibm.com,它可以在前面放置额外的身份验证以防止匿名访问。
第二个条件使您的存储库从代码引擎的角度来看是私有的。要在代码引擎构建中寻址存储库,有一个简单的规则:
- 对于 public 存储库,使用存储库的 HTTPS URL 并且没有存储库访问密码
- 对于私有存储库,使用存储库的 SSH URL 和存储库访问密码
您正确指定了存储库访问密码,但必须更改源 URL 以使用 SSH 协议。找到 URL 的最简单方法是 GitHub:
中的代码下拉列表
所以你的情况应该是git@github.ibm。com/myaccount/myrepo。
进一步参考:
可以在 Accessing private code repositories 中找到有关如何设置存储库访问密码的说明。
可以在 Troubleshooting tips for builds 中找到 BuildRun 失败的故障排除。它包括从 BuildRun 检索日志的说明,并将您看到的错误消息转化为根本原因,并提供解决这些错误的步骤。
我正在使用 IBM Cloud Code Engine to build the source code from a private git repo。我试了很多次,build运行总是失败。以下是我完成的步骤。
将我的 public 密钥 (/root/.ssh/id_rsa.pub) 作为部署密钥添加到我的私有仓库中
使用 IBM Cloud Code Engine CLI 创建存储库访问凭证
ibmcloud ce repo create --name ibmgithub --key-path /root/.ssh/id_rsa --host github.ibm.com
使用 IBM Cloud Code Engine CLI 创建构建,然后提交构建 运行
ibmcloud ce build create --name minion --image us.icr.io/mynamespace/myimg --rs ce-default-icr-us-south --git-repo-secret ibmgithub --source https://github.ibm.com/myaccount/myrepo --strategy dockerfile --size medium
构建运行总是失败
#:~/synthetics-private-minion# ibmcloud ce bd get -n minion
Getting build 'minion'
OK
Name: minion
ID: 0abc63a0-07d5-42c5-b70a-227e52310276
Project Name: private location
Project ID: 25491342-e9e8-4ac7-90ff-b9994cda9242
Age: 6m24s
Created: 2021-03-31T04:11:41-05:00
Status: Succeeded
Reason: all validations succeeded
Image: us.icr.io/mynamespace/myimg
Registry Secret: ce-default-icr-us-south
Build Strategy: kaniko-medium
Timeout: 10m0s
Source: https://github.ibm.com/myaccount/myrepo
Commit: main
Dockerfile: Dockerfile
Repo Secret: ibmgithub
Build Runs:
Name Status Age
minion-run-sj5fl "step-git-source-source-cm7pc" exited with code 1 (image: "icr.io/obs/codeengine/tekton-pipeline/git-init-4874978a9786b6625dd8b6ef2a21aa70@sha256:47b8008fa1910fa36c8284871eb9d8e7fbab8bc3a1db4cdd97c61d88727cc58f"); for logs run: kubectl -n 7pztl5cw3ad logs minion-run-sj5fl-nbzft-pod-rx9x9 -c step-git-source-source-cm7pc 5m42s
- 我怀疑构建 运行 未能从我的私人仓库中获取源代码。我检查了回购 UI,它显示了部署密钥
Never used
。
任何人都可以解释一下吗?谢谢。
由于您使用的是 ssh 密钥,请确保 git 存储库的 URL 以 git@
而不是 https://
开头。所以在你的情况下应该是 git@github.ibm.com/myaccount/myrepo.
有关构建失败的更多问题,您可以查看相关的 troubleshooting buildruns section in the Code Engine docs。
IBM Cloud Code Engine 的构建功能可以访问 public 和私有存储库中的源代码。存储库有两个条件 public:
- 存储库必须在您的存储库提供商处标记为 public(例如 GitHub 或 GitLab)。
- 存储库必须无需任何身份验证即可访问。这对 GitHub 企业安装起作用,例如 github.ibm.com,它可以在前面放置额外的身份验证以防止匿名访问。
第二个条件使您的存储库从代码引擎的角度来看是私有的。要在代码引擎构建中寻址存储库,有一个简单的规则:
- 对于 public 存储库,使用存储库的 HTTPS URL 并且没有存储库访问密码
- 对于私有存储库,使用存储库的 SSH URL 和存储库访问密码
您正确指定了存储库访问密码,但必须更改源 URL 以使用 SSH 协议。找到 URL 的最简单方法是 GitHub:
中的代码下拉列表所以你的情况应该是git@github.ibm。com/myaccount/myrepo。
进一步参考:
可以在 Accessing private code repositories 中找到有关如何设置存储库访问密码的说明。
可以在 Troubleshooting tips for builds 中找到 BuildRun 失败的故障排除。它包括从 BuildRun 检索日志的说明,并将您看到的错误消息转化为根本原因,并提供解决这些错误的步骤。