Сейчас я пытаюсь автоматически увеличить версию, добавить к ней SNAPSHOT
и зафиксировать в ветке, что данный тег был создан с использованием GitLab 12.9.2 и GitLab-Shell 12.0.0.
Я знаю, что теги (особенно теги выпуска) должны создаваться из мастера, но, поскольку я могу получить ветку разработки или другие ветки, на которые я хотел бы пометить коммиты, я хотел сохранить возможность тегировать заданная фиксация, сборка, развертывание соответствующего артефакта (в Nexus), автоматическое увеличение версии (например, с 0.1.3
до 0.1.4-SNAPSHOT
) и фиксация этого в ветке, из которой был создан тег .
В то время как все остальные шаги работают, я терплю неудачу на последнем, потому что я не могу найти правильную переменную среды, которая относится к фиксации (и ветви), из которой был создан тег.
Здесь является выдержкой из CI-файла:
build-release:
extends: .build-template
only:
- tags
before_script:
# Setup git
- git config http.sslVerify false
- git config user.email "git-bot@base/gitlab"
- git config user.name "$GIT_CI_USER"
- git remote set-url origin https://$GIT_CI_USER:$GIT_CI_PASSWORD@base/gitlab/development/particles/particles-front.git
- git fetch
# - git config http.sslCAInfo /etc/gitlab-runner/certs/base.crt ?
# - git config http.sslCert /etc/gitlab-runner/certs/base.crt ?
- cd $CI_BUILDS_DIR/$SUB_PATH
# Install node_modules
- npm install
# Show versions
- node --version
- npm --version
- npm run ng version
# Save version for artifact-name
- echo -n $CI_COMMIT_TAG > $CI_BUILDS_DIR/$SUB_PATH/version
# Set version back via npm in order to display it possibly on the user interface
- npm version $(cat $CI_BUILDS_DIR/$SUB_PATH/version)
after_script:
# Auto-Increment (patch-)version, append SNAPSHOT, commit & push
- git checkout $CI_COMMIT_REF_NAME
- cd $CI_BUILDS_DIR/$SUB_PATH
- cat $CI_BUILDS_DIR/$SUB_PATH/version
- npm version patch | cut -c 2-30 | tr -d '\n' > $CI_BUILDS_DIR/$SUB_PATH/version
- echo -n -SNAPSHOT >> $CI_BUILDS_DIR/$SUB_PATH/version
- npm version $(cat $CI_BUILDS_DIR/$SUB_PATH/version)
- npm run prestart
- git add ./package*.json ./src/_versions.ts
- git status -sb
- git commit -m "New Snapshot ($(cat $CI_BUILDS_DIR/$SUB_PATH/version))"
- git push
Ошибка, которую я получаю (в последней команде, как видно в консоли вывода задания):
$ git push
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use
git push origin HEAD:<name-of-remote-branch>
Примечание : все работает нормально за исключением того, что фиксация в $CI_COMMIT_REF_NAME
кажется плохой идеей, потому что она содержит только тег (в случае выше), но не фиксацию (и, следовательно, ветку), из которой был создан тег. Я говорю об этом конкретном значении здесь:
.
Я читал различные другие вопросы SO, связанные с topi c (например, этот: Как мне pu sh в репо из конвейера Gitlab CI? ), но они, похоже, не решают мою проблему. Другое решение, использующее --points-at
, кажется интересным, но я не знаю, как его использовать, чтобы решить мою проблему.
Любая помощь приветствуется!