액션 릴리스 및 유지 관리

액션 릴리스 및 유지 관리

자동화와 오픈소스 모범 사례를 활용해 액션을 릴리스하고 유지 관리할 수 있어요.

출처: Releasing and maintaining actions

본문

소개

액션을 만든 후에는 커뮤니티 기여와 함께 작업하면서 새 기능을 계속 릴리스하고 싶을 거예요. 이 튜토리얼은 오픈소스에서 액션을 릴리스하고 유지 관리하기 위해 따를 수 있는 예시 프로세스를 설명해요. 이 예시는:

  • 지속적 통합, 의존성 업데이트, 릴리스 관리, 작업 자동화에 GitHub Actions를 활용해요.
  • 자동화된 테스트와 빌드 배지로 신뢰를 제공해요.
  • 액션을 사용하는 방법을 나타내요. 이상적으로는 더 넓은 워크플로의 일부로 말이죠.
  • 어떤 유형의 커뮤니티 기여를 환영하는지 신호를 보내요. (예: 이슈, 풀 리퀘스트, 취약점 보고서.)

이 프로세스의 적용 예시는 actions/javascript-action을 참고하세요.

액션 개발 및 릴리스

이 섹션에서는 액션을 개발하고 릴리스하는 예시 프로세스를 논의하고 GitHub Actions로 프로세스를 자동화하는 방법을 보여줄게요.

JavaScript 액션 소개

JavaScript 액션은 메타데이터가 있는 Node.js 리포지토리예요. 하지만 JavaScript 액션은 전통적인 Node.js 프로젝트에 비해 추가 속성이 있어요:

  • 의존 패키지가 코드와 함께 커밋되는데, 일반적으로 컴파일되고 축소된 형태예요. 이는 자동화된 빌드와 안전한 커뮤니티 기여가 중요하다는 뜻이에요.

  • 태그된 릴리스는 GitHub Marketplace에 직접 게시되고 GitHub 전체의 워크플로가 사용할 수 있어요.

  • 많은 액션이 GitHub의 API와 서드 파티 API를 사용하므로 견고한 엔드 투 엔드 테스트를 권장해요.

GitHub Actions 워크플로 설정

다음 섹션의 개발자 프로세스를 지원하기 위해 리포지토리에 두 개의 GitHub Actions 워크플로를 추가하세요:

  1. 기능 분기 또는 main에 커밋이 푸시되거나 풀 리퀘스트가 생성될 때 트리거되는 워크플로를 추가하세요. 워크플로가 단위 및 통합 테스트를 실행하도록 구성하세요. 예시는 이 워크플로를 참고하세요.

  2. 릴리스가 게시되거나 편집될 때 트리거되는 워크플로를 추가하세요. 시맨틱 태그가 제대로 있는지 확인하도록 워크플로를 구성하세요. JasonEtco/build-and-tag-action 같은 액션을 사용해 JavaScript와 메타데이터 파일을 컴파일·번들하고 시맨틱 메이저, 마이너, 패치 태그를 강제 푸시할 수 있어요. 시맨틱 태그에 대한 자세한 내용은 시맨틱 버전 관리 소개를 참고하세요.

    [!NOTE] 리포지토리에 불변 릴리스(immutable releases)를 활성화하면 이 액션을 사용해 GitHub의 릴리스에 연결된 태그를 강제 푸시할 수 없어요. 불변 릴리스로 릴리스를 관리하는 방법은 불변 릴리스와 태그를 사용해 액션 릴리스 관리하기를 참고하세요.

예시 개발자 프로세스

다음은 테스트를 자동으로 실행하고, 릴리스를 만들고 GitHub Marketplace에 게시하며, 액션을 게시하기 위해 따를 수 있는 예시 프로세스예요.

  1. GitHub flow에 따라 분기에서 기능 작업을 하세요. 자세한 내용은 GitHub flow를 참고하세요.

    • 기능 분기에 커밋이 푸시될 때마다 테스트 워크플로가 자동으로 테스트를 실행해요.
  2. 논의와 검토를 시작하려면 main 분기에 풀 리퀘스트를 만드세요. 준비되면 병합하세요.

    • 풀 리퀘스트가 분기 또는 포크에서 열리면 테스트 워크플로가 이번에는 병합 커밋으로 다시 테스트를 실행해요.

    • 참고: 보안상 이유로 포크에서 온 pull_request로 트리거된 워크플로는 GITHUB_TOKEN 권한이 제한되고 비밀에 접근할 수 없어요. 테스트나 풀 리퀘스트로 트리거되는 다른 워크플로가 비밀 접근을 필요로 한다면 수동 트리거pull_request_target 같은 다른 이벤트를 사용하는 것을 고려하세요. 자세한 내용은 워크플로를 트리거하는 이벤트를 참고하세요.

  3. 시맨틱 태그가 있는 릴리스를 만드세요. 간단한 체크박스로 GitHub Marketplace에 게시할 수도 있어요. 자세한 내용은 리포지토리에서 릴리스 관리하기GitHub Marketplace에 액션 게시하기를 참고하세요.

    • 릴리스가 게시되거나 편집되면 릴리스 워크플로가 자동으로 컴파일과 태그 조정을 처리해요.

    • v1.1.3 같은 시맨틱 버전이 지정된 태그를 사용해 릴리스를 만들고, 메이저(v1)와 마이너(v1.1) 태그를 최신 적절한 커밋으로 유지하는 것을 권장해요. 자세한 내용은 사용자 지정 액션 관리하기시맨틱 버전 관리 소개를 참고하세요.

결과

다른 일부 자동화된 릴리스 관리 전략과 달리, 이 프로세스는 의도적으로 main 분기에 의존성을 커밋하지 않고 태그된 릴리스 커밋에만 커밋해요. 이렇게 함으로써 액션 사용자가 이름 있는 태그나 sha를 참조하도록 권장하고, 릴리스 중에 직접 빌드하여 서드 파티 풀 리퀘스트의 보안을 보장하는 데 도움이 돼요.

시맨틱 릴리스를 사용한다는 것은 액션 사용자가 워크플로를 특정 버전에 고정할 수 있고, 자신의 안락 수준에 따라 최신 안정 버전의 비파괴 기능을 계속 받을 수 있다는 것을 알 수 있다는 뜻이에요.

커뮤니티와 함께 작업하기

GitHub은 오픈소스 커뮤니티와 작업하는 데 도움이 되는 도구와 가이드를 제공해요. 건강한 양방향 커뮤니케이션을 위해 설정하는 것을 권장하는 도구는 다음과 같아요. 커뮤니티에 다음 신호를 제공하면 다른 사람들이 액션을 사용·수정·기여하도록 장려할 수 있어요:

추가 자료

비슷한 패턴이 사용되는 예시는 다음과 같아요:

더 알아보기 (Learn more)