Git 태그에서 GitHub 릴리스를 자동으로 게시하는 방법

Git 태그에서 GitHub 릴리스를 자동으로 게시하는 방법

GitHub 릴리스는 최종 사용자가 버전이 지정된 소프트웨어 바이너리를 다운로드할 수 있는 쉬운 액세스 방법을 제공합니다. 수동으로 만들 수도 있지만 GitHub Actions가 리포지토리에서 만든 릴리스 태그를 사용하여 자동으로 빌드하도록 하는 것이 훨씬 쉽습니다.

태그가 지정된 릴리스 사용

태그는 Git의 기존 기능으로, 관련 변경 로그가 있는 바이너리를 호스팅할 수 있는 장소를 제공하는 릴리스와 함께 GitHub에서 제공하는 확장 지원이 있습니다.

이동하지 않고 항상 특정 커밋을 가리키는 고정 지점이라는 점을 제외하고 분기를 만드는 것과 매우 유사하게 태그를 만들 수 있습니다. 이는 버전이 지정된 릴리스를 생성하는 데 유용하며 대부분의 사람들은 시맨틱 버전 지정 형식(Major.Minor.Patch)을 사용하여 태그를 생성합니다.

태그는 다른 자동화 워크플로에서 사용할 수 있는 GitHub로 푸시할 수 있습니다. 이 경우 태그가 지정된 릴리스가 포함된 커밋을 수신하고 빌드 아티팩트를 릴리스에 자동으로 게시하는 GitHub Actions 스크립트를 설정합니다.

GitHub 작업 설정

먼저 작동하는 GitHub Actions 빌드가 있고 빌드 스크립트가 제대로 작동하는지 확인하고 싶을 것입니다. 워크플로우의 정확한 설정은 빌드 중인 프로젝트의 종류에 따라 다르지만 일반적으로 두 가지 문제를 한 번에 디버깅하고 싶지는 않으므로 이미 작동 중인 아티팩트가 있으면 릴리스 게시를 추가해야 합니다. 자세한 내용은 GitHub Actions 빌드 설정 가이드를 참조하세요.

가장 먼저 해야 할 일은 태그가 생성될 때 실행되도록 Actions 스크립트의 “on” 섹션을 편집하는 것입니다. 기본적으로 릴리스 또는 마스터 분기를 추적하기 위한 “푸시” 이벤트가 있을 수 있습니다. 태그를 추가하고 필터를 설정해야 합니다. 모든 태그에 대해 간단히 와일드카드를 사용하십시오.

워크플로가 끝나면 모든 것이 빌드된 후 릴리스 항목을 만듭니다. 이것은 두 부분으로 이루어진 단계입니다. 먼저 모든 메타데이터가 포함된 새 릴리스 개체를 생성해야 합니다. 그런 다음 출력된 게시 URL을 사용하여 아티팩트를 업로드할 수 있습니다. 아티팩트가 여러 개인 경우 여러 업로드 단계를 생성할 수 있습니다.

두 경우 모두 태그 때문에 워크플로가 실행 중인 경우에만 이러한 단계를 실행하려고 합니다. 간단한 if확인으로 이를 수행할 수 있으며 github.ref개체가 워크플로를 트리거한 분기 또는 태그의 ref 이름을 저장하는 태그인지 확인할 수 있습니다.

첫 번째 단계는 릴리스 개체를 만드는 것입니다. 이 작업은 다음 단계에서 수행할 수 있습니다. GitHub 토큰은 수동으로 생성할 필요가 없습니다. Actions 스크립트에서 항상 참조할 수 있는 특수 토큰입니다.

- name: Create Release

if: startsWith(github.ref, 'refs/tags/')

uses: actions/create-release@v1

id: create_release

with:

draft: false

prerelease: false

release_name: ${{ github.ref }}

tag_name: ${{ github.ref }}

body_path: CHANGELOG.md

env:

GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

여기서 릴리스에 대한 변경 로그는 에 저장되며 워크플로가 제대로 실행되기 위해서는CHANGELOG.md 이 로그 가 있어야 합니다 . 각 태그로 이것을 편집하여 릴리스 페이지에서 GitHub에 의해 표시되는 마크다운을 변경할 수 있습니다. 커밋 메시지로 이를 자동으로 생성하는 도구가 있지만 대부분의 팀은 어쨌든 이를 관리하는 자체 방법이 있습니다.

다음으로 아티팩트 업로드를 시작할 수 있습니다. 이것은 이전 단계의 업로드 URL을 사용하며 자산의 표시 이름과 함께 찾을 수 있는 경로를 정의해야 합니다.

- name: Upload Release

if: startsWith(github.ref, 'refs/tags/')

uses: actions/upload-release-asset@v1

env:

GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

with:

upload_url: ${{ steps.create_release.outputs.upload_url }}

asset_path: Oxide.Ext.Sanctuary/bin/Release/net48/Oxide.Ext.Sanctuary.dll

asset_name: Oxide.Ext.Sanctuary.dll

asset_content_type: application/octet-stream

여기서 콘텐츠 유형은 octet-stream실행 파일 및 DLL과 같은 이진 데이터에 일반적으로 사용되는 로 설정되어 있습니다. ZIP 또는 다른 종류의 파일을 게시하는 경우 릴리스 페이지의 시각적 요소에만 영향을 주지만 이를 변경하고 싶을 것입니다.

이제 작업 워크플로에 대한 변경 사항을 커밋한 다음 새 태그를 생성하고 GitHub에 푸시할 수 있습니다. 새 워크플로 실행이 생성되는 것을 볼 수 있습니다. 단, 마스터 분기에서 실행되는 대신 다음 태그로 인해 실행됩니다.

완료되면 GitHub 사이드바에 릴리스가 표시됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다