Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -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
Binary file added submissions/image-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-13.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-14.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-15.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-17.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-20.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-21.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-22.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image-6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added submissions/image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
166 changes: 166 additions & 0 deletions submissions/lab1.md
Original file line number Diff line number Diff line change
@@ -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)

<p style="text-align: center;">Рисунок 1. Проверка создания ключа</p>

SSH ключ нужен для:
1. Аутентификации на GitHub (чтобы клонировать и пушить код);
2. Подписи коммитов.

### 4. Добавление Authentication Key в GitHub

Выполняется в настройках профиля GitHub. Обратить вниимание на тип ключа.

### 5. Проверка SSH подключения `ssh -T git@github.com`

![Проверка SSH подключения](image-1.png)

<p style="text-align: center;">Рисунок 2. Проверка SSH подключения</p>

### 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)
<p style="text-align: center;">Рисунок 3. Проверка upstream</p>

### 7. Запуск QuickNotes

Затем запускаем сервер QuickNotes.

```
cd app
go run .
```
В другом терминале проверяем работоспособность.

![alt text](image-3.png)

![alt text](image-4.png)

<p style="text-align: center;">Рисунок 4. Проверка работы сервера</p>

### 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)

<p style="text-align: center;">Рисунок 5. Подписанный коммит</p>

### 11. Отправка в GitHub `git push -u origin feature/lab1`

На GitHub появляется пометка проверенного комита:

![alt text](image-6.png)
<p style="text-align: center;">Рисунок 6. Проверенный коммит на GitHub</p>

## Почему подписанные коммиты важны

> Подпись SSH указывает на то, что коммит был сделан настоящим владельцем ключа, а не человеком, выдающим себя за него.
> Без подписи можно указать в данных репозитория чужое имя и e-mail, тем самым скрывая свою личность. Это опасно, так как злоумышленники могут внедрять свой вредоностный код под видом легитимного разработчика.
> Реальный пример (из первой лекции) - backdoor в xz-utils, когда злоумышленник годами внедрялся в проект. Если бы коммиты были подписаны, было бы проще обнаружить посторонние действия.

## Task 2. Создание Pull Request

Новый PR заполняется в соответствии с шаблоном.

![alt text](image.png)

<p style="text-align: center;">Рисунок 7. Заполнение шаблона</p>

![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)
<p style="text-align: center;">Рисунок 8. Дополнительная защита</p>


Попытка отправить неподписанный коммит завершается ошибкой:

![alt text](image-20.png)
<p style="text-align: center;">Рисунок 9. Ошибка отправки без подписи</p>


> Вопрос: *Как бы выглядел день развертывания в Knight Capital с защитой ветки и обязательной подписью в рабочей ветке?*

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