В этом руководстве мы собираемся развернуть процесс непрерывного интеграции между Jenkins, Gitlab и Sonarqube.
Конечная цель будет проверять качество кода через Sonarqube для хранилища Gitlab с помощью Jenkins. Ниже приведен поток процессов, который нам нужно для управления:
- Нажмите код в GitLab с локальной машины.
- Далее, Checkout Code и Run Tests в Jenkins, здесь он действует как непрерывный интегратор.
- Создать отчет о качестве через Sonarqube в качестве анализатора кода.
Настройка Jenkins, Sonarqube и Gitlab
В случае, если вы еще не настроили необходимое программное обеспечение, пройдите через указанные ниже шаги:
Шаг 1:
Убедитесь, что ваш хост-машина имеет достаточно мощности для запуска этих компонентов, так как только GitLab требует 4 ГБ ОЗУ выполнять свои операции плавно. Чтобы запустить все три вместе, вам нужно как минимум 8 ГБ ОЗУ и 20 ГБ пространства жесткого диска.
Шаг 2:
Для Sonarqube вам необходимо установить рекомендуемые значения в качестве пользователя root на хост-машина:
$ sysctl -w vm.max_map_count=262144 $ sysctl -w fs.file-max=65536 $ ulimit -n 65536 $ ulimit -u 4096
Шаг 3:
Для этого руководства мы собираемся использовать простой файл docker-compose.yml. Однако вы можете редактировать файл согласно вашему требованию.
Перед запуском контейнеров, пожалуйста, убедитесь, что вы измените значение Gitlab_secrets_db_key_base.
, Gitlab_host
, Sonarqube_jdbc_password
и Postgres_password
Отказ Хотя вместе с этим вы также можете изменить определенные порты в файле.
version: "3.2" services: jenkins: image: jenkinsci/jenkins:lts container_name: jenkins-container restart: always ports: - "8080:8080" - '50000:50000' volumes: - '/var/run/docker.sock:/var/run/docker.sock' - '/data/jenkins/jenkins_home:/var/jenkins_home' environment: - "JENKINS_OPTS=--prefix=/jenkins" gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab-container restart: always environment: - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string - GITLAB_HOST=your-host-ip-here - GITLAB_PORT=10080 - GITLAB_SSH_PORT=10022 ports: - "10080:80" - "10022:22" volumes: - '/data/gitlab/config:/etc/gitlab' - '/data/gitlab/logs:/var/log/gitlab' - '/data/gitlab/data:/var/opt/gitlab' sonarqube: image: sonarqube:7.9.2-community container_name: sonar-container restart: always networks: - sonarnet environment: - SONARQUBE_JDBC_USERNAME=sonar - SONARQUBE_JDBC_PASSWORD=your-strong-password-here - SONARQUBE_JDBC_URL=jdbc:postgresql://postgressdb:5432/sonarqube ports: - "9000:9000" - "9092:9092" volumes: - '/data/sonar/sonarqube_conf:/opt/sonarqube/conf' - '/data/sonar/sonarqube_data:/opt/sonarqube/data' - '/data/sonar/sonarqube_extensions:/opt/sonarqube/extensions' - '/data/sonar/sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins' postgressdb: image: postgres:12.1 container_name: postgres-container restart: always networks: - sonarnet environment: - POSTGRES_USER=sonar - POSTGRES_PASSWORD=your-strong-password-here - POSTGRES_DB=sonarqube volumes: - '/data/postgresql/sonarqube_db:/var/lib/postgresql' - '/data/postgresql/postgresql_data:/var/lib/postgresql/data' networks: sonarnet: driver: bridge
Теперь запустите следующую команду, чтобы запустить стек:
$ docker-compose up -d
Обратите внимание, что процесс установки займет некоторое время, поэтому сядьте назад и у вас есть кофе. Ты заслуживаешь это!
Шаг 4:
Теперь, чтобы убедиться, что все системы работают и работают, запустите эту команду:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f54e223417fa gitlab/gitlab-ce:latest "/assets/wrapper" 1 minute ago 1 minute ago (healthy) 443/tcp, 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp gitlab-container 9102f03f69b8 sonarqube "./bin/run.sh" 1 minute ago 1 minute ago 0.0.0.0:9000->9000/tcp sonar-container 05f554da39fc jenkinsci/jenkins:lts "/bin/tini --..." 1 minute ago 1 minute ago 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins-container
Если все прошло хорошо, то вы можете получить доступ к всем трем из них следующими упомянутыми URL:
- Дженкинс — http://ваш IP-адрес: 8080
- Sonarqube — http://ваш IP-адрес: 9000
- Gitlab — http://ваш IP-адрес: 10080
Когда вы впервые посещаете свою среду Дженкинса в первый раз, он будет предлагать вам ввести пароль администратора, который был сгенерирован во время процесса установки. Чтобы получить доступ к паролю из контейнера, вы можете запустить следующую команду:
$ docker exec -itcat /var/jenkins_home/secrets/initialAdminPassword $ gSzHTGfbtXSpcBXMyJ6gzmNfNH7BjhK23
Как только вы введете пароль, вы можете выбрать опцию Установить предложенный плагин . Подождите, пока загрузка заканчивается.
Для Sonarqube имя пользователя и пароль по умолчанию являются администратором и администратором соответственно. Принимая во внимание, что для GitLab вам будет предложено ввести новый пароль для root имя пользователя по умолчанию.
Настройка трубопровода Jenkins с Sonarqube и Gitlab интеграция
Конфигурация Sonarqube: Мы начнем с Sonarqube. Чтобы подключить его с Jenkins, вам необходимо создать токен для доступа к экземпляру Sonarqube.
Войдите в панель инструментов Sonarqube и перейдите на вкладку «Администратор». В раскрывающемся меню безопасности выберите вкладку «Пользователь», как показано на изображении ниже:
Здесь вы найдете пользователь администратора, для которого вы собираетесь генерировать токен доступа:
В всплывающем окне отображаются на вашем экране, введите нужное имя и нажмите на Генерация кнопка. Скопируйте вновь сгенерированный токен и сохраните его в безопасности, так как вы не сможете просматривать/скопировать сгенерированный токен снова.
Конфигурация GitLab: Чтобы установить соединение между GitLab и Jenkins, опять же, нам нужно создать токен доступа, который можно сделать, как указано ниже:
Чтобы генерировать токен доступа, перейдите на панель инструментов GitLab и следуйте за Приборная панель> Настройка> Токены доступа
. Как только у вас есть токен с вами, скопируйте его для дальнейшего использования.
Интеграция Sonarqube и Gitlab в Дженкинс: Это руководство предполагает, что вы уже сделали основную настройку для Jenkins. Теперь давайте перейдем к настройке GitLab и Sonarqube на сервере Jenkins.
Во-первых, мы собираемся интегрировать Sonarqube. Идти Dashboard> Управление Jenkins> Управление плагинами
И искать Sonarqube.
Убедитесь, что вы перезапустите Jenkins после успешного установки плагина.
Как только перезапуск будет завершен, вы должны настроить Sonar Scanner, который является автономным инструментом, используемым для сканирования исходного кода и отправить результат на сервер Sonarqube. Здесь вы собираетесь установить его в сам контейнер Дженкинса, хотя вы можете запустить отдельный контейнер для той же цели.
$ docker exec -itbash $ cd /var/jenkins_home $ wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip $ unzip sonar-scanner-cli-4.2.0.1873-linux.zip
Вернитесь на страницу управления Jenkins и выберите Глобальный конфигурацию инструмента.
На этой странице найдите Sonarqube Scanner и добавьте завершить установку:
Не забудьте снять флажок Установите автоматически Как вы должны определить установочный путь сканера SONAR явно.
Поскольку jenkins и sonarqube работают в отдельных контейнерах докеров, нам нужно создать веб -ook на сервере Sonarqube, чтобы оба могли оба взаимодействовать друг с другом. Сделать это, следуйте за Приборная панель> Администратор> Конфигурация> WebHook
:
Наконец, вы должны добавить токен доступа, который вы сгенерировали на сервере Sonarqube в Jenkins. Следуй по URL http://your-ip-addr — здесь: 8080/Учетные данные/магазин/система/ или пойти в Приборная панель> Учетные данные> Система
, как показано ниже:
Нажмите на Добавить учетные данные Ссылка и выберите поле «Секретный текст» под Добрый :
В секретной области вставьте созданный токен из Sonarqube, который вы ранее создали.
Теперь добавьте сервер Sonarqube в свою среду Дженкинса. Перейти к Приборная панель> Управление Jenkins> Настройка системы
Отказ Найти Sonarqube Server На странице и добавьте необходимые детали, как указано ниже:
Теперь вы должны добавить Gitlab в Дженкинс, посетите Приборная панель> Учетные данные> Система
Отказ Здесь вы собираетесь добавить токен доступа, который вы ранее создали на ваш сервер Jenkins. Хотя вы также можете использовать Добрый с именем пользователя и паролем.
Когда вы проходите с интеграцией Sonarqube и GitLab в Дженкинсах, пришло время управлять другими зависимостями. В этом руководстве мы собираемся использовать простое приложение Nodejs; Следовательно, пришло время установить Nodejs на ваш сервер Jenkins.
Nodejs Окружающая среда в Дженкинсах:
Чтобы установить плагин Nodejs, перейдите в Приборная панель> Управление Jenkins> Управление плагинами> Доступны
и поиск и выберите nodejs. Нажмите на Установить без перезагрузки Кнопка, как показано на рисунке ниже.
После успешной установки плагина Nodejs в Дженкинс убедитесь, что вы перезапускаете Jenkins.
Чтобы настроить плагин Nodejs, перейдите в Приборная панель> Управляйте Jenkins> Global Tool Configuration
и найти «Nodejs». Нажмите на кнопку установки NODEJS и добавьте необходимые детали, как показано на рисунке:
Укажите имя и выберите версию Nodejs согласно вашему требованию; Вы также можете установить глобальные пакеты NPM и установите скорость обновления в зависимости от требований проекта.
После этого вам нужно сохранить конфигурацию. Поскольку мы проходим с ужасной частью установки и настройки среды, пришло время создать проектный трубопровод.
Создание трубопровода Дженкинса
Здесь вы собираетесь создать трубопровод с использованием декларативного сценаризованного трубопровода. Выполните следующие шаги, чтобы начать:
Шаг 1 — Создайте новую работу Перейдите на приборную панель Дженкинса и нажмите ссылку «Новый элемент». Теперь введите имя элемента и выберите Трубопровод Вариант, как показано на рисунке:
Шаг 2 — Трубопровод Упомянутый ниже простой скрипт трубопровода помогает вам потянуть код из GitLab, чек качества через Sonarqube и использовать Nodejs.
pipeline { agent any tools {nodejs "nodenv"} stages { stage("Code Checkout from GitLab") { steps { git branch: 'master', credentialsId: 'gitlab_access_token', url: 'http://your-ip-here:10080/root/test-project.git' } } stage('Code Quality Check via SonarQube') { steps { script { def scannerHome = tool 'sonarqube'; withSonarQubeEnv("sonarqube-container") { sh "${tool("sonarqube")}/bin/sonar-scanner \ -Dsonar.projectKey=test-node-js \ -Dsonar.sources=. \ -Dsonar.css.node=. \ -Dsonar.host.url=http://your-ip-here:9000 \ -Dsonar.login=your-generated-token-from-sonarqube-container" } } } } stage("Install Project Dependencies") { steps { nodejs(nodeJSInstallationName: 'nodenv'){ sh "npm install" } } } } }
Убедитесь, что вы измените значения URL-адреса GitLab Reppo, URL-адреса Sonarqube и его токен доступа.
Добавьте вышеупомянутый скрипт трубопровода и сохраните его, как показано на рисунке ниже:
Шаг 3 — Запустите трубопровод Теперь, как вы сохранили скрипт трубопровода, пришло время создать приложение в Дженкинс. Перейти к Приборная панель> Ваш проект> сборка Сейчас
Отказ
Как только вы нажмете Построить сейчас Ссылка Jenkins начнет строительный проект согласно сценарию трубопроводов. В истории сборки вы увидите панель прогресса для текущей сборки вместе с видом на сцену:
Если ваша сборка успешно работает, вы сможете увидеть время, сделанное каждым этапом, в Сцена Вид :
Кроме того, вы можете посетить панель инструментов Sonarqube, чтобы увидеть отчет кода проекта, посетив ссылку с именем «Sonarqube» на странице Project Pain Ebrue.
Вот и все! Вы успешно создали трубопровод Jenkins при использовании Sonarqube и Gitlab. Теперь каждый раз, когда вы нажимаете код в репо, вы можете построить проект, который покажет качество кода.
Оригинал: «https://dev.to/appfleet/jenkins-pipeline-with-sonarqube-and-gitlab-1b8f»