Рубрики
Без рубрики

Как опубликовать пакеты Maven в одном репозитории GitHub

Рабочий пример этой настройки можно найти в репозиториях vlingo XOOM: https://github.com/vlingo … Помеченный maven, github, github actions, java.

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