Publicera till GitHub Packages och GitHub Container Registry

Slutförd

Här lär du dig grunderna i att använda ett arbetsflöde för att publicera till GitHub Packages och de steg som krävs för att skapa, autentisera, tagga och skicka en Docker-avbildning till GitHub Container Registry.

Använda ett arbetsflöde för att publicera till GitHub Packages

Med GitHub Packages kan du på ett säkert sätt publicera och använda paket, lagra dina paket tillsammans med din kod och dela dina paket privat med ditt team eller offentligt med communityn med öppen källkod. Du kan också använda GitHub Actions för att automatisera dina paket.

Följande är ett exempel på ett grundläggande arbetsflöde som körs när en ny version skapas på en lagringsplats. Om testerna godkänns publiceras paketet till GitHub Packages.

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}}

Först måste arbetsflödesfilen finnas i .github/workflows katalogen. Det är vanligt att namnge ett arbetsflöde som publicerar ett nytt paket när en ny version skapas ungefär som release-package.yml, för att göra det enkelt för projektmedarbetare att förstå dess syfte utan att gå till arbetsflödesfilen.

Föregående arbetsflöde gör några saker när en ny version har skapats:

  1. Ett jobb med namnet build kör npm ci ("ci" för kontinuerlig integrering) för att installera beroenden direkt från package-lock.json filen, samt testerna för projektet.
  2. build När jobbet har slutförts publicerar jobbet med namnet publish-gpr paketet.
  3. Arbetsflödet publicerar paketet till med hjälp av registry-url: https://npm.pkg.github.com/ en åtkomsttoken för autentisering.

Använda GitHub Container Registry som värd för och hantera Docker-containeravbildningar

GitHub Packages stöder användning av containrar, Kubernetes och andra molnbaserade tekniker för att hantera hela programlivscykeln, inklusive produktionsåtgärder, utveckling, lansering och distribution. GitHub Packages erbjuder också ett containerregister som är utformat för att stödja de unika behoven hos containeravbildningar. Du kan använda GitHub Container Registry för att sömlöst vara värd för och hantera Docker-containeravbildningar i din GitHub-organisation eller ditt personliga användarkonto. Med GitHub Container Registry kan du konfigurera vem som kan hantera och komma åt paket med detaljerade behörigheter.

Med containerregistret kan du:

  • Lagra containeravbildningar i organisationen och användarkontot i stället för en lagringsplats.
  • Ange detaljerade behörigheter för containeravbildningarna.
  • Få åtkomst till offentliga containeravbildningar anonymt.

När du har skapat avbildningen och autentiserat och loggat in på GitHub Container Registry-tjänsten på ghcr.iokan du tagga och push-överföra den senaste versionen av avbildningen till containerregistret med hjälp av följande kommandon:

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

Kommentar

Om du vill autentisera med ett GitHub Actions-arbetsflöde kan du använda en GITHUB_TOKEN:

  • För paketregister på PACKAGE-REGISTRY.pkg.github.com.
  • För containerregistret på ghcr.io/OWNER/IMAGE-NAME.