GitHub에서 변경 로그 및 게시 작성 자동화
다른 선택을 연구한 후에 나는 github-changelog-generator에 올랐다.이것은 레이블, 문제, 합병 요청에 따라 변경 로그를 자동으로 생성할 수 있는 깔끔한 프로젝트입니다.
# 구현
이 프로젝트를 GitHub에 호스팅하기 때문에 저는 GitHub Actions을 CI 프로세스의 일부로 실시했습니다.이것은 행동을 실천에 옮기고 그것을 익힐 수 있는 기회이다.이 글은 GitHub 작업에 대한 소개가 아니라 Actions Docs을 살펴보고 이 주제를 어떻게 시작하고 깊이 있게 연구하는지 알아보는 것이다.
벌써 돌아왔어!!다행이네요. 디테일하게 들어갈게요.
우선, 내가 생각한 주요 요구에 대해 토론해 봅시다.
main
지사로 제출:main
에 제출해야 한다.이는 합병된 PRs와 main
에 대한 어떠한 직접적인 약속도 설명할 것이다.새 탭을 밀어넣을 때:
CI - 변경 로그 워크플로우 #
이전 절에서 설명한 바와 같이 변경 로그 업데이트 과정은 두 부분으로 구성된다.하나는
main
으로 통합되었을 때, 다른 하나는 새 탭을 전송할 때였다.아래와 같이 CI-Changelog 작업 흐름은 main
지점으로 전송될 때마다 Changelog를 업데이트하는 요구를 충족시켰다.너는 here에서 최신 버전을 찾을 수 있다name: CI - Changelog
on:
push:
branches: [main]
jobs:
changelog_prerelease:
name: Update Changelog For Prerelease
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
ref: main
- name: Update Changelog
uses: heinrichreimer/[email protected]
with:
token: $
issues: true
issuesWoLabels: true
pullRequests: true
prWoLabels: true
unreleased: true
addSections: '{"documentation":{"prefix":" **Documentation:**","labels":["documentation"]}}'
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Update Changelog for PR
file_pattern: CHANGELOG.md
다음과 같이 작동합니다.issues: true
및 issuesWoLabels: true
) pullRequests: true
및 prWoLabels: true
) unreleased: true
) documentation
태그 게시 워크플로우 #
게시 작업 흐름은 변경 로그를 업데이트할 뿐만 아니라, 새gem버전과 전송 중인 태그와 관련된 새 GitHub의 게시도 처리하기 때문에 더욱 복잡한 파이프라인이다.본 논문에서 우리는 Changelog와 GitHub 발표와 관련된 업무에만 관심을 기울인다.관심 있는 경우 전체 워크플로우 here을 참조하십시오.
name: Release
on:
push:
tags:
- v*
jobs:
# Other jobs
# ...
changelog:
name: Update Changelog
runs-on: ubuntu-latest
steps:
- name: Get version from tag
env:
GITHUB_REF: $
run: |
export CURRENT_VERSION=${GITHUB_TAG/refs\/tags\/v/}
echo "::set-env name=CURRENT_VERSION::$CURRENT_VERSION"
- name: Checkout code
uses: actions/checkout@v2
with:
ref: main
- name: Update Changelog
uses: heinrichreimer/[email protected]
with:
token: $
issues: true
issuesWoLabels: true
pullRequests: true
prWoLabels: true
addSections: '{"documentation":{"prefix":" **Documentation:**","labels":["documentation"]}}'
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Update Changelog for tag $
file_pattern: CHANGELOG.md
release_notes:
name: Create Release Notes
runs-on: ubuntu-latest
needs: changelog
steps:
- name: Get version from tag
env:
GITHUB_REF: $
run: |
export CURRENT_VERSION=${GITHUB_TAG/refs\/tags\/v/}
echo "::set-env name=CURRENT_VERSION::$CURRENT_VERSION"
- name: Checkout code
uses: actions/checkout@v2
with:
ref: main
- name: Get Changelog Entry
id: changelog_reader
uses: mindsers/changelog-reader-action@v1
with:
version: $
path: ./CHANGELOG.md
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: $ # This token is provided by Actions, you do not need to create your own token
with:
tag_name: $
release_name: Release $
body: $
draft: false
prerelease: false
첫 번째 작업 업데이트 Changelog는 이전 섹션에서 설명한 것과 거의 같습니다.차이점은 발표 버전만 생성하기 때문에 unreleased: true
항목이 없다는 것이다.두 번째는 다음과 같은 방법으로 릴리즈 노트를 작성하는 것입니다.
needs: changelog
의 존재로 인해 이전의 changelog
작업이 완성되기를 기다리게 된다.GitHub action gotchas #
changelog generator 작업에서 쉽게 발견할 수 없는 문제가 있습니다.
issues: true
과 pullRequests: true
은 기본 true
gem에서 기본값은 github-changelog-generator
이지만 작업의 일부분으로 필요하지 않으면 false
으로 설정합니다.이것은 나로 하여금 한동안 곤혹스럽게 했다. 내가 이 행동의 실시를 읽을 때까지, 특히 entrypoint.shaddSections
필드를 사용하여 새 섹션을 추가하는 데 실패합니다.문제는 entrypoint.sh
의 분사에 있다. 예를 들어 issue#3이 말한 바와 같다.변경 로그 생성기 제한 #
changelog-generator
gem에서 생성된 출력을 반복할 때 나는 문제와 관련된 PRs 사이에서 두 개의 항목(즉 병합할 때 문제의 PRs를 닫는 것)을 얻었다는 것을 깨달았다.나는 파일에서 문제를 표시하거나 홍보할 방법을 찾으려고 뒤적였지만 소용이 없었다.그리고 나는github 환매 협의에 issue을 발표했고 나의 의심을 증명했다. 즉,github REST API의 제한으로 인해 현재 이 점을 실현할 수 없다는 것이다.결론
이 문서에서 Changelog와 GitHub 버전을 자동으로 만드는 방법에 대해 논의했습니다.각 워크플로에 대해 자세히 설명하고 워크플로에 관련된 각 작업의 단계를 설명합니다.우리는github 조작과
github-changelog-generator
gem의 일부 제한과 결함도 언급했다.마지막으로 본문을 읽어 주셔서 감사합니다.너도 나처럼 그것을 즐겨 읽기를 바란다.안녕히 계세요.
Reference
이 문제에 관하여(GitHub에서 변경 로그 및 게시 작성 자동화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/renehernandez/automate-changelog-and-releases-creation-in-github-3ajm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)