[英]How to use a private git repo while building yocto using bitbake in Ubuntu 16.04?
在配置后使用 bitbake 时,bitbake 在尝试使用 SSH 链接克隆/访问私有存储库之前失败。
$ bitbake linux-imx
git -c core.fsyncobjectfiles=0 ls-remote ssh://git@gitlab.com:~/some-project/some-repo.git
| DEBUG: Python function base_do_fetch finished
| DEBUG: Python function do_fetch finished
| ERROR: Function failed: Fetcher failure: Fetch command failed with exit code 128, output:
| ssh: Could not resolve hostname gitlab.com:~: Name or service not known
| fatal: Could not read from remote repository.
|
| Please make sure you have the correct access rights
| and the repository exists.
|
ERROR: Task 4 (/home/user/Projects/some_project/some-project-release-bsp/sources/meta-fsl-bsp-release/imx/meta-bsp/recipes-kernel/linux/linux-imx_4.1.15.bb, do_fetch) failed with exit code '1'
当我尝试从 URL 中删除~/
时,我收到类似的错误。
| DEBUG: Python function base_do_fetch finished
| DEBUG: Python function do_fetch finished
| ERROR: Function failed: Fetcher failure: Fetch command failed with exit code 128, output:
| ssh: Could not resolve hostname gitlab.com:some-project: Name or service not known
| fatal: Could not read from remote repository.
我什至尝试将 URL 修改为 https: ,它给了我另一个错误
git -c core.fsyncobjectfiles=0 ls-remote http://gitlab.com/some-project/some-repo.git
| DEBUG: Python function base_do_fetch finished
| DEBUG: Python function do_fetch finished
| ERROR: Function failed: Fetcher failure: Fetch command failed with exit code 128, output:
| fatal: could not read Username for 'https://gitlab.com': No such device or address
|
ERROR: Task 4 (/home/user/Projects/some-project/some-project-release-bsp/sources/meta-fsl-bsp-release/imx/meta-bsp/recipes-kernel/linux/linux-imx_4.1.15.bb, do_fetch) failed with exit code '1'
当我在终端中尝试相同而不是 bitbake 时,它成功了所需的输出
git -c core.fsyncobjectfiles=0 ls-remote git@gitlab.com:some-project/some-repo.git
我正在使用 Ubuntu 16.04 。 我知道 Yocto build 未在 Ubuntu 16.04 中进行测试。
WARNING: Host distribution "Ubuntu-16.04" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.
但是以前的公共存储库构建成功了。 那么有没有办法使这项工作?
尝试使用:
git://git@gitlab.com/some-project/some-repo.git;protocol=ssh;branch=${SRCBRANCH}
在您的SRC_URI中。
注意删除:~
。
这与Yocto如何从gitlab
获取源代码gitlab
。 无论存储库是公共的还是私有的,git链接都将不起作用。
我进行了很多搜索,但找不到原因。 因此,我不得不将存储库移至github。 当它切换到github时它将工作。
另一种方法是将源获取到本地,然后编辑配方以从本地获取源。
您可能需要的是 gitlab 存储库的部署令牌。 我怀疑 github 有类似的东西。 https://docs.gitlab.com/ee/user/project/deploy_tokens/ 。
创建令牌后,您将拥有一个令牌名称,例如gitlab+deploy-token-1
和令牌本身,该名称仅在创建时显示,例如yN_gx3zzrrgqnxzzgsZmqS
。
一旦您为您的令牌获得了这些值,请将其作为user:pass
添加到您的 SRC_URI 中,如下所示:
SRC_URI = "git://gitlab.com/my_username/my_repo.git;protocol=https;user=gitlab+deploy-token-1:yN_gx3zzrrgqnxzzgsZmqS;branch=master"
请注意,任何有权访问此配方的人都可以克隆您的私人存储库。 您可以为令牌设置到期日期,也可以随时手动撤销它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.