요약

완료됨

이 모듈에서는 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를 사용하여 고급 게시 워크플로를 빌드합니다.
  • 패키지 분석: 패키지의 사용 및 채택을 추적합니다.

실용적인 응용 프로그램

구현 시작:

  1. 인증 설정: 팀에 적절한 범위의 PAT를 만듭니다.
  2. 첫 번째 패키지 게시: 레지스트리를 선택하고 테스트 패키지를 게시합니다.
  3. 소비자 구성: GitHub 패키지에서 패키지를 설치하도록 프로젝트를 설정합니다.
  4. 게시 자동화: 자동화된 게시를 위한 GitHub Actions 워크플로를 만듭니다.
  5. 액세스 제어 구성: 보안 요구 사항에 따라 표시 유형 및 권한을 설정합니다.
  6. 문서 프로시저: 패키지 관리에 대한 팀 지침을 만듭니다.

DevOps 사례와 통합

DevOps 워크플로의 GitHub 패키지:

  • 연속 통합: 커밋에 패키지를 자동으로 빌드하고 게시합니다.
  • 지속적인 업데이트: 배포 파이프라인에서 패키지를 아티팩트로 사용합니다.
  • 종속성 관리: GitHub 패키지에서 내부 종속성을 중앙 집중화합니다.
  • 버전 제어: 코드 버전과 함께 패키지 버전을 추적합니다.
  • 보안 규정 준수: 조직 정책에 맞는 액세스 제어를 구현합니다.

자세한 정보

공식 설명서

레지스트리 관련 가이드

보안 및 모범 사례

API 및 자동화

커뮤니티 및 지원

  • GitHub 설명서: 포괄적인 가이드 및 자습서를 살펴보세요.
  • GitHub 커뮤니티: 질문하고 커뮤니티에서 답변을 얻습니다.
  • GitHub 블로그: 최신 기능 및 공지 사항을 계속 업데이트하세요.
  • GitHub 기술: GitHub 기능에 대한 대화형 학습 경로입니다.