【问题标题】:Executing reckonTagCreate from gitlab ci with authentication failure从 gitlab ci 执行 reckonTagCreate 但身份验证失败
【发布时间】:2019-11-11 19:57:41
【问题描述】:

我已经设置了我的 CI,以便当所有测试都成功时,我可以手动创建一个发布标签,以便在 master 分支上进行新的提交。为此,我在 CI 配置中创建了一个手动步骤,如下所示:

.release-template:
  stage:
    releasing
  dependencies:
    - assemble
  script:
    - ./gradlew reckonTagPush -Preckon.scope=$scope -Preckon.stage=$stage -Dorg.ajoberstar.grgit.auth.username=$GIT_USER -Dorg.ajoberstar.grgit.auth.password=$GIT_PASSSWORD
  only:
    - master
  when: manual #ONLY MANUAL RELEASES, ONLY FROM MASTER

release-major:
  extends: .release-template
  variables:
    scope: major
    stage: final

release-minor:
  extends: .release-template
  variables:
    scope: minor
    stage: final

release-patch:
  extends: .release-template
  variables:
    scope: patch
    stage: final

此设置因身份验证错误而失败。

Execution failed for task ':reckonTagPush'.
> org.eclipse.jgit.api.errors.TransportException: https://gitlab-ci-token@gitlab.com/<group>/<project>.git: not authorized

我在 gitlab.com 上的共享运行器上运行它。

用户名和密码在项目的 gitlab ci 变量中配置。当在 gitlab 运行器中使用的同一 docker 映像中本地运行它时,它工作正常。所以 gitlab runner 执行 gradle 任务或与 gitlab git repo 通信的方式一定有什么特别之处。

【问题讨论】:

  • reckon 是什么,是 Gradle 内置命令吗?
  • reckon 是一个使用 git 标签进行版本控制的 gradle 插件。这意味着 gradle 脚本中没有版本字段,因此没有“bump version”提交。只有标签。

标签: gitlab-ci


【解决方案1】:

通过添加以下脚本解决了访问推送到 git 存储库的问题:

 script:
    - url_host=`git remote get-url origin | sed -e "s/https:\/\/gitlab-ci-token:.*@//g"`
    - git remote set-url origin "https://gitlab-ci-token:$GIT_TOKEN@$url_host"
    - ./gradlew reckonTagPush -Preckon.scope=$scope -Preckon.stage=$stage -Dorg.ajoberstar.grgit.auth.username="$GIT_USER" -Dorg.ajoberstar.grgit.auth.password="$GIT_TOKEN"

这里的显着变化是设置 git 远程 url,以及在将 gitlab ci 变量传递给 reckon 插件时用 " 包围它们

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 2013-01-02
    • 1970-01-01
    • 2021-12-29
    • 2020-07-03
    • 1970-01-01
    相关资源
    最近更新 更多