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 작업은 'ci'(연속 통합)로 npm 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를 사용하여 GitHub 조직 또는 개인 사용자 계정에서 Docker 컨테이너 이미지를 원활하게 호스트하고 관리할 수 있습니다. GitHub Container Registry를 사용하면 세분화된 권한을 사용하여 패키지를 관리하고 액세스할 수 있는 사용자를 구성할 수 있습니다.

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

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

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

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에서.