如何使用柯南遥控器配置 gitlab-runner?

Posted

技术标签:

【中文标题】如何使用柯南遥控器配置 gitlab-runner?【英文标题】:how to configure gitlab-runner with conan remote? 【发布时间】:2019-11-27 22:09:44 【问题描述】:

我正在尝试为 gitlab-runner 设置柯南。

当我为自己配置柯南时,我可以使用“柯南远程添加...”,“柯南用户...”,结果保存在我的主目录中。

但是,我无法以 gitlab-runner 身份登录,所以我不知道如何使这些设置保持不变。我可以在 .gitlab-ci.yml 中定义 CONAN_USER_HOME 以指向一个目录,但不清楚 gitlab-runner 是否有权读取我添加到该目录的任何内容。

这通常是通过将这些柯南命令添加到 .gitlab-ci.yml 来完成的,以便每次运行都会调用它们吗?这感觉像是在浪费资源。

【问题讨论】:

【参考方案1】:

柯南提供了一些环境变量,可以帮助您根据远程名称登录:CONAN_LOGIN_USERNAME_ 和 CONAN_LOGIN_PASSWORD_。

但它并不能完全解决您的问题,您需要添加您的远程地址。因此,您可以使用 Gitlab env vars 来实现动态:

image: conanio/gcc8:latest

run:
  script:
    - conan remote add upload_repo $CONAN_REMOTE
    - conan create . demo/stable
    - conan upload foo/0.1.0@demo/stable --all -r upload_repo

在这里,我只是通过 env var $CONAN_REMOTE 添加我的 Conan 存储库,它将通过我的 Gitlab env vars 进行配置。另外,我应该有CONAN_LOGIN_USERNAME_upload_repoCONAN_LOGIN_PASSWORD_upload_repo,否则我需要为conan user -r upload_repo -p <password> <username> 多做一步

它适用于简单的构建,但我会说它是有限的,当您需要构建不同的配置时不能很好地扩展。

IMO 你应该试试Conan Package Tools 这是一个用于 CI 的扩展。你可以为gitlab生成一个模板,运行:

conan new foo/0.1 -cis -ciglg

它将生成文件build.py.gitlab-ci.yml

另外,您可以使用 Gitlab 查看此example。

【讨论】:

如果我指定 CONAN_USER_HOME=/scratch1/conan2 并尝试让柯南在 .gitlab-ci.yml 中创建缓存,会发生以下情况:conan user -r my-repo build_bot WARN:远程注册表文件丢失,在/scratch1/conan2/.conan/remotes.json 错误:遥控器中没有定义远程“my-repo” 我认为你的问题是 Gitlab 而不是柯南。柯南正在遵循正确的步骤,因为您的柯南用户主页是空的,它将在那里创建一个新的。 让 Gitlab 缓存的 Conan 包不是一个好习惯。我可以将包上传到本地远程并在构建时再次下载。【参考方案2】:

柯南似乎通过 GitLab 使用 better integrated,作为替代方法,package registry。

有了GitLab 14.6(2021 年 12 月),您甚至可以:

发布只有名称和版本的柯南包

您使用 GitLab Conan 存储库来发布和共享您的 C/C++ 包。 > 创建柯南包时,需要考虑四个字段:nameversionuserchannel。 这些字段唯一地标识一个包。 userchannel 字段在 Conan 2.0 中是可选的,但 GitLab 要求您继续使用它们。

自定义命名约定以匹配 GitLab 中的要求而不是柯南设定的标准是低效且不切实际的。

我们更新了 GitLab Conan 存储库以与 Conan 保持一致。 现在您可以发布和下载带有或不带有 userchannel 字段的柯南包。

这项改进可帮助您提高效率,并让您更轻松地在用户界面中查找和验证包。此更改是更广泛的 planned improvements 集合到柯南存储库的第一步,以帮助将该功能从 Beta 版迁移到 GA。

请参阅 Documentation 和 Issue。

【讨论】:

以上是关于如何使用柯南遥控器配置 gitlab-runner?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确#include 一个柯南包?

Gitlab-runner 安装和配置

如何从gitlab-runner执行滚动更新

gitlab-Runner配置参数详解

docker中gitlab-runner配置

GitLab-Runner配置参数详解