개요
깃허브 워크플로우 중 PULL_REQUEST 이벤트에서 활용할 수 있는 액션입니다.
기본 브랜치로 병합이 지정된 풀 리퀘스트가 완료될 때, 기본 브랜치로 병합이 발생하는 경우 풀 리퀘스트의 라벨에 따라 다음 버전 이름을 제안합니다.
동작:
깃 태그 이름 중 SEMVER1 형식의 태그 이름을 검색해서, 최신 버전에 해당하는 태그 이름을 찾습니다.
SEMVER1 형식의 깃 태그를 찾을 수 없는 경우 1.0.0
을 제안합니다.
최신 버전에 해당하는 깃 태그를 찾은 경우, 지정된 풀 리퀘스트에 지정되어 있는 라벨을 기준으로 주 버전, 부 버전, 패치 버전을 1 증가 시킨 버전 이름을 제안합니다.
입력과 출력
입력
Name | Required | Description |
---|---|---|
github_token | ✅ | 깃허브 개인 인증 토큰 (PAT); 저장소 읽기 권한이 필요합니다. |
pr | ✅ | 풀 리퀘스트 번호; 예) 100 |
major_labels | ✅ | 주 버전이 증가하는 풀리퀘스트 라벨 이름 목록; 쉼표로 구분 |
minor_labels | ✅ | 부 버전이 증가하는 풀리퀘스트 라벨 이름 목록; 쉼표로 구분 |
patch_labels | ✅ | 패치 버전이 증가하는 풀리퀘스트 라벨 이름 목록; 쉼표로 구분 |
next_version_prefix | 다음 버전 이름 접두어 |
현재 워크플로우가 실행되고 있는 저장소에 대한 작업인 경우 github_token
에 입력할 깃허브 개인 인증 토큰의 값은 미리 정의된 변수 중 하나를 사용할 수 있습니다.
github.token
secrets.GITHUB_TOKEN
현재 워크플로우가 실행된 이벤트 트리거가 pull_request
인 경우 pr
에 입력할 풀 리퀘스트 번호의 값은 현재 컨텍스트의 이벤트 데이터를 사용할 수 있습니다.
- github.event.pull_request.number
출력
Name | Description |
---|---|
latest_version | 깃 태그에서 찾은 최신 버전 이름 |
next_version | 제안된 다음 버전 이름 |
next_version_major | 제안된 다음 버전의 주 버전 |
next_version_minor | 제안된 다음 버전의 부 버전 |
next_version_patch | 제안된 다음 버전의 패치 버전 |
latest_version == ''
인 경우next_version
의 값은1.0.0
입니다.
예제
아래 워크플로우는 메인 브랜치를 베이스로 하는 풀 리퀘스트가 병합으로 완료되면 실행됩니다.
name: 'create-tag'
on:
pull_request:
branches:
- main
types:
- closed
jobs:
get_next_version:
runs-on: ubuntu-latest
if: github.event.pull_request.merged == true # 풀 리퀘스트가 병합으로 완료된 상태를 확인
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Get next version
uses: bbonkr/next-version-proposal-action@v1
id: next_version_proposal
with:
github_token: ${{ github.token }} # 깃허브 개인 인증 토큰
pr: ${{ github.event.pull_request.number }} # 연관 풀 리퀘스트 번호
major_labels: 'major, next' # 주 버전이 증가하는 풀리퀘스트 라벨 이름 목록
minor_labels: 'enhancement, feature' # 부 버전이 증가하는 풀리퀘스트 라벨 이름 목록
patch_labels: 'bug, documentation, chore, dependencies' # 패치 버전이 증가하는 풀리퀘스트 라벨 이름 목록
next_version_prefix: 'v' # 버전 이름의 접두어를 지정
- name: logging
run: |
echo "latest_version=${{ steps.next_version_proposal.outputs.latest_version }}"
echo "next_version=${{ steps.next_version_proposal.outputs.next_version }}"
echo "next_version_major=${{ steps.next_version_proposal.outputs.next_version_major }}"
echo "next_version_minor=${{ steps.next_version_proposal.outputs.next_version_minor }}"
echo "next_version_patch=${{ steps.next_version_proposal.outputs.next_version_patch }}"
제약사항:
- SEMVER1 형식을 처리할 때, 주 버전 major, 부 버전 minor, 패치 버전 patch 부분에 대한 다음 버전을 제안합니다. 미리보기 pre-release, 빌드 번호 build 부분은 처리하지 않습니다.
저장소
관련 내용
- GitHub: bbonkr/next-version-proposal-action
- GitHub marketplace: next-version-proposal-action
- GitHub actions: github-context
- GitHub workflows event trigger: pull_request
- GitHub Actions: expression
- GitHub CLI
- GitHub rest: list-pull-requests
- GitHub rest: list-matching-references
이 사이트는 광고를 포함하고 있습니다.
광고로 발생한 수익금은 서버 유지 관리에 사용되고 있습니다.This site contains advertisements.
Revenue generated by the ad servers are being used for maintenance.