🎉 Команда по связям с разработчиками Утешение недавно запустила нашу организацию Утешение Сообщества github в качестве дома для проектов с открытым исходным кодом, которые создаются, поддерживаются и поддерживаются удивительным сообществом Утешение . Если вы заинтересованы в присоединении к нашему сообществу, вы можете прочитать об этом подробнее здесь , но это не будет в центре внимания остальной части этого блога. В центре внимания этого блога – то, как я включил публикацию пакетов Java в Maven Central для этого нового сообщества github и как вы можете сделать это для своего собственного домена . Поскольку Java является одним из наших наиболее часто используемых языков, и большинство Java-проектов теперь используют Maven или Gradle, я хотел дать возможность разработчикам, предоставляющим свои Java-проекты, легко публиковать их в Maven Central, чтобы всем членам сообщества было проще их использовать.
За последние несколько недель я выполнил шаги, необходимые для настройки публикации пакетов Java в Maven Central для https://solace.community домен. Это было сложнее, чем я думал, поэтому я решил поделиться тем, что я сделал, чтобы, надеюсь, помочь другим:)
Я постараюсь говорить коротко и по существу, но не стесняйтесь, дайте мне знать, если у вас возникнут какие-либо вопросы. Я использовал следующие ресурсы при разработке этих шагов, так что спасибо их создателям!
- Руководство по OSSRH
- Публикация пакетов Java с помощью Maven
- Как подписать и опубликовать в Центральном репозитории с помощью действий GitHub
Настройка SSH (Репозитория)
Существует несколько утвержденных вариантов размещения репозитория, указанных Maven Central. Вы можете найти весь список здесь , но самый простой подход, по-видимому, заключается в использовании Хостинг репозитория программного обеспечения с открытым исходным кодом (OSSRH) вот такой подход я решил использовать.
Обратите внимание, что если вы просто пытаетесь опубликовать несколько личных проектов на github и хорошо публикуете под Обратите внимание, что если вы просто пытаетесь опубликовать несколько личных проектов на github и хорошо публикуете под тогда вам не нужно выполнять все эти шаги, поэтому я бы посоветовал отправиться в Google и выполнить еще несколько поисковых запросов:)
Получить Учетную Запись
Первым шагом на этом пути является регистрация учетной записи OSSRH. Эта учетная запись будет использоваться для подтверждения права собственности на ваш домен (для публикации пакетов), а также для управления вашими репозиториями в будущем. Зарегистрируйтесь для учетной записи здесь
✅ Аккаунт Созданный
Доказать Право Собственности на Домен
Теперь, когда у вас есть учетная запись, следующий шаг в этом процессе – подтвердить право собственности на домен, соответствующий группе, в которой вы хотите опубликовать. Обычно это ваше доменное имя в обратном порядке, поэтому что-то вроде com.company если ваш домен company.com . Так как наше сообщество разработчиков находится по адресу solace.community это означало, что мы опубликуем в группе сообщество.утешение .
Чтобы доказать, что мы владеем этим доменом, мне пришлось выполнить несколько простых шагов:
- Откройте Билет на новый проект с помощью OSSRH.
- Следуйте инструкциям запроса в билете, чтобы добавить запись DNS TXT в наш домен.
- Подождите несколько часов (в нем говорится, что это может занять до 2 рабочих дней), чтобы проверить запись DNS TXT.
- Проверьте билет для подтверждения того, что владение доменом было подтверждено.
- Сделайте пометку, чтобы прокомментировать этот билет после вашего первого выпуска, чтобы включить синхронизацию с maven central!
✅ Владение доменом доказано
Создайте Свой Пользовательский Токен
Теперь, когда у нас есть разрешение на публикацию в нашем домене, нам нужно создать токен пользователя для публикации. Этот токен будет использоваться как часть процесса публикации.
Чтобы получить этот токен, выполните следующие действия:
- Войдите в Менеджер репозитория OSSRH Nexus с вашим OSSRH счет
- Перейдите в свой профиль, используя меню под вашим именем пользователя в правом верхнем углу.
- Вы должны увидеть меню списка, которое находится на странице
Сводка; измените его наПользовательский токен. Вы можете создать свой токен на этой странице. - Скопируйте и вставьте эту информацию о токене, чтобы вы могли использовать ее позже! (Держите это в секрете!)
✅ OSSRH теперь готов к работе , и у нас есть необходимая информация
Настройка Maven pom
Следующий шаг – настроить maven pom для публикации. Обратите внимание, что я использовал программирование копирования и вставки, чтобы понять это так что я здесь ни в коем случае не эксперт:) Если вы читаете это и считаете, что я должен включить здесь более подробную информацию или мои объяснения сбивают с толку, пожалуйста, оставьте комментарий и дайте мне знать.
Полный пример pom можно найти здесь
Вот что я сделал:
Гарантировал, что мой
Идентификатор группыначинается с обратного домена, на который у нас есть разрешение на публикацию! Например, это то, что мы использовали, обратите внимание, чтоИдентификатор группыначинается сcommunity.solace.Что нужно знать об этой версии! Хорошо это важно . При публикации проектов maven у вас есть релизы и моментальные снимки. “Релиз” – это окончательная сборка для версии, которая не меняется, тогда как “снимок” – это временная сборка, которая может быть заменена другой сборкой с тем же именем. Идите вперед и погуглите это, если хотите узнать больше:) Как только вы поймете разницу, вы будете готовы установить свою версию. Используйте версию, оканчивающуюся на число, например:
1.1.0, для “выпуска” и завершите его-МОМЕНТАЛЬНЫМ СНИМКОМ, например:1.1.0-МОМЕНТАЛЬНЫЙ СНИМОКдля моментального снимка.Укажите имя описания, описание и URL-адрес, указывающий на ваш репозиторий. Например,
Включите лицензию, информацию об управлении версиями
scm, разработчиках и организации (я считаю, что это необязательно). Информация.Добавьте профиль для OSSRH, который включает
репозиторий моментальных снимковинформация,nexus-staging-maven-плагиниmaven-gpg-плагин. Обратите внимание, что в приведенном ниже примере у меня есть этот профильactiveByDefault активныйдефолтпоэтому вам не нужно указывать его при запуске команд maven, однако вы можете не захотеть этого делать. Зависит от вашего варианта использования:)Включите плагин
maven-release, плагинmaven-javadoc, плагинmaven-sourceи плагинflatten-maven-pluginплагин.
✅ Maven pom теперь готов к работе!
Создание ключей GPG
Следующим шагом будет создание ключа GPG для подписи опубликованных пакетов. Это позволяет пользователям вашего проекта проверять подлинность опубликованного пакета и доверять его использованию в своих собственных проектах. Для того чтобы создать ключ GPG, вам нужно будет выполнить несколько шагов.
Создайте Свой Ключ
Первый шаг – Создать Свой ключ . Вы можете сделать это локально, используя такой инструмент, как gpg. Обязательно сохраняйте свой приватный ключ в секрете. Если другие узнают об этом, они могут стать надежным издателем ваших пакетов.
Установите инструмент gpg; на mac вы можете сделать это, выполнив приведенную ниже команду. Если вы не используете mac, ознакомьтесь с инструкциями здесь
Создайте свою пару ключей. Вам будет предложено ввести “Настоящее имя” и “Адрес электронной почты”, которые вы хотите использовать с ключом
✅ Создан ключ GPG!
Поделитесь Своим Открытым Ключом
Теперь, когда вы сгенерировали свою пару ключей, состоящую из закрытого и открытого ключей, вам необходимо поделиться общедоступной частью. Открытый ключ будет использоваться разработчиками для проверки подлинности пакета. Вы также можете сделать это с помощью команды gpg . Он передаст ваш ключ серверу ключей, такие инструменты, как maven, знают, как запрашивать ключи для автоматической проверки.
- Получите идентификатор вашей пары ключей. Для этого вам нужно перечислить свои ключи. Ключ будет иметь идентификатор, который выглядит как случайная строка символов, что-то вроде 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]
- Распространять на сервер ключей, используя идентификатор, найденный на предыдущем шаге. Обратите внимание, что вы можете опубликовать на другом сервере ключей. Тот, который работал для меня, был
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 заканчивается на -СНИМОК , как обсуждалось ранее.
Как только версия вашей
основнойветки будет включать-СНИМОК, продолжайте и запустите рабочий процесс действий на github. Вы должны увидетьопубликоватьуспехи в выполнении заданий через несколько минут, в зависимости от того, сколько времени займет ваша сборка. В первый раз наш занял 1 м 20 секунд.После успешного выполнения задания развертывания вы можете перейти к https://s01.oss.sonatype.org/content/repositories/snapshots/ и перейдите к своему проекту, чтобы убедиться, что снимок успешно развернут. Это должно выглядеть примерно так:
✅ Опубликован снимок!
Запускаем действие на Github – теперь давайте сделаем настоящий релиз
Теперь, когда снимок успешно развернут, давайте продолжим и сделаем настоящий релиз. Убедитесь, что ваш код готов, прежде чем выполнять эту часть курса:)
- Измените свою версию в pom, чтобы удалить
-СНИМОК, поэтому он должен заканчиваться цифрой. Что-то вроде1.1.0. - Повторно запустите рабочий процесс действий на Github. Дождитесь успешного выполнения задания публикации:)
✅ На этом этапе наш проект будет готов к выпуску. Остался всего один шаг!
Утвердить развертывание в Nexus
Теперь, когда наш проект подготовлен к выпуску, нам нужно войти в менеджер репозитория OSSRH Nexus для продвижения выпуска.
- Войдите в менеджер репозитория OSSRH Sonatype Nexus
- Перейдите к
Промежуточным репозиториямв меню слева. - Изучите содержимое релиза и, если все выглядит хорошо
закройтерелиз. Более подробная информация доступна здесь - Развертывание OSSRH завершено, но если это ваш первый выпуск, не забудьте вернуться и прокомментировать свой “Билет на новый проект”, который мы создали ранее, чтобы ваш проект синхронизировался с Maven Central.
✅ Развертывание завершено!
Ознакомьтесь с развернутым проектом!
Через ~24 часа отправляйтесь в Поиск Maven Central и вы должны быть в состоянии найти наш проект, введя свой идентификатор группы или идентификатор артефакта.
Вывод
Надеюсь, это было полезно! Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы:)
Оригинал: “https://dev.to/mrc0113/publishing-github-java-packages-to-maven-central-for-a-new-domain-10d2”