Публикация в пакетах GitHub и реестре контейнеров GitHub

Завершено

Здесь вы узнаете, как использовать рабочий процесс для публикации в пакетах GitHub, а также необходимые действия по созданию, проверке подлинности, тегу и отправке образа Docker в реестр контейнеров GitHub.

Использование рабочего процесса для публикации в пакетах GitHub

Пакеты GitHub позволяют безопасно публиковать и потреблять пакеты, хранить пакеты вместе с кодом и предоставлять общий доступ к пакетам в частном порядке с вашей командой или общедоступным сообществом с открытым кодом. Вы также можете использовать GitHub Actions для автоматизации пакетов.

Ниже приведен пример базового рабочего процесса, который выполняется при создании нового выпуска в репозитории. Если тесты проходят, пакет публикуется в пакетах 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}}

Во-первых, файл рабочего процесса должен существовать в каталоге .github/workflows. Обычно рекомендуется назвать рабочий процесс, публикующий новый пакет всякий раз при создании нового выпуска, например release-package.yml, чтобы упростить работу сотрудников проекта, чтобы понять ее цель без перехода к файлу рабочего процесса.

Предыдущий рабочий процесс выполняет несколько действий после создания нового выпуска:

  1. Задание с именем build выполняется npm ci (ci для непрерывной интеграции), чтобы установить зависимости непосредственно из файла package-lock.json и провести тесты для проекта.
  2. После успешного выполнения задачи build, задача под именем publish-gpr публикует пакет.
  3. Рабочий процесс публикует пакет в registry-url: https://npm.pkg.github.com/ с использованием маркера доступа для аутентификации.

Использование реестра контейнеров GitHub для размещения образов контейнеров Docker и управления ими

Пакеты GitHub поддерживают использование контейнеров, Kubernetes и других облачных технологий для управления всем жизненным циклом приложения, включая рабочие операции, разработку, выпуск и развертывание. Пакеты GitHub также предлагают реестр контейнеров, предназначенный для поддержки уникальных потребностей образов контейнеров. Реестр контейнеров GitHub можно использовать для простого размещения образов контейнеров Docker в организации GitHub или личной учетной записи пользователя. Реестр контейнеров GitHub позволяет настроить пользователей, которые могут управлять пакетами и получать доступ с помощью точных разрешений.

С помощью реестра контейнеров можно:

  • Храните образы контейнеров в рамках вашей организации и учетной записи пользователя, а не в репозитории.
  • Задайте подробные разрешения для образов контейнеров.
  • Анонимный доступ к общедоступным образам контейнеров.

После создания образа и проверки подлинности и входа в службу реестра контейнеров GitHub в ghcr.ioможно пометить и отправить последнюю версию образа в реестр контейнеров с помощью следующих команд:

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

Заметка

Для проверки подлинности с помощью рабочего процесса GitHub Actions можно использовать GITHUB_TOKEN:

  • Для реестров пакетов в PACKAGE-REGISTRY.pkg.github.com.
  • Для реестра контейнеров в ghcr.io/OWNER/IMAGE-NAME.