#git #continuous-integration #continuous-deployment #semantic-release
#git #непрерывная интеграция #непрерывное развертывание #semantic-release
Вопрос:
Я использую semantic-release
для автоматического определения следующей версии, обновления package.json
и нажатия git
. Однако я сталкиваюсь с проблемой, когда это мешает мне напрямую нажимать на мастер.
Я использую GitLab.
мой release.config.js
module.exports = {
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/npm",
["@semantic-release/git", {
"assets": ["dist/**/*.{js,css}", "docs", "package.json"],
"message": "chore(release): ${nextRelease.version} [skip ci]nn${nextRelease.notes}"
}]
]
}
моя gitlab-ci.yml
package-versioning:
stage: package-versioning
tags:
- fe
- xdev
artifacts:
expire_in: 1 day
only:
refs:
- master
dependencies:
- install
- build
- test
script:
- npx semantic-release --tag-format 'app/v${version}'
ошибка:
The command "git push --dry-run --no-verify https://gitlab-ci-token:[secure]@***/**.git HEAD:master" failed with the error message remote: You are not allowed to upload code.
fatal: unable to access 'https://gitlab-ci-token:[secure]@***/**.git/': The requested URL returned error: 403.
[6:02:23 PM] [semantic-release] › ✖ EGITNOPERMISSION Cannot push to the Git repository.
semantic-release cannot push the version tag to the branch next on the remote Git repository with URL https://gitlab-ci-token:[secure]@***/**.git.
Но я на самом деле являюсь владельцем репозитория и уже установил для master разрешение только для владельца. Нужно ли мне настраивать какую-либо другую аутентификацию для запуска скрипта от моего имени?
Итак, мои вопросы:
1 / Как настроить аутентификацию для semantic-release, чтобы он мог отправлять в master непосредственно от вашего имени
2 / Является ли хорошей практикой направлять push в master (даже если это только для обновления версии). Кто-нибудь сталкивался с этим сценарием и каково ваше решение для обновления версии. Действительно ценю ваш вклад и мысли.
Ответ №1:
1.In GitLab вы должны явно настроить скрипт для отправки в Git. Для этого вам нужно создать токен и передать его в ваш CI через переменную env.
В примере посмотрите, как мы это делаем в нашем интеграционном проекте, установив GIT_PUSH_TOKEN — здесь: https://gitlab.com/taleodor/sample-helm-cd
и фактический код ci yaml здесь: https://gitlab.com/taleodor/sample-helm-cd/-/blob/master/.gitlab-ci.yml (строки 25-30).
2. Да, прямое нажатие на изменение версии является обычным явлением.