mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 23:32:37 +03:00
9.4 KiB
9.4 KiB
Выполнение домашнего задания по теме "9.3. CI\CD".
Q/A
Задание 1
Подготовка к выполнению
- Создаём 2 VM в yandex cloud со следующими параметрами: 2CPU 4RAM Centos7(остальное по минимальным требованиям)
- Прописываем в inventory playbook'a созданные хосты
- Добавляем в files файл со своим публичным ключом (id_rsa.pub). Если ключ называется иначе - найдите таску в плейбуке, которая использует id_rsa.pub имя и исправьте на своё
- Запускаем playbook, ожидаем успешного завершения
ansible-playbook -i inventory/hosts.yml site.yml
<...>
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
- Проверяем готовность Sonarqube через браузер
- Заходим под admin\admin, меняем пароль на свой
- Проверяем готовность Nexus через бразуер
- Подключаемся под admin\admin123, меняем пароль, сохраняем анонимный доступ
Задание 2
Знакомство с SonarQube
- Создаём новый проект, название произвольное
- Скачиваем пакет sonar-scanner, который нам предлагает скачать сам sonarqube
Для скачивания пакета актуальной версии на текущий момент:
curl https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip -o sonar-scanner-cli-4.7.0.2747-linux.zip
Затем нужно распаковать архив в любую директорию:
unzip sonar-scanner-cli-4.7.0.2747-linux.zip -d ~/.local/share/
Внутри распакованной директории будет находиться директория bin, которую и нужно добавить в $PATH.
- Делаем так, чтобы binary был доступен через вызов в shell (или меняем переменную PATH или любой другой удобный вам способ)
- Проверяем
sonar-scanner --version
sonar-scanner --version
INFO: Scanner configuration file: ~/.local/share/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarScanner 4.7.0.2747
INFO: Java 11.0.14.1 Eclipse Adoptium (64-bit)
INFO: Linux 5.10.102.1-microsoft-standard-WSL2 amd64
- Запускаем анализатор против кода из директории example с дополнительным ключом
-Dsonar.coverage.exclusions=fail.py
sonar-scanner \
-Dsonar.projectKey=sao \
-Dsonar.sources=. \
-Dsonar.host.url=http://<sonar-01>:9000 \
-Dsonar.login=<token> \
-Dsonar.coverage.exclusions=fail.py
<...>
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 34.848s
INFO: Final Memory: 8M/37M
INFO: ------------------------------------------------------------------------
- Смотрим результат в интерфейсе
- Исправляем ошибки, которые он выявил(включая warnings)
Исправляем функцию, чтобы она выглядела следующим образом:
def increment(index):
newIndex = index+1
return newIndex
И убираем из функции print_numb конструкцию pass.
- Запускаем анализатор повторно - проверяем, что QG пройдены успешно
- Делаем скриншот успешного прохождения анализа, прикладываем к решению ДЗ
Задание 3
Знакомство с Nexus
- В репозиторий
maven-releasesзагружаем артефакт с GAV параметрами:
- groupId: netology
- artifactId: java
- version: 8_282
- classifier: distrib
- type: tar.gz
- В него же загружаем такой же артефакт, но с version: 8_102
- Проверяем, что все файлы загрузились успешно
- В ответе присылаем файл
maven-metadata.xmlдля этого артефекта
<metadata modelVersion="1.1.0">
<groupId>netology</groupId>
<artifactId>java</artifactId>
<versioning>
<latest>8_282</latest>
<release>8_282</release>
<versions>
<version>8_102</version>
<version>8_282</version>
</versions>
<lastUpdated>20220824033600</lastUpdated>
</versioning>
</metadata>
Задание 4
Знакомство с Maven
Подготовка к выполнению
- Скачиваем дистрибутив с maven
- Разархивируем, делаем так, чтобы binary был доступен через вызов в shell (или меняем переменную PATH или любой другой удобный вам способ)
Делать нужно по аналогии с sonar-scanner из Задания 2
- Удаляем из
apache-maven-<version>/conf/settings.xmlупоминание о правиле, отвергающем http соединение( разделmirrors->id:my-repository-http-blocker)- Проверяем
mvn --version
mvn --version
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: ~/downloads/apache-maven-3.8.6
Java version: 11.0.16, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "5.10.102.1-microsoft-standard-wsl2", arch: "amd64", family: "unix"
- Забираем директорию mvn с pom
Основная часть
- Меняем в
pom.xmlблок с зависимостями под наш артефакт из первого пункта задания для Nexus (java с версией 8_282)- Запускаем команду
mvn packageв директории сpom.xml, ожидаем успешного окончания
mvn package
[INFO] Building jar: ./mvn/target/simple-app-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 29.857 s
[INFO] Finished at: 2022-08-24T10:51:41+07:00
[INFO] ------------------------------------------------------------------------
- Проверяем директорию
~/.m2/repository/, находим наш артефакт
ls -la ~/.m2/repository/netology/java/8_282
total 24
drwxr-xr-x 2 dannc dannc 4096 Aug 24 10:51 .
drwxr-xr-x 3 dannc dannc 4096 Aug 24 10:51 ..
-rw-r--r-- 1 dannc dannc 176 Aug 24 10:51 _remote.repositories
-rw-r--r-- 1 dannc dannc 258 Aug 24 10:51 java-8_282-distrib.tar.gz
-rw-r--r-- 1 dannc dannc 40 Aug 24 10:51 java-8_282-distrib.tar.gz.sha1
-rw-r--r-- 1 dannc dannc 397 Aug 24 10:51 java-8_282.pom.lastUpdated
- В ответе присылаем исправленный файл
pom.xml
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>4.0.0</modelVersion>
<groupId>com.netology.app</groupId>
<artifactId>simple-app</artifactId>
<version>1.0-SNAPSHOT</version>
<repositories>
<repository>
<id>my-repo</id>
<name>maven-releases</name>
<url>http://nexus-01:8081/repository/maven-releases/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>netology</groupId>
<artifactId>java</artifactId>
<version>8_282</version>
<classifier>distrib</classifier>
<type>tar.gz</type>
</dependency>
</dependencies>
</project>





