Рабочий пример этой настройки можно найти в репозиториях vlingo XOOM: https://github.com/vlingo/xoom-platform/packages
Прежде чем мы рассмотрим публикацию во внешнем репозитории, давайте рассмотрим, насколько просто опубликовать во внешнем репозитории:
name: Build
on:
release:
types: [created]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Deploy to GitHub
run: mvn --batch-mode -DuseGitHubPackages=true deploy
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Репозиторий пакетов GitHub будет автоматически настроен для нас в Maven с помощью actions/setup-java action. Все, что осталось сделать, это передать GITHUB_TOKEN secret в качестве переменной среды команде mvn deploy .
Примечание : GITHUB_TOKEN секрет доступен во всех сборках действий GitHub из коробки. Область действия токена ограничена текущим репозиторием.
В приведенном выше примере мы также включили флаг use GitHub Packages для загрузки профиля Maven, который настраивает управление дистрибутивом:
github useGitHubPackages true github GitHub Packages https://maven.pkg.github.com/vlingo/xoom-common
Приведенный выше пример работает для публикации vlingo/xoom-common из того же репозитория.
Настройка из предыдущего раздела отлично работает, если у нас есть только один репозиторий для публикации. Как только мы начнем публиковать из нескольких репозиториев GitHub, в итоге у нас будет один репозиторий Maven для каждого репозитория GitHub.
Это не всегда желательно, особенно если мы разрабатываем набор библиотек, которые обычно устанавливаются вместе. В таком случае наши клиенты были бы вынуждены включить в свои pom.xml в репозитории Maven для каждой библиотеки, которую мы предоставляем.
Решение состоит в том, чтобы выбрать выделенный репозиторий для публикации наших пакетов Maven и использовать его в управлении распространением для всех остальных репозиториев.
Конфигурация Maven
Например, имея такие библиотеки, как xoom-common , xoom-actors , xoom-http , мы могли бы опубликовать их все в одном репозитории xoom-platform :
github useGitHubPackages true github GitHub Packages https://maven.pkg.github.com/vlingo/xoom-platform
Действие на GitHub
Действие GitHub останется очень похожим на то, которое мы рассмотрели в начале, с одним заметным отличием – GITHUB_TOKEN :
name: Build
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Deploy to GitHub
run: mvn --batch-mode -DuseGitHubPackages=true deploy
env:
GITHUB_TOKEN: ${{ secrets.DEPLOY_GITHUB_TOKEN }}
Мы больше не можем использовать токен, предоставленный по умолчанию, поскольку его область действия ограничена текущим репозиторием.
Вместо этого нам нужно будет создать личный токен доступа и передать его действию как секретный ( DEPLOY_GITHUB_TOKEN в приведенном выше примере).
Создание личного доступа к GitHub Знак
Чтобы заставить его работать в разных репозиториях, нам нужно будет определить новый личный токен доступа в:
- Настройки > Настройки разработчика > Личные токены Доступа .
Выберите область write:packages , и все области repo должны быть автоматически выбраны для нас.
Определение секрета
Затем токен должен быть определен как секретный в нашей организации или в каждом из репозиториев, из которых нам нужно публиковать пакеты.
Дайте ему имя (т.е. DEPLOY_GITHUB_TOKEN ) и установите его значение на Личный токен доступа, созданный на предыдущем шаге.
Секреты репозитория определяются в репозитории Настройки > Секреты . Там есть аналогичный раздел для секретов организации.
Оригинал: “https://dev.to/jakub_zalas/how-to-publish-maven-packages-to-a-single-github-repository-3lkc”