代码之家  ›  专栏  ›  技术社区  ›  l0b0

如何在GitLab CI社区版中获得目标分支散列?

  •  0
  • l0b0  · 技术社区  · 4 年前

    only: [merge_request] 根据 documentation 得到 CI_MERGE_REQUEST_SOURCE_BRANCH_SHA CI_MERGE_REQUEST_TARGET_BRANCH_SHA declare -x 表明 these variables are set but empty ( .gitlab-ci.yml file CI_ 变量为计算目标分支的提交哈希提供了这些关键信息。

    except: [master] similar results ( .gitlab-ci.yml file

    我已经看过一本书了 similar Q&A ,所以我想知道这是否是一种倒退。

    从作业输出中也可以看到 没有分支, 所以我甚至不能用 master..HEAD .

    0 回复  |  直到 4 年前
        1
  •  1
  •   KiwiKilian    4 年前

    It might actually be a bug . 我很有信心用 SHA 我们的代码库中的变量,但它也遇到同样的问题。我为你的工作找到了一个解决办法:

    lint commit messages:
      stage: test
      rules:
        - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      script:
        - git fetch
        - poetry run gitlint --commits "origin/${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}..origin/${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}"
    

    我换上了电视 rules 语法, GitLab recommends doing so

    规则语法是一种改进的、更强大的解决方案,用于定义作业何时应该运行。考虑使用规则,而不是只使用/except,以最大限度地利用管道。

    结果:

    $ poetry install
    Installing dependencies from lock file
    No dependencies to install or update
    $ git fetch
    From https://gitlab.com/KiwiKilian/pacman-package-file
     * [new branch]      lint       -> origin/lint
     * [new branch]      master     -> origin/master
    $ poetry run gitlint --commits "origin/${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}..origin/${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}"
    Commit 7c9f4e7c1a:
    1: CT1 Title does not start with one of fix, feat, chore, docs, style, refactor, perf, test, revert, ci, build: "Ignore IDEA configuration"
    1: CT1 Title does not follow ConventionalCommits.org format 'type(optional-scope): description': "Ignore IDEA configuration"
    Cleaning up file based variables
    00:00
    ERROR: Job failed: exit code 1