如何使用柯南遥控器配置 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_repo
和CONAN_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++ 包。 > 创建柯南包时,需要考虑四个字段:
name
、version
、user
和channel
。 这些字段唯一地标识一个包。user
和channel
字段在 Conan 2.0 中是可选的,但 GitLab 要求您继续使用它们。自定义命名约定以匹配 GitLab 中的要求而不是柯南设定的标准是低效且不切实际的。
我们更新了 GitLab Conan 存储库以与 Conan 保持一致。 现在您可以发布和下载带有或不带有
user
和channel
字段的柯南包。这项改进可帮助您提高效率,并让您更轻松地在用户界面中查找和验证包。此更改是更广泛的 planned improvements 集合到柯南存储库的第一步,以帮助将该功能从 Beta 版迁移到 GA。
请参阅 Documentation 和 Issue。
【讨论】:
以上是关于如何使用柯南遥控器配置 gitlab-runner?的主要内容,如果未能解决你的问题,请参考以下文章