Skip to content

Latest commit

 

History

History

README.md

Домашнее задание к занятию "09.03 CI\CD"

Подготовка к выполнению

  1. Создаём 2 VM в yandex cloud со следующими параметрами: 2CPU 4RAM Centos7(остальное по минимальным требованиям)
  2. Прописываем в inventory playbook'a созданные хосты
  3. Добавляем в files файл со своим публичным ключом (id_rsa.pub). Если ключ называется иначе - найдите таску в плейбуке, которая использует id_rsa.pub имя и исправьте на своё
  4. Запускаем playbook, ожидаем успешного завершения
  5. Проверяем готовность Sonarqube через браузер
  6. Заходим под admin\admin, меняем пароль на свой
  7. Проверяем готовность Nexus через бразуер
  8. Подключаемся под admin\admin123, меняем пароль, сохраняем анонимный доступ

Ответ

Выполнено с помощью скрипта start.sh (полный stdout в файле):

vagrant@server2:~/REPO/mnt-homeworks/09-ci-03-cicd$ ./start.sh apply
--- Starting Terraform ...

Initializing the backend...

Initializing provider plugins...
- Reusing previous version of terraform-registry.storage.yandexcloud.net/yandex-cloud/yandex from the dependency lock file
- Using previously-installed terraform-registry.storage.yandexcloud.net/yandex-cloud/yandex v0.72.0

Terraform has been successfully initialized!
...

vagrant@server2:~/REPO/mnt-homeworks/09-ci-03-cicd$ ./start.sh play
--- Using IP adresses ...
"51.250.70.242"
"62.84.112.18"
[WARNING]: Unable to parse /home/vagrant/REPO/mnt-homeworks/09-ci-03-cicd/infrastructure/inventory/hosts.yml as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
[WARNING]: Could not match supplied host pattern, ignoring: sonarqube
...
PLAY RECAP *********************************************************************************************************************************
nexus-01                   : ok=17   changed=15   unreachable=0    failed=0    skipped=2    rescued=0    ignored=0
sonar-01                   : ok=35   changed=27   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

--- All ok. Check the service!

Знакомоство с SonarQube

  1. Создаём новый проект, название произвольное
  2. Скачиваем пакет sonar-scanner, который нам предлагает скачать сам sonarqube
  3. Делаем так, чтобы binary был доступен через вызов в shell (или меняем переменную PATH или любой другой удобный вам способ)
  4. Проверяем sonar-scanner --version
  5. Запускаем анализатор против кода из директории example с дополнительным ключом -Dsonar.coverage.exclusions=fail.py
  6. Смотрим результат в интерфейсе
  7. Исправляем ошибки, которые он выявил(включая warnings)
  8. Запускаем анализатор повторно - проверяем, что QG пройдены успешно
  9. Делаем скриншот успешного прохождения анализа, прикладываем к решению ДЗ

Ответ

Для исключения ошибок warning был дописан файл sonar-project.properties:

sonar.python.version=2.7, 3.7, 3.8
sonar.scm.disabled=true

Скриншоты SonarQ: Sonar_1_success_01 Sonar_1_success_02

Знакомство с Nexus

  1. В репозиторий maven-public загружаем артефакт с GAV параметрами:
    1. groupId: netology
    2. artifactId: java
    3. version: 8_282
    4. classifier: distrib
    5. type: tar.gz
  2. В него же загружаем такой же артефакт, но с version: 8_102
  3. Проверяем, что все файлы загрузились успешно
  4. В ответе присылаем файл maven-metadata.xml для этого артефекта

Ответ

Скриншот Nexus: Nexus_repo_files_01

Файл maven-metadata.xml

Знакомство с Maven

  1. Скачиваем дистрибутив с maven

  2. Разархивируем, делаем так, чтобы binary был доступен через вызов в shell (или меняем переменную PATH или любой другой удобный вам способ)

  3. Удаляем из apache-maven-<version>/conf/settings.xml упоминание о правиле, отвергающем http соединение( раздел mirrors->id: my-repository-http-unblocker)

  4. Проверяем mvn --version

  5. Забираем директорию mvn с pom

  6. Меняем в pom.xml блок с зависимостями под наш артефакт из первого пункта задания для Nexus (java с версией 8_282)

  7. Запускаем команду mvn package в директории с pom.xml, ожидаем успешного окончания

  8. Проверяем директорию ~/.m2/repository/, находим наш артефакт

  9. В ответе присылаем исправленный файл pom.xml

Ответ

Артефакт найден в директории ~/.m2/repository/

vagrant@server2:~/.m2/repository/netology/java/8_282$ ll
total 76
drwxrwxr-x 2 vagrant vagrant  4096 Jul 31 19:40 ./
drwxrwxr-x 3 vagrant vagrant  4096 Jul 31 19:40 ../
-rw-rw-r-- 1 vagrant vagrant 54980 Jul 31 19:40 java-8_282-distrib.tar.gz
-rw-rw-r-- 1 vagrant vagrant    40 Jul 31 19:40 java-8_282-distrib.tar.gz.sha1
-rw-rw-r-- 1 vagrant vagrant   388 Jul 31 19:40 java-8_282.pom.lastUpdated
-rw-rw-r-- 1 vagrant vagrant   175 Jul 31 19:40 _remote.repositories

Файл pom.xml