Публикация в пакетах 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
, чтобы упростить работу сотрудников проекта, чтобы понять ее цель без перехода к файлу рабочего процесса.
Предыдущий рабочий процесс выполняет несколько действий после создания нового выпуска:
- Задание с именем
build
выполняетсяnpm ci
(ci для непрерывной интеграции), чтобы установить зависимости непосредственно из файлаpackage-lock.json
и провести тесты для проекта. - После успешного выполнения задачи
build
, задача под именемpublish-gpr
публикует пакет. - Рабочий процесс публикует пакет в
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
.