【问题标题】:git rev-list with a gitrevision range argument on circleci build not workinggit rev-list 在circleci build 上带有 gitrevision range 参数不起作用
【发布时间】:2020-04-15 11:55:41
【问题描述】:

对于this repro repo 在 CircleCI 管道构建作业中 git rev-list --count develop..$CIRCLE_SHA1 返回 0。

同上 git rev-list --count develop..HEAD.

git rev-list develop..HEAD 也不做任何事情

build output

以上所有 git 命令在本地运行时都会产生不同的结果。 git rev-list --count HEAD 为本地和 CircleCI 运行返回相同的非零值。 每当提供 gitrevision range 参数时,似乎 git rev-list 在 CircleCI 上失败 难道我做错了什么?如何让 git rev-list 使用 gitrevision 范围?

config.yml

version: 2.1

executors:
    base:
        docker:
            - image: cimg/base:2020.01

jobs:
    build:
        executor: base
        steps:
        - checkout
        - run:
            name: Test git in bash script
            command: chmod +x .circleci/circle_test.sh && .circleci/circle_test.sh
        - run:
            name: Test git in circleci command
            environment:
                PACKAGE_PATH: "./packages"       
            command: |
                echo -e $(git rev-list -1 develop..$CIRCLE_SHA1 -- ${PACKAGE_PATH#./} | cat)
                echo -e $(git rev-list -1 develop..$CIRCLE_SHA1 | cat)
                echo -e $(git rev-list develop..$CIRCLE_SHA1 | cat)
                git rev-list --count develop..$CIRCLE_SHA1
                git rev-list --count HEAD

workflows:
    version: 2
    ci:
        jobs:
        - build

.circleci/circle_test.sh

PACKAGE_PATH="./packages" 

LATEST_PACKAGE_COMMIT_SINCE_DEVELOP=$(git rev-list -1 develop..$CIRCLE_SHA1 -- ${PACKAGE_PATH#./})

LATEST_COMMIT_SINCE_DEVELOP=$(git rev-list -1 develop..$CIRCLE_SHA1)

COMMITS_SINCE_DEVELOP=$(git rev-list develop..$CIRCLE_SHA1)

COMMITS_COUNT_SINCE_DEVELOP=$(git rev-list --count develop..$CIRCLE_SHA1)

COMMITS_COUNT=$(git rev-list --count HEAD)

echo -e "\e[36m  first changed commit in package since develop $LATEST_PACKAGE_COMMIT_SINCE_DEVELOP \e[0m"

echo -e "\e[36m  first changed commit since develop $LATEST_COMMIT_SINCE_DEVELOP \e[0m"

echo -e "\e[36m  commits since develop $COMMITS_SINCE_DEVELOP \e[0m"

echo -e "\e[36m  commits count since develop $COMMITS_COUNT_SINCE_DEVELOP \e[0m"

echo -e "\e[36m  commits count $COMMITS_COUNT \e[0m"

echo -e "\e[36m  this commit $CIRCLE_SHA1 \e[0m"

【问题讨论】:

  • 我从未使用或设置过 CircleCI,但 git-shallow-clone 听起来像个问题:浅克隆是故意忽略大多数提交的克隆。你不能计算你没有的提交。要计算提交,请不要​​使用浅克隆。
  • @torek 我已更改 circleci 配置以使用正常的 circleci 结帐并更新帖子以反映这一点。我仍然得到与以前相同的结果
  • 好的 - 现在问题可能已经归结为 CircleCI 本身特有的问题......我不知道没有使用它! :-)

标签: git circleci-2.0


【解决方案1】:

在 CircleCI 上,使用完整的提交 sha1 而不是分支名称 例如,使用 bash 的开发分支的 sha1 DEVELOP_SHA1=$(git rev-parse origin/develop)

那么LATEST_COMMIT_SINCE_DEVELOP=$(git rev-list -1 develop..$CIRCLE_SHA1)应该写成LATEST_COMMIT_SINCE_DEVELOP=$(git rev-list -1 $DEVELOP_SHA1..$CIRCLE_SHA1)

【讨论】:

    猜你喜欢
    • 2020-11-26
    • 2014-10-22
    • 2021-01-31
    • 2021-12-18
    • 2020-07-17
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多