diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000..5da482d49 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,16 @@ +## Goal +Выполнение Lab 1: настройка SSH подписи коммитов, PR template, GitHub Community + +## Changes +- Добавлен submissions/lab1.md +- Добавлены скриншоты +- Настроена SSH подпись + +## Testing +- QuickNotes запущен, API работает +- git log --show-signature показывает Good signature + +## Checklist +- [x] Title is a clear sentence +- [x] Commits are signed +- [x] submissions/lab1.md updated \ No newline at end of file diff --git a/submissions/image-1.png b/submissions/image-1.png new file mode 100644 index 000000000..c83d4b1da Binary files /dev/null and b/submissions/image-1.png differ diff --git a/submissions/image-13.png b/submissions/image-13.png new file mode 100644 index 000000000..539d0c764 Binary files /dev/null and b/submissions/image-13.png differ diff --git a/submissions/image-14.png b/submissions/image-14.png new file mode 100644 index 000000000..ac33f181d Binary files /dev/null and b/submissions/image-14.png differ diff --git a/submissions/image-15.png b/submissions/image-15.png new file mode 100644 index 000000000..56a9b0db4 Binary files /dev/null and b/submissions/image-15.png differ diff --git a/submissions/image-16.png b/submissions/image-16.png new file mode 100644 index 000000000..3aae52b13 Binary files /dev/null and b/submissions/image-16.png differ diff --git a/submissions/image-17.png b/submissions/image-17.png new file mode 100644 index 000000000..c7b59fd98 Binary files /dev/null and b/submissions/image-17.png differ diff --git a/submissions/image-2.png b/submissions/image-2.png new file mode 100644 index 000000000..fcf45f813 Binary files /dev/null and b/submissions/image-2.png differ diff --git a/submissions/image-20.png b/submissions/image-20.png new file mode 100644 index 000000000..daa713a0b Binary files /dev/null and b/submissions/image-20.png differ diff --git a/submissions/image-21.png b/submissions/image-21.png new file mode 100644 index 000000000..1083b3eea Binary files /dev/null and b/submissions/image-21.png differ diff --git a/submissions/image-22.png b/submissions/image-22.png new file mode 100644 index 000000000..792c64e0f Binary files /dev/null and b/submissions/image-22.png differ diff --git a/submissions/image-3.png b/submissions/image-3.png new file mode 100644 index 000000000..04653ee58 Binary files /dev/null and b/submissions/image-3.png differ diff --git a/submissions/image-4.png b/submissions/image-4.png new file mode 100644 index 000000000..076015821 Binary files /dev/null and b/submissions/image-4.png differ diff --git a/submissions/image-5.png b/submissions/image-5.png new file mode 100644 index 000000000..d1d53626d Binary files /dev/null and b/submissions/image-5.png differ diff --git a/submissions/image-6.png b/submissions/image-6.png new file mode 100644 index 000000000..d40c7ac87 Binary files /dev/null and b/submissions/image-6.png differ diff --git a/submissions/image.png b/submissions/image.png new file mode 100644 index 000000000..346310df9 Binary files /dev/null and b/submissions/image.png differ diff --git a/submissions/lab1.md b/submissions/lab1.md new file mode 100644 index 000000000..20939ef73 --- /dev/null +++ b/submissions/lab1.md @@ -0,0 +1,166 @@ +# Lab 1 submission + +Фролова Анастасия Ивановна, M25-RO-01 +a.frolova@innopolis.university + +Ссылка на репозиторий: https://github.com/kicchhi/DevOps-Intro +Ссылка на PR: https://github.com/inno-devops-labs/DevOps-Intro/pull/1007 + +## Task 1 - Подписание коммитов + +Домашняя работа была выполнена при помощи GitHub. + +### QuickNotes API outputs: + +- /health: {\ +status\:\ok\} +- /notes: returns 4 notes +- POST /notes: returns created note + +## Порядок выполнения + +### 1. Установка GO; +### 2. Создание SSH ключа `ssh-keygen -t ed25519 -C "email-adress"`; +### 3. Проверка создания ключа `ls ~\.ssh\` + + +![Проверка создания ключа](image.png) + +

Рисунок 1. Проверка создания ключа

+ +SSH ключ нужен для: +1. Аутентификации на GitHub (чтобы клонировать и пушить код); +2. Подписи коммитов. + +### 4. Добавление Authentication Key в GitHub + +Выполняется в настройках профиля GitHub. Обратить вниимание на тип ключа. + +### 5. Проверка SSH подключения `ssh -T git@github.com` + +![Проверка SSH подключения](image-1.png) + +

Рисунок 2. Проверка SSH подключения

+ +### 6. Fork репозитория + +Создаем личную копию чужого репозитория, в которую в последствии можем вносить изменения без влияния на первоначальный репозиторий. + +``` +git clone git@github.com:kicchhi/DevOps-Intro.git +cd DevOps-Intro +``` + +Также добавляем upstream для получения актуальных изменений из оригинального репозитория. + +``` +git remote add upstream git@github.com:inno-devops-labs/DevOps-Intro.git +git fetch --all +``` + +Проверяем upstream командой `git remote -v` + +![alt text](image-2.png) +

Рисунок 3. Проверка upstream

+ +### 7. Запуск QuickNotes + +Затем запускаем сервер QuickNotes. + +``` +cd app +go run . +``` +В другом терминале проверяем работоспособность. + +![alt text](image-3.png) + +![alt text](image-4.png) + +

Рисунок 4. Проверка работы сервера

+ +### 8. Настройка подписи коммитов + +Через консоль прописываем настройки коммитов, делаем так, чтобы !!! + +### 9. Добавление Signing Key в GitHub + +Аналогично первому ключу, добавляем новый ключ в настройках профиля на GitHub. + +### 10. Создание ветки и подписанного коммита + +``` +git add submissions/lab1.md +git commit -S -s -m "add submission" +``` + +Делаем коммит ранее созданного файла, при чем коммит будетт подписан. + +- S - подписать коммит +- s - добавить Signed-off-by строку +- m - сообщение коммита + +Проверяем подпись: `git log --show-signature -1` + +![alt text](image-5.png) + +

Рисунок 5. Подписанный коммит

+ +### 11. Отправка в GitHub `git push -u origin feature/lab1` + +На GitHub появляется пометка проверенного комита: + +![alt text](image-6.png) +

Рисунок 6. Проверенный коммит на GitHub

+ +## Почему подписанные коммиты важны + +> Подпись SSH указывает на то, что коммит был сделан настоящим владельцем ключа, а не человеком, выдающим себя за него. +> Без подписи можно указать в данных репозитория чужое имя и e-mail, тем самым скрывая свою личность. Это опасно, так как злоумышленники могут внедрять свой вредоностный код под видом легитимного разработчика. +> Реальный пример (из первой лекции) - backdoor в xz-utils, когда злоумышленник годами внедрялся в проект. Если бы коммиты были подписаны, было бы проще обнаружить посторонние действия. + +## Task 2. Создание Pull Request + +Новый PR заполняется в соответствии с шаблоном. + +![alt text](image.png) + +

Рисунок 7. Заполнение шаблона

+ +![alt text](image-1.png) + +![alt text](image-2.png) + +Ссылка: https://github.com/kicchhi/DevOps-Intro/pull/1 + + +## Task 3. Работа в сообществе GitHub + +Я не уверена, нужны ли здесь скриншоты, но все же оставлю. + +![alt text](image-13.png) +![alt text](image-17.png) + +### Screenshots + +| | | | +|:-----------------------:|:--------------------:|:-------------------------:| +| ![Verified commit](image-14.png) | ![PR Template](image-15.png) | ![GitHub Community](image-16.png) | + +--- +## Бонусное задание + +![img1](image-21.png) +![alt text](image-22.png) +

Рисунок 8. Дополнительная защита

+ + +Попытка отправить неподписанный коммит завершается ошибкой: + +![alt text](image-20.png) +

Рисунок 9. Ошибка отправки без подписи

+ + +> Вопрос: *Как бы выглядел день развертывания в Knight Capital с защитой ветки и обязательной подписью в рабочей ветке?* + +> Ответ: Дополнительная защита ветки и обязательная подпись в рабочей ветке позволяет минимизировать риски и полностью контролировать вносимые изменения. Мы можем исключить человеческий фактор, например, или несанкционированный доступ, чтобы не совершить ошибки. Несоответствия или нежелательные изменения могут быть отслежены на том этапе, когда еще они не ушли в prodaction. Не совсем поняла постановки вопроса про день развертывания, но так понимаю, это о том, что раз в какое-то время просто все изменения будут проверяться кем-то, и уходить в прод.