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.
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:
- Zadanie o nazwie
build
runsnpm ci
("ci" for Continuous Integration) w celu zainstalowania zależności bezpośrednio zpackage-lock.json
pliku, a także testów dla projektu. - Po pomyślnym zakończeniu
build
zadania zadanie o nazwiepublish-gpr
publikuje pakiet. - 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.io
moż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
.