GitlabCI/CD无法从.gitlab-ci.ymlgitpush

我正在 .gitlab-ci.yml 中编写 GitLab CI/CD 管道脚本我想检查一个特定文件是否在另一个 repo 中更改,如果是,我想复制该文件,提交并推送到当前 repo。一切正常,直到我到达“git push”部分

我尝试了几种方法来修复它:

stages:
    - build

build:
  stage: build
  script:
    - echo "Building"
    - git checkout -b try
    - git remote add -f b https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.{otherRepo}.git
    - git remote update
    - CHANGED=$(git diff try:mobile_map.conf b/master:mobile_map.conf)
    - if [ -n "${CHANGED}" ]; then
        echo 'changed';
        FILE=$(git show b/master:mobile_map.conf > mobile_map.conf);
        git add mobile_map.conf;
        git commit -m "updating conf file";
        git push;
      else
        echo 'not changed';
      fi
    - git remote rm b

回答

作业令牌仅对您的存储库具有读取权限。

为每个作业生成一个唯一的作业令牌,并为用户提供读取访问权限,创建该作业的用户通常可以访问所有项目。唯一的工作令牌没有任何写入权限,但有增加支持的建议。

您不能使用部署令牌,因为它们不能对存储库(可能的令牌)进行写访问。您可以使用对存储库具有读写访问权限的项目访问令牌。

然后你可以使用你的项目访问令牌作为 url 中的环境变量。

git push "https://gitlab-ci-token:$PROJECT_ACCESS_TOKEN@$CI_SERVER_HOST/$CI_PROJECT_PATH.git"

至少这就是我们在管道中使用它的方式。我希望这能帮助你进一步。


以上是GitlabCI/CD无法从.gitlab-ci.ymlgitpush的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>