В этом руководстве мы будем использовать Jenkins в качестве непрерывного интеграционного сервера и Nexus в качестве репозитория сборки.
Конечная цель этого руководства состоит в том, чтобы создать поток, где мы можем построить, хранить, организовывать и монитор скомпилированные артефакты Maven через наш CI Server.
Прежде чем начать, убедитесь, что у вас уже есть Дженкинс вверх и бега. Если вы еще не настроили Jenkins, а затем скопируйте команду ниже и запустите его на Host/Machine Docker.
$ docker run -d --name jenkins-ci -p 8080:8080 jenkins/jenkins:lts
После того, как контейнер Дженкинса настроен на вашем локальном/удаленном компьютере. Перейдите в свой любимый браузер и откройте URL http:///ваш IP-addr: 8080
Отказ
На самой первой странице jenkins попросит вас за пароль администратора, который вы можете найти, запустив указанную ниже команду в вашем терминале:
$ docker exec -i jenkins-ci cat /var/jenkins_home/secrets/initialAdminPassword b5102c8d9fa245dbb0b8da03f504d3a5
Следуйте инструкциям, чтобы закончить конфигурацию. Сохраните имя пользователя и пароль надежно для будущего использования.
Установка Nexus:
Nexus — это менеджер репозитория, который позволяет хранить и получать артефакты. Это позволяет размещать ваши построенные артефакты в частном и безопасном репо. Вы всегда можете вытащить изображение Nexus Docker, используя следующую команду:
$ docker pull sonatype/nexus3 Using default tag: latest latest: Pulling from sonatype/nexus3 cb3c77f9bdd8: Pull complete fd8daf2668d1: Pull complete fd1ff82b00e8: Pull complete 2a05f7b573af: Pull complete Digest: sha256:6570855dfbc3eb094fe5cbbacec87aa8b91d16394dab627177e1deeebb5ac8ee Status: Downloaded newer image for sonatype/nexus3:latest docker.io/sonatype/nexus3:latest
Теперь пришло время запускать загруженные Sonatype/Nexus
На порт по умолчанию 8081
Отказ Следуйте указанным ниже командам:
$ docker run -d --name nexus_repo -p 8081:8081 sonatype/nexus3
Обычно требуется от 1 до 2 минут для службы Nexus для запуска вашего вновь созданного контейнера Docker. Если вы хотите следовать в журнале, чтобы увидеть, если Nexus работает и готов, затем запустите следующую команду:
$ docker logs nexus_repo -f
В журналах вы увидите сообщение, указав Начал Sonatype Nexus OSS 3.20.1-01
Отказ Это означает, что ваш менеджер репозитория Nexus готов к использованию. Теперь иди в свой браузер и откройте http://your-ip-addr: 8081
Отказ Найти Войти Вариант, как показано ниже:
Имя пользователя по умолчанию является администратором, тогда как для получения пароля необходимо выполнить следующую команду:
$ docker exec -i nexus_repo cat /nexus-data/admin.password 502ace93-5450-4f0d-97d2-9b3b3a88d149
Вот и все. Ваш менеджер репозитория Nexus готов к использованию. Следующим шагом является создание нового репозитория.
Создайте репозиторий в Nexus:
На этом этапе вы собираетесь создать модернизированное хранилище Maven в Nexus, где ваши Jenkins собираются загружать «строить» артефакты.
Шаг 1: Следуйте указанным ниже шагам, чтобы создать размещенное хранилище, назвать его как Maven-Nexus-repo
, который вы собираетесь использовать в этом руководстве.
Выберите Maven2 (размещена) Рецепт из списка, как показано на указанном ниже Рисунке:
Шаг 2: На Создать репозиторий страница,
- Введите имя как maven-nexus-repo
- В версиях политики выберите Смешанный Тип артефактов.
- Под Хозяин Раздел, в Политика развертывания Выберите Разрешить переделывать . Это позволит вам развернуть приложение несколько раз.
Шаг 3: Чтобы создать новый пользователь, перейдите в Приборная панель> Администратор сервера и конфигурация> Пользователь> Создать пользователя Отказ Выберите Местный Тип пользователя, который оказывается realm по умолчанию:
В Создать пользователя Страница, 1 ID : Введите нужный идентификатор; В нашем случае это jenkins-user
Отказ 2. Имя : Введите желаемое имя; В нашем случае это Дженкинс
Отказ 3. Фамилия : Введите желаемое второе имя; В нашем случае это Пользователь
. 4. Email : Введите ваш адрес электронной почты. 5. Статус : Выберите Активный из вашего раскрывающегося меню. 6. Роли : Убедитесь, что вы дарите NX-Admin. роль вашему пользователю.
Если вы хотите больше деталей для создания пользователя, затем нажмите здесь Отказ
С этим мы проходим с настройкой частью диспетчера репозитория Nexus. Давайте перейдем к Jenkins для настройки Nexus там.
Установите и настройте плагины Nexus в Jenkins
Здесь вы собираетесь установить и настроить несколько плагинов для Nexus в Jenkins. Для этого иди в Дженкинс, а затем Приборная панель> Управление Jenkins> Управление плагинами> Доступны и поиск и установка Nexus Artifact Uploader и Стадии утилиты трубопровода .
Добавьте пользовательские учетные данные менеджера репозитория Nexus в Jenkins. Перейти к Приборная панель> Учетные данные> Система> Глобальные учетные данные (неограниченные) , как показано ниже:
Далее настройте Maven в качестве управляемого инструмента. Перейти к Приборная панель> Управляйте Jenkins> Global Tool Configuration и найти Maven Отказ В этом разделе нажмите на Установки Maven кнопка и добавить Maven , как показано ниже:
В качестве альтернативы, вы также можете установить двоичную Maven непосредственно в свой контейнер на /var/jenkins_home
каталог.
Создать трубопровод Jenkins
Пришло время создать работу Дженкинса. Здесь вы собираетесь использовать тип работы трубопровода, названный как Jenkinsnexus , как показано ниже:
На следующей странице найдите сечение трубопровода и скопируйте указанный ниже скрипт в текстовой области:
pipeline { agent { label "master" } tools { maven "Maven" } environment { NEXUS_VERSION = "nexus3" NEXUS_PROTOCOL = "http" NEXUS_URL = "you-ip-addr-here:8081" NEXUS_REPOSITORY = "maven-nexus-repo" NEXUS_CREDENTIAL_ID = "nexus-user-credentials" } stages { stage("Clone code from VCS") { steps { script { git 'https://github.com/javaee/cargotracker.git'; } } } stage("Maven Build") { steps { script { sh "mvn package -DskipTests=true" } } } stage("Publish to Nexus Repository Manager") { steps { script { pom = readMavenPom file: "pom.xml"; filesByGlob = findFiles(glob: "target/*.${pom.packaging}"); echo "${filesByGlob[0].name} ${filesByGlob[0].path} ${filesByGlob[0].directory} ${filesByGlob[0].length} ${filesByGlob[0].lastModified}" artifactPath = filesByGlob[0].path; artifactExists = fileExists artifactPath; if(artifactExists) { echo "*** File: ${artifactPath}, group: ${pom.groupId}, packaging: ${pom.packaging}, version ${pom.version}"; nexusArtifactUploader( nexusVersion: NEXUS_VERSION, protocol: NEXUS_PROTOCOL, nexusUrl: NEXUS_URL, groupId: pom.groupId, version: pom.version, repository: NEXUS_REPOSITORY, credentialsId: NEXUS_CREDENTIAL_ID, artifacts: [ [artifactId: pom.artifactId, classifier: '', file: artifactPath, type: pom.packaging], [artifactId: pom.artifactId, classifier: '', file: "pom.xml", type: "pom"] ] ); } else { error "*** File: ${artifactPath}, could not be found"; } } } } } }
Давайте сломаем вышеупомянутые параметры бит бит:
- Nexus_version : Здесь мы должны упомянуть точную версию Nexus, которая может быть
Nexus2.
илиNexus3
Отказ В нашем случае это последняя версияNexus3
Отказ - Nexus_protocol : Для этого руководства мы использовали HTTP-протокол, хотя, в случае производства, вам придется использовать HTTPS.
- Nexus_url : Добавьте свой IP-адрес и номер порта, где вы работаете Nexus. Убедитесь, что вы добавляете детали экземпляра Nexus без упоминания протоколов, то есть
HTTPS.
илиhttp
. Отказ - Nexus_credential_id : Введите идентификатор пользователя, который вы ранее создали в Jenkins, которые в нашем случае это
Nexus-пользователь-учетные данные
Отказ - Проект Git : Под этапами мы использовали
https://github.com/javaee/cargotracker.
Как вы проходите с настройкой трубопровода, пришло время Строить
наш проект. Перейти к Jenkinsnexus Страница работы проекта и нажмите Построить сейчас Отказ Поскольку это ваша первая сборка, это займет некоторое время, так что сидеть крепко.
После того, как Build — это успех, в вашем выходе на консоль Jenkins вы увидите что-то подобное:
Принимая во внимание, что в вашем менеджере репозитория Nexus вы увидите что-то похожее на это:
Заключение:
Системный способ беспокоить артефакт проекта имеет решающее значение для любой организации. Благодаря справочникам Дженкинса трубопровода и менеджера репозитория Nexus, вы можете централизовать артефакт REPO, что в конечном итоге сокращает усилия воспроизводящего времени сборки, а также коммутационные инструменты CI, не беспокоясь о миграции наших артефактов.
Nexus можно настроить с облачными хранилищами, такими как AWS S3 и Google Cloud Storage, что дает вам дополнительную заявку на свободу и доставку без каких-либо хлопот хранения.
Оригинал: «https://dev.to/appfleet/publishing-artifacts-to-sonatype-nexus-using-jenkins-pipelines-280o»