diff --git a/Devops.CI-CD/1.2.png b/Devops.CI-CD/1.2.png new file mode 100644 index 0000000000..6807fa9a25 Binary files /dev/null and b/Devops.CI-CD/1.2.png differ diff --git a/Devops.CI-CD/1.png b/Devops.CI-CD/1.png new file mode 100644 index 0000000000..c3d7f854d2 Binary files /dev/null and b/Devops.CI-CD/1.png differ diff --git a/Devops.CI-CD/2.1.png b/Devops.CI-CD/2.1.png new file mode 100644 index 0000000000..138778ab15 Binary files /dev/null and b/Devops.CI-CD/2.1.png differ diff --git a/Devops.CI-CD/2.2.png b/Devops.CI-CD/2.2.png new file mode 100644 index 0000000000..de3ee87290 Binary files /dev/null and b/Devops.CI-CD/2.2.png differ diff --git a/Devops.CI-CD/2.3.png b/Devops.CI-CD/2.3.png new file mode 100644 index 0000000000..7a91da48c4 Binary files /dev/null and b/Devops.CI-CD/2.3.png differ diff --git a/Devops.CI-CD/3.1.png b/Devops.CI-CD/3.1.png new file mode 100644 index 0000000000..27a73ca770 Binary files /dev/null and b/Devops.CI-CD/3.1.png differ diff --git a/Devops.CI-CD/3.2.png b/Devops.CI-CD/3.2.png new file mode 100644 index 0000000000..500faceb67 Binary files /dev/null and b/Devops.CI-CD/3.2.png differ diff --git a/Devops.CI-CD/3.3.png b/Devops.CI-CD/3.3.png new file mode 100644 index 0000000000..8084ccb4a4 Binary files /dev/null and b/Devops.CI-CD/3.3.png differ diff --git a/Devops.CI-CD/3.4.png b/Devops.CI-CD/3.4.png new file mode 100644 index 0000000000..857a9f68ff Binary files /dev/null and b/Devops.CI-CD/3.4.png differ diff --git a/Devops.CI-CD/3.5edit.png b/Devops.CI-CD/3.5edit.png new file mode 100644 index 0000000000..fc2a36a892 Binary files /dev/null and b/Devops.CI-CD/3.5edit.png differ diff --git a/Devops.CI-CD/ALL.png b/Devops.CI-CD/ALL.png new file mode 100644 index 0000000000..d517567bf4 Binary files /dev/null and b/Devops.CI-CD/ALL.png differ diff --git a/README.md b/README.md index 64ef33813a..a292a8f697 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,16 @@ -# Домашнее задание к занятию "`Название занятия`" - `Фамилия и имя студента` +# Домашнее задание к занятию "Что такое DevOps. СI/СD" - Падеев Василий` -### Инструкция по выполнению домашнего задания - - 1. Сделайте `fork` данного репозитория к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/git-hw или https://github.com/имя-вашего-репозитория/7-1-ansible-hw). - 2. Выполните клонирование данного репозитория к себе на ПК с помощью команды `git clone`. - 3. Выполните домашнее задание и заполните у себя локально этот файл README.md: - - впишите вверху название занятия и вашу фамилию и имя - - в каждом задании добавьте решение в требуемом виде (текст/код/скриншоты/ссылка) - - для корректного добавления скриншотов воспользуйтесь [инструкцией "Как вставить скриншот в шаблон с решением](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md) - - при оформлении используйте возможности языка разметки md (коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md)) - 4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`); - 5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github. - 6. Любые вопросы по выполнению заданий спрашивайте в чате учебной группы и/или в разделе “Вопросы по заданию” в личном кабинете. - -Желаем успехов в выполнении домашнего задания! - -### Дополнительные материалы, которые могут быть полезны для выполнения задания - -1. [Руководство по оформлению Markdown файлов](https://gist.github.com/Jekins/2bf2d0638163f1294637#Code) - --- ### Задание 1 -`Приведите ответ в свободной форме........` +Что нужно сделать: -1. `Заполните здесь этапы выполнения, если требуется ....` -2. `Заполните здесь этапы выполнения, если требуется ....` -3. `Заполните здесь этапы выполнения, если требуется ....` -4. `Заполните здесь этапы выполнения, если требуется ....` -5. `Заполните здесь этапы выполнения, если требуется ....` -6. +1. Установите себе jenkins по инструкции из лекции или любым другим способом из официальной документации. Использовать Docker в этом задании нежелательно. +2. Установите на машину с jenkins golang. +3. Используя свой аккаунт на GitHub, сделайте себе форк репозитория. В этом же репозитории находится дополнительный материал для выполнения ДЗ. +4. Создайте в jenkins Freestyle Project, подключите получившийся репозиторий к нему и произведите запуск тестов и сборку проекта go test . и docker build .. ``` Поле для вставки кода... @@ -42,59 +21,121 @@ ``` `При необходимости прикрепитe сюда скриншоты -![Название скриншота 1](ссылка на скриншот 1)` +![1](https://github.com/Vasiliy-Ser/sys-pattern-homework-8-02/blob/homework8.2/Devops.CI-CD/1.png) + +![2](https://github.com/Vasiliy-Ser/sys-pattern-homework-8-02/blob/homework8.2/Devops.CI-CD/1.2.png) + --- ### Задание 2 -`Приведите ответ в свободной форме........` +Что нужно сделать: -1. `Заполните здесь этапы выполнения, если требуется ....` -2. `Заполните здесь этапы выполнения, если требуется ....` -3. `Заполните здесь этапы выполнения, если требуется ....` -4. `Заполните здесь этапы выполнения, если требуется ....` -5. `Заполните здесь этапы выполнения, если требуется ....` -6. +1. Создайте новый проект pipeline. +2. Перепишите сборку из задания 1 на declarative в виде кода. -``` Поле для вставки кода... .... .... .... .... -``` -`При необходимости прикрепитe сюда скриншоты -![Название скриншота 2](ссылка на скриншот 2)` + +При необходимости прикрепитe сюда скриншоты + +![3](https://github.com/Vasiliy-Ser/sys-pattern-homework-8-02/blob/homework8.2/Devops.CI-CD/2.1.png) + +![4](https://github.com/Vasiliy-Ser/sys-pattern-homework-8-02/blob/homework8.2/Devops.CI-CD/2.2.png) + +![5](https://github.com/Vasiliy-Ser/sys-pattern-homework-8-02/blob/homework8.2/Devops.CI-CD/2.3.png) --- ### Задание 3 -`Приведите ответ в свободной форме........` +Что нужно сделать: + +1. Установите на машину Nexus. +2. Создайте raw-hosted репозиторий. +3. Измените pipeline так, чтобы вместо Docker-образа собирался бинарный go-файл. Команду можно скопировать из Dockerfile. +4. Загрузите файл в репозиторий с помощью jenkins. + -1. `Заполните здесь этапы выполнения, если требуется ....` -2. `Заполните здесь этапы выполнения, если требуется ....` -3. `Заполните здесь этапы выполнения, если требуется ....` -4. `Заполните здесь этапы выполнения, если требуется ....` -5. `Заполните здесь этапы выполнения, если требуется ....` -6. -``` Поле для вставки кода... -.... -.... -.... -.... + +``` +pipeline { + agent any + environment { + PATH = "/usr/local/go/bin:${env.PATH}" + } + stages { + stage('Git') { + steps { + git 'https://github.com/netology-code/sdvps-materials.git' + } + } + stage('Test') { + steps { + sh 'go test .' + } + } + stage('Build') { + steps { + sh ''' + mkdir -p mkdir -p /var/lib/jenkins/workspace/github + cp -r . /var/lib/jenkins/workspace/github + cd /var/lib/jenkins/workspace/github + CGO_ENABLED=0 GOOS=linux go build -a -installsuffix nocgo -o app + ''' + } + } + stage('Upload to Nexus') { + steps { + script { + def nexusUrl = 'http://localhost:8081/repository/raw/' + def file = 'app' + + def uploadUrl = "${nexusUrl}${file}?e=${file}" + + sh """curl -v -u admin:admin \ + --upload-file /var/lib/jenkins/workspace/github/app \ + ${uploadUrl} + + """ + } + } + } + } +} ``` -`При необходимости прикрепитe сюда скриншоты -![Название скриншота](ссылка на скриншот)` +При необходимости прикрепитe сюда скриншоты + +![6](https://github.com/Vasiliy-Ser/sys-pattern-homework-8-02/blob/homework8.2/Devops.CI-CD/3.1.png) + +![7](https://github.com/Vasiliy-Ser/sys-pattern-homework-8-02/blob/homework8.2/Devops.CI-CD/3.5edit.png) + +![8](https://github.com/Vasiliy-Ser/sys-pattern-homework-8-02/blob/homework8.2/Devops.CI-CD/ALL.png) + + + +Дополнительные задания* (со звёздочкой) +Их выполнение необязательное и не влияет на получение зачёта по домашнему заданию. Можете их решить, если хотите лучше разобраться в материале. + + +### Задание 4* + +Придумайте способ версионировать приложение, чтобы каждый следующий запуск сборки присваивал имени файла новую версию. Таким образом, в репозитории Nexus будет храниться история релизов. + +Подсказка: используйте переменную BUILD_NUMBER. + +В качестве ответа пришлите скриншоты с настройками проекта и результатами выполнения сборки. -### Задание 4 `Приведите ответ в свободной форме........`