Рубрики
Uncategorized

Обычная поддержка изменений

Фото Даниил МакКулло на Unsplash Введение Этот пост проходит в серии A … Теги с DevOps, Git, Gitlab.

Фото Даниэль МакКулло на Бессмысленно

Этот пост проходит в серии, направленном на то, чтобы показать, как построить угловое приложение с нуля.

Мы увидим, как лечить угловое приложение на масштабе предприятия со всеми активами, необходимыми для его легкого развития и сохранения его.

Этот пост покажет вам, как добавить поддержку для обычного поколения ChangeLog для вашего приложения на GitLab и добавить его в цепочку инструментов CI.

Наша цель будет автоматизировать генерацию изменений в главной ветке и генерировать тег с обновленным изменением:

  • [Руководство] Слияние Развивать к Мастер (по запросу на тягу).
  • [Руководство] Тег Мастер с prerelease-x.y.z (на gitlab или с git cli).
  • [Автоматически] CI срабатывает для обновления Changelog.md и package.json + Удалить prerelease-x.y.z ярлык.
  • [Автоматически] Подтолкнуть к Мастер и добавить тег X.y.z выпустить готов.
git checkout develop
git pull
# Retrieve the last develop version

git checkout -b feature/changelog
# Feature Branch creation 

Во-первых, установите инструменты CLI COSTIZEN:

npm install commitizen --save --save-exact --save-dev 

Далее инициализируйте свой проект, чтобы использовать CZ-Condity-ChangeLog Адаптер, набрав:

commitizen init cz-conventional-changelog --save-dev --save-exact

Вышеуказанная команда делает для вас три вещи.

  • Устанавливает CZ-Condity-ChangeLog Адаптер NPM модуль.
  • Спасает его на package.json зависимости или Devdependonds Отказ
  • Добавляет config.commitizen ключ к корню вашего package.json Как показано здесь:
...
    "devDependencies": {
        ....
        "cz-conventional-changelog": "^3.1.0",
    }
...
    "config": {
        "commitizen": {
            "path": "./node_modules/cz-conventional-changelog"
        }
    }
... 

Это просто говорит о приступлении, на каком адаптере мы фактически хотим, чтобы наши участники использовались, когда они пытаются совершить обязанность этого репо.

Добавьте скрипт Comitizen на ваш package.json Отказ

    "scripts": {
        ...
        "commit": "git-cz"
        ...
    },

Используйте NPM запустить фиксацию вместо Git Commits наслаждаться!

Когда вы работаете в пристанезенном хранилище, вам будет предложено заполнить любые необходимые поля, и ваши сообщения Commit будут отформатированы в соответствии со стандартами, которые вы определены выше.

Установите обычный CHANGELOG CLI:

npm install conventional-changelog-cli --save --save-exact --save-dev 

Обновите свой Package.json, чтобы включить следующие сценарию:

"scripts": {
    ...
    "init-changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
    "version": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md"
    ...
}

Инициализируйте изменяемый файл:

npm run init-changelog

С новым сценарием NPM Версия Мы добавим какую-нибудь логику в версию LPM VersionLife-Cyle. .npmrc Файл помогает нам определить некоторые переменные, используемые, когда Версия NPM называется.

Обновите свой .npmrc Файл или создать один с:

tag-version-prefix=""
message="chore(release): Version %s"

Для получения дополнительной информации о VersionLife NPM обратитесь к: https://docs.npmjs.com/cli/version.

Создайте токен доступа к GitLab

Перейти к твоему Gitlab, Настройки пользователя> Доступ Токен и создать новый токен имени Git_access_token с API Проверено охвата. Ваш новый токен личного доступа будет подсказкой, сохранить его:

Теперь перейдите к настройкам вашего проекта> Панель CI/CD

Развернуть Переменная панель и нажмите на Добавить переменную Отказ

Назовите переменную Get_access_token. и прошлое личный токен доступа, сэкономлен от ранее, убедитесь, что защищены и замаскированный не проверяют.

Переменная $ Git_access_token Теперь можно получить доступ с ваших заданий CI и включите учетные данные, чтобы написать/прочитать ваш репозиторий Git.

Обновите ваши работы CI

Обновите свой .gitlab-ci.yml добавить публикация-версия шаг. Этот шаг будет вызван, когда Помежки Ваш код с prerelease-x.y.z Теги (т.е. Prerelease-1.0.0 ).

Так и будет:

  • Получить текущий prerelease-x.y.z ярлык.
  • Обновите вашу версию приложения (в Package.json , Package-lock.json и npm-shrinkwrap.json ) к X.y.z ценить.
  • Запустите Версия NPM Команда и коммит и тег в Git.
  • Под капотом запустите Версия Сценарий определен выше для обновления Changelog.md и добавьте его в коммит.
  • Удалить prerelease-x.y.z Тег из вашего репозитория.
  • Добавьте обновленный файл в Git и нажмите модификации на Мастер ветвь и метка его как X.y.z Отказ
image: node:latest

stages:
  - CodeQuality
  - Release

test:
  stage: CodeQuality
  script: 
    - npm ci
    - npm run ci:test

lint:
  stage: CodeQuality
  script:
    - npm ci
    - npm run ci:lint

publish-version:
  image: node:12.16.1
  stage: Release
  rules:
     - if: '$CI_COMMIT_TAG =~ /^prerelease-\d+.\d+.\d+/'
  before_script:
    - npm ci
    - npm config set unsafe-perm true
  script:
    - TAG_VERSION=`echo $CI_COMMIT_TAG | sed "s/.*prerelease-\([^ ]*\).*/\1/"`
    - git config --global user.name "$GITLAB_USER_NAME"
    - git config --global user.email "$GITLAB_USER_EMAIL"
    - git remote set-url origin "https://gitlab-ci-token:$GIT_ACCESS_TOKEN@$CI_SERVER_HOST/$CI_PROJECT_PATH.git"
    - git tag -d $CI_COMMIT_TAG
    - git push origin --delete $CI_COMMIT_TAG
    - npm version $TAG_VERSION
    - git push origin HEAD:master --tags
git add package.json package-lock.json .gitlab-ci.yml CHANGELOG.md .npmrc

# Use the magic !!
npm run commit

git push -u origin feature/changelog

Каждый раз, когда вы пометиете свою ветку Master с тегом prerelease-x.y.z , CI позаботится об обновлении вашей версии приложения и создает соответствующий изменяемый файл.

Оригинал: «https://dev.to/fairen/conventional-changelog-support-41hp»