Рубрики
Uncategorized

Публикация артефактов для Sonatype Nexus с использованием трубопроводов Jenkins

В этом руководстве мы будем использовать Jenkins в качестве непрерывного интеграционного сервера и Nexus в качестве репозитория сборки … Теги с докером, дежоптом.

В этом руководстве мы будем использовать 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»