Как предоставить разрешение для semantic-release для отправки кода в мастер

#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. Да, прямое нажатие на изменение версии является обычным явлением.