Рабочий пример этой настройки можно найти в репозиториях 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”