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.

Użyj przepływu pracy do publikowania w pakietach GitHub

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 katalogu .github/workflows. Typowym rozwiązaniem jest nadanie przepływowi pracy, który przy każdym utworzeniu nowego wydania publikuje nowy pakiet, nazwy takiej jak np. release-package.yml, aby ułatwić współpracownikom projektu zrozumienie jego celu 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 uruchamia npm ci ("ci" for Continuous Integration) w celu zainstalowania zależności bezpośrednio z pliku package-lock.json, a także testów dla projektu.
  2. Po pomyślnym zakończeniu zadania build, zadanie o nazwie publish-gpr publikuje pakiet.
  3. Przepływ pracy publikuje pakiet w registry-url: https://npm.pkg.github.com/ przy użyciu tokenu dostępu w celu 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. GitHub Packages oferuje również rejestr kontenerów, który zapewnia wsparcie dla specyficznych 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 w 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

Notatka

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

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