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

Публикация Java-пакетов Github в Maven Central для нового домена

Обзор 🎉 Команда по связям с разработчиками Solace недавно запустила наше сообщество Solace githu… Помечено java, maven, github, разработчиками.

🎉 Команда по связям с разработчиками Утешение недавно запустила нашу организацию Утешение Сообщества github в качестве дома для проектов с открытым исходным кодом, которые создаются, поддерживаются и поддерживаются удивительным сообществом Утешение . Если вы заинтересованы в присоединении к нашему сообществу, вы можете прочитать об этом подробнее здесь , но это не будет в центре внимания остальной части этого блога. В центре внимания этого блога – то, как я включил публикацию пакетов Java в Maven Central для этого нового сообщества github и как вы можете сделать это для своего собственного домена . Поскольку Java является одним из наших наиболее часто используемых языков, и большинство Java-проектов теперь используют Maven или Gradle, я хотел дать возможность разработчикам, предоставляющим свои Java-проекты, легко публиковать их в Maven Central, чтобы всем членам сообщества было проще их использовать.

За последние несколько недель я выполнил шаги, необходимые для настройки публикации пакетов Java в Maven Central для https://solace.community домен. Это было сложнее, чем я думал, поэтому я решил поделиться тем, что я сделал, чтобы, надеюсь, помочь другим:)

Я постараюсь говорить коротко и по существу, но не стесняйтесь, дайте мне знать, если у вас возникнут какие-либо вопросы. Я использовал следующие ресурсы при разработке этих шагов, так что спасибо их создателям!

Настройка SSH (Репозитория)

Существует несколько утвержденных вариантов размещения репозитория, указанных Maven Central. Вы можете найти весь список здесь , но самый простой подход, по-видимому, заключается в использовании Хостинг репозитория программного обеспечения с открытым исходным кодом (OSSRH) вот такой подход я решил использовать.

Обратите внимание, что если вы просто пытаетесь опубликовать несколько личных проектов на github и хорошо публикуете под Обратите внимание, что если вы просто пытаетесь опубликовать несколько личных проектов на github и хорошо публикуете под тогда вам не нужно выполнять все эти шаги, поэтому я бы посоветовал отправиться в Google и выполнить еще несколько поисковых запросов:)

Получить Учетную Запись

Первым шагом на этом пути является регистрация учетной записи OSSRH. Эта учетная запись будет использоваться для подтверждения права собственности на ваш домен (для публикации пакетов), а также для управления вашими репозиториями в будущем. Зарегистрируйтесь для учетной записи здесь

✅ Аккаунт Созданный

Доказать Право Собственности на Домен

Теперь, когда у вас есть учетная запись, следующий шаг в этом процессе – подтвердить право собственности на домен, соответствующий группе, в которой вы хотите опубликовать. Обычно это ваше доменное имя в обратном порядке, поэтому что-то вроде com.company если ваш домен company.com . Так как наше сообщество разработчиков находится по адресу solace.community это означало, что мы опубликуем в группе сообщество.утешение .

Чтобы доказать, что мы владеем этим доменом, мне пришлось выполнить несколько простых шагов:

  1. Откройте Билет на новый проект с помощью OSSRH.
  2. Следуйте инструкциям запроса в билете, чтобы добавить запись DNS TXT в наш домен.
  3. Подождите несколько часов (в нем говорится, что это может занять до 2 рабочих дней), чтобы проверить запись DNS TXT.
  4. Проверьте билет для подтверждения того, что владение доменом было подтверждено.
  5. Сделайте пометку, чтобы прокомментировать этот билет после вашего первого выпуска, чтобы включить синхронизацию с maven central!

✅ Владение доменом доказано

Создайте Свой Пользовательский Токен

Теперь, когда у нас есть разрешение на публикацию в нашем домене, нам нужно создать токен пользователя для публикации. Этот токен будет использоваться как часть процесса публикации.

Чтобы получить этот токен, выполните следующие действия:

  1. Войдите в Менеджер репозитория OSSRH Nexus с вашим OSSRH счет
  2. Перейдите в свой профиль, используя меню под вашим именем пользователя в правом верхнем углу.
  3. Вы должны увидеть меню списка, которое находится на странице Сводка ; измените его на Пользовательский токен . Вы можете создать свой токен на этой странице.
  4. Скопируйте и вставьте эту информацию о токене, чтобы вы могли использовать ее позже! (Держите это в секрете!)

✅ OSSRH теперь готов к работе , и у нас есть необходимая информация

Настройка Maven pom

Следующий шаг – настроить maven pom для публикации. Обратите внимание, что я использовал программирование копирования и вставки, чтобы понять это так что я здесь ни в коем случае не эксперт:) Если вы читаете это и считаете, что я должен включить здесь более подробную информацию или мои объяснения сбивают с толку, пожалуйста, оставьте комментарий и дайте мне знать.

Полный пример pom можно найти здесь

Вот что я сделал:

  1. Гарантировал, что мой Идентификатор группы начинается с обратного домена, на который у нас есть разрешение на публикацию! Например, это то, что мы использовали, обратите внимание, что Идентификатор группы начинается с community.solace .

  2. Что нужно знать об этой версии! Хорошо это важно . При публикации проектов maven у вас есть релизы и моментальные снимки. “Релиз” – это окончательная сборка для версии, которая не меняется, тогда как “снимок” – это временная сборка, которая может быть заменена другой сборкой с тем же именем. Идите вперед и погуглите это, если хотите узнать больше:) Как только вы поймете разницу, вы будете готовы установить свою версию. Используйте версию, оканчивающуюся на число, например: 1.1.0 , для “выпуска” и завершите его -МОМЕНТАЛЬНЫМ СНИМКОМ , например: 1.1.0-МОМЕНТАЛЬНЫЙ СНИМОК для моментального снимка.

  3. Укажите имя описания, описание и URL-адрес, указывающий на ваш репозиторий. Например,

  4. Включите лицензию, информацию об управлении версиями scm , разработчиках и организации (я считаю, что это необязательно). Информация.

  5. Добавьте профиль для OSSRH, который включает репозиторий моментальных снимков информация, nexus-staging-maven-плагин и maven-gpg-плагин . Обратите внимание, что в приведенном ниже примере у меня есть этот профиль activeByDefault активныйдефолт поэтому вам не нужно указывать его при запуске команд maven, однако вы можете не захотеть этого делать. Зависит от вашего варианта использования:)

  6. Включите плагин maven-release , плагин maven-javadoc , плагин maven-source и плагин flatten-maven-plugin плагин.

✅ Maven pom теперь готов к работе!

Создание ключей GPG

Следующим шагом будет создание ключа GPG для подписи опубликованных пакетов. Это позволяет пользователям вашего проекта проверять подлинность опубликованного пакета и доверять его использованию в своих собственных проектах. Для того чтобы создать ключ GPG, вам нужно будет выполнить несколько шагов.

Создайте Свой Ключ

Первый шаг – Создать Свой ключ . Вы можете сделать это локально, используя такой инструмент, как gpg. Обязательно сохраняйте свой приватный ключ в секрете. Если другие узнают об этом, они могут стать надежным издателем ваших пакетов.

  1. Установите инструмент gpg; на mac вы можете сделать это, выполнив приведенную ниже команду. Если вы не используете mac, ознакомьтесь с инструкциями здесь

  2. Создайте свою пару ключей. Вам будет предложено ввести “Настоящее имя” и “Адрес электронной почты”, которые вы хотите использовать с ключом

✅ Создан ключ GPG!

Поделитесь Своим Открытым Ключом

Теперь, когда вы сгенерировали свою пару ключей, состоящую из закрытого и открытого ключей, вам необходимо поделиться общедоступной частью. Открытый ключ будет использоваться разработчиками для проверки подлинности пакета. Вы также можете сделать это с помощью команды gpg . Он передаст ваш ключ серверу ключей, такие инструменты, как maven, знают, как запрашивать ключи для автоматической проверки.

  1. Получите идентификатор вашей пары ключей. Для этого вам нужно перечислить свои ключи. Ключ будет иметь идентификатор, который выглядит как случайная строка символов, что-то вроде C48B6G0D63B854H7943892DF0C753FEC18D3F855 . В приведенной ниже команде я заменил его на МОЙ идентификатор , чтобы показать его местоположение.
MJD-MacBook-Pro.local:~$ gpg --list-keys
/path/to/keyring/pubring.kbx
---------------------------------------------
pub   rsa3072 2021-03-11 [SC] [expires: 2023-03-11]
      MYIDENTIFIER
uid           [ultimate] solacecommunity 
sub   rsa3072 2021-03-11 [E] [expires: 2023-03-11]
  1. Распространять на сервер ключей, используя идентификатор, найденный на предыдущем шаге. Обратите внимание, что вы можете опубликовать на другом сервере ключей. Тот, который работал для меня, был hkp://сервер ключей.ubuntu.com: 11371
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys MYIDENTIFIER

✅ Теперь мы поделились нашим открытым ключом!

Настройте секреты Github

Хорошо, на данный момент наш проект выглядит довольно хорошо и мы могли бы запустить развертывание локально, используя команду mvn --пакетный режим чистого развертывания , однако на самом деле мы хотим выполнить наши выпуски с помощью действия Github. Спасибо суале за создание этой сути , которая помогает мне ориентироваться в следующих нескольких шагах! Чтобы освободить вас от действия на Github, нам необходимо сделать ваш закрытый ключ GPG и информацию о пользователе SSH доступными для действий на Github, сохраняя при этом конфиденциальность. Мы можем сделать это, используя Секреты действий Github .

Я создал секреты на уровне организации Github, поэтому я выполнил следующие действия, чтобы сохранить свой OSSRH_GPG_SECRET_KEY , OSSRH_GPG_SECRET_KEY_ ПАРОЛЬ , ИМЯ ПОЛЬЗОВАТЕЛЯ OSSRH_ и Пароль OSSRH_PASSWORD секретный. Если не ясно по имени, это мой Секретный ключ GPG, мой пароль секретного ключа GPG, мое имя пользователя SSH (из токена, который мы сгенерировали ранее) и пароль OSSRH (из токена, который мы сгенерировали ранее).Если этот снимок экрана кажется устаревшим, вы можете найти документы здесь

✅ Секреты настроены!

Настройка действия на Github

Теперь, когда секреты действий Github доступны, давайте продолжим и настроим само действие Github. Чтобы отдать должное там, где это необходимо, я создал это действие на github, используя этот суть в качестве отправной точки. Вы можете найти файл рабочего процесса Github Action здесь .

Ниже вы увидите, что это действие Github будет запущено в последней версии ubuntu и выполнит задание опубликовать , состоящее из нескольких шагов. Эти шаги позволят настроить информацию о центральном репозитории maven, установить секретный ключ, а затем выполнить команду для публикации в OSSRH.

name: Publish package to the Maven Central Repository
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Maven Central Repository
        uses: actions/setup-java@v1
        with:
          java-version: 11
          server-id: ossrh
          server-username: MAVEN_USERNAME
          server-password: MAVEN_PASSWORD
      - id: install-secret-key
        name: Install gpg secret key
        run: |
         cat <(echo -e "${{ secrets.OSSRH_GPG_SECRET_KEY }}") | gpg --batch --import
         gpg --list-secret-keys --keyid-format LONG
      - id: publish-to-central
        name: Publish to Central Repository
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
        run: |
          mvn \
            --no-transfer-progress \
            --batch-mode \
            -Dgpg.passphrase=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} \
            clean deploy

✅ Действие на Github готово к работе

Запускаем действие на Github – давайте протестируем его с помощью моментального снимка

Теперь вы готовы запустить действие на Github. Я бы рекомендовал сначала протестировать публикацию выпуска моментального снимка. Чтобы убедиться, что вы это сделаете, убедитесь, что ваша версия в pom заканчивается на -СНИМОК , как обсуждалось ранее.

  1. Как только версия вашей основной ветки будет включать -СНИМОК , продолжайте и запустите рабочий процесс действий на github. Вы должны увидеть опубликовать успехи в выполнении заданий через несколько минут, в зависимости от того, сколько времени займет ваша сборка. В первый раз наш занял 1 м 20 секунд.

  2. После успешного выполнения задания развертывания вы можете перейти к https://s01.oss.sonatype.org/content/repositories/snapshots/ и перейдите к своему проекту, чтобы убедиться, что снимок успешно развернут. Это должно выглядеть примерно так:

✅ Опубликован снимок!

Запускаем действие на Github – теперь давайте сделаем настоящий релиз

Теперь, когда снимок успешно развернут, давайте продолжим и сделаем настоящий релиз. Убедитесь, что ваш код готов, прежде чем выполнять эту часть курса:)

  1. Измените свою версию в pom, чтобы удалить -СНИМОК , поэтому он должен заканчиваться цифрой. Что-то вроде 1.1.0 .
  2. Повторно запустите рабочий процесс действий на Github. Дождитесь успешного выполнения задания публикации:)

✅ На этом этапе наш проект будет готов к выпуску. Остался всего один шаг!

Утвердить развертывание в Nexus

Теперь, когда наш проект подготовлен к выпуску, нам нужно войти в менеджер репозитория OSSRH Nexus для продвижения выпуска.

  1. Войдите в менеджер репозитория OSSRH Sonatype Nexus
  2. Перейдите к Промежуточным репозиториям в меню слева.
  3. Изучите содержимое релиза и, если все выглядит хорошо закройте релиз. Более подробная информация доступна здесь
  4. Развертывание OSSRH завершено, но если это ваш первый выпуск, не забудьте вернуться и прокомментировать свой “Билет на новый проект”, который мы создали ранее, чтобы ваш проект синхронизировался с Maven Central.

✅ Развертывание завершено!

Ознакомьтесь с развернутым проектом!

Через ~24 часа отправляйтесь в Поиск Maven Central и вы должны быть в состоянии найти наш проект, введя свой идентификатор группы или идентификатор артефакта.

Вывод

Надеюсь, это было полезно! Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы:)

Оригинал: “https://dev.to/mrc0113/publishing-github-java-packages-to-maven-central-for-a-new-domain-10d2”