git rev-list с аргументом диапазона gitrevision при сборке circleci не работает - PullRequest
0 голосов
/ 15 апреля 2020

Для этого репо в задании сборки конвейера CircleCI git rev-list --count develop..$CIRCLE_SHA1 возвращает 0.

То же самое для git rev-list --count develop..HEAD.

Также git rev-list develop..HEAD ничего не делает

выход сборки

Все вышеприведенные команды git дают другой результат при локальном запуске. git rev-list --count HEAD возвращает одинаковое ненулевое значение как для локальных, так и для CircleCI прогонов. Похоже, 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"

1 Ответ

0 голосов
/ 21 апреля 2020

В CircleCI используйте полный коммит sha1 вместо имен веток. Например, sha1 для развивающейся ветки с использованием bash 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)

...