Publikowanie w pakietach GitHub i usłudze GitHub Container Registry
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:
- Zadanie o nazwie
builduruchamianpm ci("ci" for Continuous Integration) w celu zainstalowania zależności bezpośrednio z plikupackage-lock.json, a także testów dla projektu. - Po pomyślnym zakończeniu zadania
build, zadanie o nazwiepublish-gprpublikuje pakiet. - 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.