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
과 같이 새 패키지를 게시하는 워크플로의 이름을 지정하는 것이 일반적입니다.
위의 워크플로는 새 릴리스를 만든 후 몇 가지 작업을 수행합니다.
build
라는 작업은npm ci
(연속 통합의 경우 "ci")를 실행하여package-lock.json
파일에서 직접 종속성과 프로젝트 테스트를 설치합니다.build
작업이 성공하면publish-gpr
이라는 작업이 패키지를 게시합니다.- 워크플로는 인증을 위해 액세스 토큰을 사용하여 패키지를
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
에서.