Publikowanie w pakietach GitHub i usłudze GitHub Container Registry

Ukończone

W tym miejscu poznasz podstawy używania przepływu pracy do publikowania w pakietach GitHub oraz kroki niezbędne do kompilowania, uwierzytelniania, tagowania i wypychania obrazu platformy Docker do usługi GitHub Container Registry.

Publikowanie w pakietach GitHub przy użyciu przepływu pracy

Pakiety GitHub umożliwiają bezpieczne publikowanie i używanie pakietów, przechowywanie pakietów wraz z kodem oraz udostępnianie pakietów prywatnie zespołowi lub publicznie społeczności typu open source. Możesz również użyć funkcji GitHub Actions, aby zautomatyzować pakiety.

Poniżej przedstawiono przykład podstawowego przepływu pracy uruchamianego za każdym razem, gdy w repozytorium zostanie utworzone nowe wydanie. Jeśli testy zostaną wykonane pomyślnie, pakiet zostanie opublikowany w pakietach 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}}

Najpierw plik przepływu pracy musi istnieć w .github/workflows katalogu. Typowym rozwiązaniem jest nadanie przepływowi pracy, który publikuje nowy pakiet za każdym razem, gdy zostanie utworzone nowe wydanie, na przykład release-package.yml, aby ułatwić współpracownikom projektu zrozumienie jego przeznaczenia bez przechodzenia do pliku przepływu pracy.

Powyższy przepływ pracy wykonuje kilka czynności po utworzeniu nowej wersji:

  1. Zadanie o nazwie build runs npm ci ("ci" for Continuous Integration) w celu zainstalowania zależności bezpośrednio z package-lock.json pliku, a także testów dla projektu.
  2. Po pomyślnym zakończeniu build zadania zadanie o nazwie publish-gpr publikuje pakiet.
  3. Przepływ pracy publikuje pakiet przy registry-url: https://npm.pkg.github.com/ użyciu tokenu dostępu do uwierzytelniania.

Hostowanie obrazów kontenerów platformy Docker i zarządzanie nimi przy użyciu usługi GitHub Container Registry

Pakiety GitHub obsługują korzystanie z kontenerów, platformy Kubernetes i innych technologii natywnych dla chmury w celu zarządzania całym cyklem życia aplikacji, w tym operacjami produkcyjnymi, programowaniem, wydawaniem i wdrażaniem. Pakiety GitHub oferują również rejestr kontenerów przeznaczony do obsługi unikatowych potrzeb obrazów kontenerów. Usługa GitHub Container Registry umożliwia bezproblemowe hostowanie obrazów kontenerów platformy Docker i zarządzanie nimi w organizacji lub osobistym koncie użytkownika usługi GitHub. Usługa GitHub Container Registry umożliwia skonfigurowanie, kto może zarządzać pakietami i uzyskiwać do nie dostępu przy użyciu precyzyjnych uprawnień.

Rejestr kontenerów umożliwia:

  • Przechowuj obrazy kontenerów w organizacji i na koncie użytkownika, a nie w repozytorium.
  • Ustaw szczegółowe uprawnienia dla obrazów kontenerów.
  • Anonimowy dostęp do publicznych obrazów kontenerów.

Po skompilowanym obrazie i uwierzytelnieniu i zalogowaniu się do usługi GitHub Container Registry pod adresem ghcr.iomożesz oznaczyć i wypchnąć najnowszą wersję obrazu do rejestru kontenerów przy użyciu następujących poleceń:

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

Uwaga

Aby uwierzytelnić się przy użyciu przepływu pracy funkcji GitHub Actions, możesz użyć GITHUB_TOKEN:

  • W przypadku rejestrów pakietów pod adresem PACKAGE-REGISTRY.pkg.github.com.
  • W przypadku rejestru kontenerów pod adresem ghcr.io/OWNER/IMAGE-NAME.