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

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

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

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

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

【问题讨论】:

    标签: gitlab-ci-runner conan


    【解决方案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。

    请参阅 DocumentationIssue

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多