Рубрики
Uncategorized

Дженкинсский трубопровод с Sonarqube и Gitlab

В этом руководстве мы собираемся развернуть процесс непрерывного интеграции между Jenkins, GitLab и S … Теги с Docker, Gitlab, Kubernetes, Devops.

В этом руководстве мы собираемся развернуть процесс непрерывного интеграции между 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:

Когда вы впервые посещаете свою среду Дженкинса в первый раз, он будет предлагать вам ввести пароль администратора, который был сгенерирован во время процесса установки. Чтобы получить доступ к паролю из контейнера, вы можете запустить следующую команду:

$ docker exec -it  cat /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 -it  bash

$ 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»