요약
이 모듈에서는 GitHub 내에서 완전히 통합된 패키지 호스팅 서비스인 GitHub 패키지를 소개했습니다. 보안 패키지 관리에 대한 사용 권한 및 가시성을 제어하면서 패키지를 게시, 설치, 삭제 및 복원하는 방법을 알아보았습니다.
배운 내용
다음의 이점 및 사용을 설명하는 방법을 학습했습니다.
패키지 게시
- 지원되는 레지스트리: npm, NuGet, Maven, Gradle, RubyGems, Docker 및 Container Registry.
- 인증: 적절한 범위로 PAT(개인용 액세스 토큰) 만들기 및 사용
- 게시 워크플로: 네이티브 도구를 사용하여 인증, 패키지 메타데이터 구성 및 게시
- NuGet 게시: 인증을 위해 dotnet CLI 및 nuget.config 파일 사용
- npm 게시: .npmrc 파일을 구성하고 인증에 npm 로그인을 사용합니다.
- 자동화: GitHub Actions 워크플로를 사용하여 패키지를 자동으로 게시합니다.
- 모범 사례: 버전 관리, 설명서, 보안 권고 및 메타데이터 완전성.
패키지 설치
- 패키지 검색: 전역적으로, 조직 내에서 또는 리포지토리에서 검색합니다.
- 설치 워크플로: GitHub 패키지에 인증하고 네이티브 패키지 관리자와 함께 설치합니다.
- NuGet 설치: Visual Studio, dotnet CLI 또는 직접 .csproj 편집을 사용합니다.
- npm 설치 및 설정: .npmrc 파일 구성, package.json 종속성 설정 및 다중 조직 지원 구성
- CI/CD 통합: GITHUB_TOKEN 사용하여 GitHub Actions에 패키지 설치
- 문제 해결: 인증, 권한 및 버전 문제 해결
패키지 삭제 및 복원
- 삭제 규칙: 퍼블릭 패키지에 대한 제한 사항 이해(다운로드 제한 5,000개).
- 사용 권한 요구 사항: 리포지토리 범위 패키지에 대한 관리자 액세스
- 버전 삭제: 다른 버전을 사용할 수 있도록 유지하면서 특정 버전을 제거합니다.
- 전체 패키지 삭제: GitHub 패키지에서 모든 버전 제거
- 복원 조건: 30일 기간, 네임스페이스 가용성 및 권한 보존
- API 관리: 프로그래밍 방식 패키지 작업에 REST API 사용.
- 모범 사례: 통신, 사용 중단, 유예 기간 및 감사 내역.
액세스 제어 및 표시 유형 구성
- 사용 권한 모델: 리포지토리 상속 사용 권한과 세분화된 권한(컨테이너 레지스트리)입니다.
- 표시 유형 옵션: 공용, 프라이빗 및 내부(엔터프라이즈 전용) 패키지입니다.
- 컨테이너 이미지 권한: 독립적인 액세스 제어를 사용하여 읽기, 쓰기 및 관리자 역할을 수행합니다.
- 사용자 및 팀 액세스: 개인 및 팀에 사용 권한 부여
- 보안 모범 사례: 최소 권한, 정기적인 감사, 팀 기반 액세스 및 설명서.
- 조직 전략: 표준화된 가시성, 액세스 요청 프로세스 및 규정 준수 맞춤.
주요 개념 요약
GitHub 패키지 통합
- 통합 플랫폼: 패키지는 GitHub의 소스 코드와 함께 제공됩니다.
- 동일한 인증: 별도의 레지스트리 계정 대신 GitHub 자격 증명을 사용합니다.
- 워크플로 자동화: GitHub Actions를 사용하여 패키지를 자동으로 게시합니다.
- 여러 레지스트리: 하나의 플랫폼에서 npm, NuGet, Maven, Docker 등을 지원합니다.
보안 및 액세스 제어
- 세분화된 권한: 컨테이너 레지스트리는 독립적인 액세스 제어를 지원합니다.
- 리포지토리 상속 권한: 대부분의 패키지 형식은 리포지토리 액세스를 따릅니다.
- PAT 인증: 개인 액세스 토큰을 사용하여 인증을 보호합니다.
- 공용 및 프라이빗: 보안 및 공동 작업 요구 사항에 따라 가시성을 선택합니다.
패키지 수명 주기 관리
- 게시: 네이티브 패키지 도구를 사용한 자동화된 또는 수동 게시.
- 버전 관리: 명확한 변경 통신을 위한 의미 체계 버전 관리
- 삭제: 안전 제한이 있는 오래되거나 취약한 버전을 제거합니다.
- 복구: 30일 이내에 삭제된 패키지를 복구합니다.
자동화의 이점
- CI/CD 통합: GitHub Actions와 원활하게 통합됩니다.
- GITHUB_TOKEN: PAT가 없는 워크플로의 자동 인증
- 일관된 게시: 모든 릴리스는 패키지를 자동으로 만듭니다.
- 품질 게이트: 패키지를 게시하기 전에 테스트를 실행합니다.
다음 단계
학습 계속
GitHub 패키지 기술을 향상시킵니다.
- 고급 인증: 조직 전체 인증 전략을 구현합니다.
- 패키지 프로모션: 품질 단계를 통해 패키지를 승격하기 위한 워크플로를 개발합니다.
- Monorepo 게시: 단일 리포지토리에서 여러 패키지를 게시합니다.
- 보안 검사: 게시된 패키지에 대한 취약성 검사를 통합합니다.
고급 시나리오 살펴보기:
- 다중 레지스트리 지원: 여러 패키지 레지스트리를 사용하도록 프로젝트를 구성합니다.
- 패키지 미러링: GitHub 패키지에서 외부 패키지를 캐시합니다.
- 사용자 지정 자동화: GitHub Actions를 사용하여 고급 게시 워크플로를 빌드합니다.
- 패키지 분석: 패키지의 사용 및 채택을 추적합니다.
실용적인 응용 프로그램
구현 시작:
- 인증 설정: 팀에 적절한 범위의 PAT를 만듭니다.
- 첫 번째 패키지 게시: 레지스트리를 선택하고 테스트 패키지를 게시합니다.
- 소비자 구성: GitHub 패키지에서 패키지를 설치하도록 프로젝트를 설정합니다.
- 게시 자동화: 자동화된 게시를 위한 GitHub Actions 워크플로를 만듭니다.
- 액세스 제어 구성: 보안 요구 사항에 따라 표시 유형 및 권한을 설정합니다.
- 문서 프로시저: 패키지 관리에 대한 팀 지침을 만듭니다.
DevOps 사례와 통합
DevOps 워크플로의 GitHub 패키지:
- 연속 통합: 커밋에 패키지를 자동으로 빌드하고 게시합니다.
- 지속적인 업데이트: 배포 파이프라인에서 패키지를 아티팩트로 사용합니다.
- 종속성 관리: GitHub 패키지에서 내부 종속성을 중앙 집중화합니다.
- 버전 제어: 코드 버전과 함께 패키지 버전을 추적합니다.
- 보안 규정 준수: 조직 정책에 맞는 액세스 제어를 구현합니다.
자세한 정보
공식 설명서
- GitHub 패키지에 대한 빠른 시작 - GitHub 패키지를 빠르게 시작합니다.
- GitHub 패키지 - GitHub 패키지 개념에 대한 포괄적인 가이드를 알아봅니다.
- GitHub 패키지 레지스트리 작업 - 지원되는 모든 패키지 유형에 대한 레지스트리별 가이드입니다.
- GitHub 패키지에 대한 권한 정보 - 권한 모델 및 액세스 제어 이해
레지스트리 관련 가이드
- npm 레지스트리 작업 - npm 패키지 관리 가이드 완료
- NuGet 레지스트리 작업 - NuGet 패키지 관리 가이드 완료
- 컨테이너 레지스트리 작업 - Docker 및 OCI 이미지 관리.
- Apache Maven 레지스트리 작업 - Maven 패키지 관리.
- Gradle 레지스트리 작업 - Gradle 패키지 관리.
보안 및 모범 사례
- 패키지의 액세스 제어 및 표시 유형 구성 - 패키지 보안 관리
- 패키지 삭제 및 복원 - 패키지 수명 주기 관리.
- 패키지 게시 - 패키지 게시에 대한 모범 사례입니다.
- 패키지 설치 - 패키지 사용에 대한 모범 사례입니다.
API 및 자동화
- 프로그래밍 방식 패키지 관리를 위한 GitHub 패키지 API - REST API입니다.
- GitHub Actions를 사용하여 패키지 게시 - CI/CD 통합 예제.
- GitHub Actions와 함께 GitHub 패키지 사용 - 고급 워크플로 패턴
커뮤니티 및 지원
- GitHub 설명서: 포괄적인 가이드 및 자습서를 살펴보세요.
- GitHub 커뮤니티: 질문하고 커뮤니티에서 답변을 얻습니다.
- GitHub 블로그: 최신 기능 및 공지 사항을 계속 업데이트하세요.
- GitHub 기술: GitHub 기능에 대한 대화형 학습 경로입니다.