기존 변경 로그 지원

12979 단어 gitdevopsgitlab

Photo by Daniel McCullough on Unsplash



소개



이 게시물은 처음부터 Angular 애플리케이션을 빌드하는 방법을 보여주는 것을 목표로 하는 시리즈로 작성되었습니다.

쉽게 개발하고 유지 관리하는 데 필요한 모든 자산으로 엔터프라이즈 규모의 각도 응용 프로그램을 구축하는 방법을 살펴보겠습니다.

This post will show you how to add support for conventional changelog generation for and add it to .



우리의 목표는 마스터 브랜치에서 변경 로그 생성을 자동화하고 변경 로그가 업데이트된 태그를 생성하는 것입니다.

  • [매뉴얼] developmaster로 병합합니다(Pull 요청에 의해).

  • [매뉴얼] master로 태그prerelease-X.Y.Z를 지정합니다(Gitlab 또는 git cli 사용).

  • [자동] CI가 업데이트CHANGELOG.mdpackage.json + 제거prerelease-X.Y.Z 태그로 트리거되었습니다.

  • [자동] master에 푸시하고 태그X.Y.Z를 추가하면 릴리스 준비가 완료됩니다.

  • 힘내 워크플로우





    git checkout develop
    git pull
    # Retrieve the last develop version
    
    git checkout -b feature/changelog
    # Feature Branch creation 
    

    저장소를 Comitizen 친화적으로 만드십시오.





    먼저 Commitizen cli 도구를 설치합니다.

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

    다음으로 다음을 입력하여 cz-conventional-changelog 어댑터를 사용하도록 프로젝트를 초기화합니다.

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

    위의 명령은 세 가지 작업을 수행합니다.
  • cz-conventional-changelog 어댑터 npm 모듈을 설치합니다.
  • package.json 의 종속성 또는 devDependencies 에 저장합니다.
  • 다음과 같이 config.commitizen의 루트에 package.json 키를 추가합니다.

  • ...
        "devDependencies": {
            ....
            "cz-conventional-changelog": "^3.1.0",
        }
    ...
        "config": {
            "commitizen": {
                "path": "./node_modules/cz-conventional-changelog"
            }
        }
    ... 
    

    이는 기여자가 이 저장소에 커밋하려고 할 때 실제로 사용하기를 원하는 어댑터를 Commitizen에 알려줍니다.

    코미티즌 사용





    comitizen 스크립트를 package.json에 추가하십시오.

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

    git commit 대신 npmrun commit을 사용하여 즐기세요!

    When you're working in a Commitizen friendly repository, you'll be prompted to fill in any required fields and your commit messages will be formatted according to the standards you defined above.



    기존 변경 로그 사용





    기존 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"
        ...
    }
    

    Changelog 초기화 :

    npm run init-changelog
    

    노드 구성 업데이트





    새 npm 스크립트version를 사용하여 npm 버전 수명 주기에 몇 가지 논리를 추가합니다. .npmrc 파일은 npm version가 호출될 때 사용되는 일부 변수를 정의하는 데 도움이 됩니다.
    .npmrc 파일을 업데이트하거나 다음을 사용하여 파일을 만드십시오.

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

    For more informations about the npm versionlife-cycle, refer to :
    https://docs.npmjs.com/cli/version



    CI 업데이트





    GitLab 액세스 토큰 생성



    GitlabUser Settings > Access Token으로 이동하여 GIT_ACCESS_TOKEN 범위가 선택된 api라는 새 토큰을 만듭니다.
    새 개인 액세스 토큰이 프롬프트되면 저장하십시오.



    이제 프로젝트 설정 > CI/CD 패널로 이동합니다.



    변수 패널을 확장하고 변수 추가를 클릭합니다.



    변수 이름을 GIT_ACCESS_TOKEN로 지정하고 이전에 저장된 개인 액세스 토큰을 지나서 protectedmasked가 선택 해제되어 있는지 확인합니다.

    The variable $GIT_ACCESS_TOKEN can now be accessed from your CI jobs and enable credential to write/read your git repository.


    CI 작업 업데이트


    .gitlab-ci.yml 단계를 추가하려면 publish-version를 업데이트하십시오.
    이 단계는 prerelease-X.Y.Z 태그가 있는 코드tagging(예: prerelease-1.0.0 )일 때 트리거됩니다.

    그것은:
  • 현재prerelease-X.Y.Z 태그를 검색합니다.
  • 응용 프로그램 버전(package.json , package-lock.jsonnpm-shrinkwrap.json )을 X.Y.Z 값으로 업데이트합니다.
  • npm version 명령을 실행하고 git에서 커밋 및 태그를 지정합니다.
  • 위에서 정의한 version 스크립트를 실행하여 CHANGELOG.md를 업데이트하고 커밋에 추가합니다.
  • 저장소에서 prerelease-X.Y.Z 태그를 제거하십시오.
  • 업데이트된 파일을 git에 추가하고 수정 사항을 master 분기에 푸시하고 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
    

    Each time you tag your master branch with a tag prerelease-X.Y.Z, the CI will take care of updating your application version and generating the corresponding Changelog.

    좋은 웹페이지 즐겨찾기