GitHub 패키지 및 GitHub Container Registry에 게시

완료됨

이제 워크플로를 사용하여 GitHub 패키지에 게시하는 방법과 Docker 이미지를 GitHub Container Registry로 빌드하고 인증하여 태그한 후 밀어넣는 데 필요한 단계에 대해 알아보겠습니다.

워크플로를 사용하여 GitHub 패키지에 게시

GitHub 패키지를 사용하면 패키지를 안전하게 게시 및 사용하고 패키지를 코드와 함께 저장하며 팀과 비공개로 패키지를 공유하거나 또는 오픈 소스 커뮤니티와 공개적으로 패키지를 공유할 수 있습니다. GitHub Actions를 사용하여 패키지를 자동화할 수도 있습니다.

다음은 리포지토리에 새 릴리스를 만들 때마다 실행되는 기본 워크플로의 예입니다. 테스트가 통과되면 패키지가 GitHub 패키지에 게시됩니다.

name: Node.js Package

on:
  release:
    types: [created]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 12
      - run: npm ci
      - run: npm test

  publish-gpr:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 12
          registry-url: https://npm.pkg.github.com/
      - run: npm ci
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}

먼저 워크플로 파일이 .github/workflows 디렉터리에 있어야 합니다. 일반적으로 프로젝트 협력자가 워크플로 파일로 탐색하지 않고도 용도를 쉽게 이해할 수 있도록 새 릴리스를 만들 때마다 release-package.yml과 같이 새 패키지를 게시하는 워크플로의 이름을 지정하는 것이 일반적입니다.

위의 워크플로는 새 릴리스를 만든 후 몇 가지 작업을 수행합니다.

  1. build라는 작업은 npm ci(연속 통합의 경우 "ci")를 실행하여 package-lock.json 파일에서 직접 종속성과 프로젝트 테스트를 설치합니다.
  2. build 작업이 성공하면 publish-gpr이라는 작업이 패키지를 게시합니다.
  3. 워크플로는 인증을 위해 액세스 토큰을 사용하여 패키지를 registry-url: https://npm.pkg.github.com/에 게시합니다.

GitHub Container Registry를 사용하여 Docker 컨테이너 이미지 호스트 및 관리

GitHub 패키지는 컨테이너, Kubernetes 및 기타 클라우드 네이티브 기술을 사용하여 프로덕션 작업, 개발, 릴리스 및 배포를 포함한 전체 애플리케이션 수명 주기를 관리할 수 있도록 지원합니다. 또한 GitHub 패키지는 컨테이너 이미지의 고유한 요구를 지원하도록 설계된 컨테이너 레지스트리를 제공합니다. GitHub Container Registry를 사용하여 조직 또는 개인 사용자 계정에서 Docker 컨테이너 이미지를 원활하게 호스트하고 관리할 수 있습니다. GitHub Container Registry를 사용하면 세분화된 사용 권한을 사용하여 패키지를 관리하고 액세스할 수 있는 사용자를 구성할 수 있습니다.

컨테이너 레지스트리를 사용하여 다음을 수행할 수 있습니다.

  • 컨테이너 이미지를 리포지토리가 아닌 조직 및 사용자 계정에 저장합니다.
  • 컨테이너 이미지에 대해 세분화된 사용 권한을 설정합니다.
  • 퍼블릭 컨테이너 이미지에 익명으로 액세스합니다.

이미지를 빌드하고 ghcr.io의 GitHub Container Registry 서비스에 인증 및 로그인한 후 다음 명령을 사용하여 이미지의 최신 버전을 컨테이너 레지스트리에 태그하고 밀어넣을 수 있습니다.

echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin

docker tag IMAGE_ID ghcr.io/OWNER/IMAGE_NAME:latest

docker push ghcr.io/OWNER/IMAGE_NAME:latest

참고

GitHub Actions 워크플로를 사용하여 인증하려면 GITHUB_TOKEN을 사용할 수 있습니다.

  • 패키지 레지스트리의 경우 PACKAGE-REGISTRY.pkg.github.com에서.
  • 컨테이너 레지스트리의 경우 ghcr.io/OWNER/IMAGE-NAME에서.