问题描述
我正在使用 IBM Cloud Code Engine to build the source code from a private git repo。我试了很多次,buildrun 总是失败。以下是我已经完成的步骤。
-
将我的公钥 (/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
谁能解释一下?谢谢。
解决方法
IBM Cloud Code Engine 的构建功能可以访问公共和私有存储库中的源代码。存储库公开有两个条件:
- 必须在您的存储库提供商(例如 GitHub 或 GitLab)处将存储库标记为公开。
- 必须无需任何身份验证即可访问存储库。这对 GitHub Enterprise 安装起到了作用,例如 github.ibm.com,它可以在前面放置额外的身份验证以防止匿名访问。
从代码引擎的角度来看,第二个条件使您的存储库成为私有存储库。要在代码引擎构建中处理存储库,有一个简单的规则:
- 对于公共仓库,使用仓库的 HTTPS URL,没有仓库访问密码
- 对于私有仓库,使用仓库的 SSH URL 和仓库访问密码
您正确指定了存储库访问密钥,但必须更改源 URL 以使用 SSH 协议。找到 URL 的最简单方法是 GitHub 中的代码下拉列表:
所以在您的情况下应该是 [email protected]/myaccount/myrepo。
进一步参考:
有关如何设置存储库访问密码的说明可以在 Accessing private code repositories 中找到。
可以在 Troubleshooting tips for builds 中找到 BuildRun 失败的故障排除。它包括从 BuildRun 检索日志的说明,并将您看到的错误消息转换为根本原因,并提供解决步骤。
,由于您使用的是 ssh 密钥,请确保您的 git 存储库的 URL 以 git@
而不是 https://
开头。因此,在您的情况下,它应该是 [email protected]/myaccount/myrepo。
有关构建失败的更多问题,您可以查看相关的 troubleshooting buildruns section in the Code Engine docs。