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运行总是失败。以下是我完成的步骤。

  1. 将我的 public 密钥 (/root/.ssh/id_rsa.pub) 作为部署密钥添加到我的私有仓库中

  2. 使用 IBM Cloud Code Engine CLI 创建存储库访问凭证 ibmcloud ce repo create --name ibmgithub --key-path /root/.ssh/id_rsa --host github.ibm.com

  3. 使用 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

  4. 构建运行总是失败

#:~/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  
  1. 我怀疑构建 运行 未能从我的私人仓库中获取源代码。我检查了回购 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:

  1. 存储库必须在您的存储库提供商处标记为 public(例如 GitHub 或 GitLab)。
  2. 存储库必须无需任何身份验证即可访问。这对 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 检索日志的说明,并将您看到的错误消息转化为根本原因,并提供解决这些错误的步骤。