diff --git a/readme.md b/readme.md
index 16f14fb..3864695 100644
--- a/readme.md
+++ b/readme.md
@@ -42,3 +42,4 @@
* [8.4. Работа с Roles](/src/homework/08-ansible/8.4)
* [8.5. Тестирование Roles](/src/homework/08-ansible/8.5)
* [8.6. Создание собственных modules](/src/homework/08-ansible/8.6)
+* [9.1. Жизненный цикл ПО](/src/homework/09-ci/9.1)
diff --git a/src/homework/09-ci/9.1/img/jira-all-boards.png b/src/homework/09-ci/9.1/img/jira-all-boards.png
new file mode 100644
index 0000000..59b620f
Binary files /dev/null and b/src/homework/09-ci/9.1/img/jira-all-boards.png differ
diff --git a/src/homework/09-ci/9.1/img/jira-bug-workflow.png b/src/homework/09-ci/9.1/img/jira-bug-workflow.png
new file mode 100644
index 0000000..c62a7a6
Binary files /dev/null and b/src/homework/09-ci/9.1/img/jira-bug-workflow.png differ
diff --git a/src/homework/09-ci/9.1/img/jira-closed-sprint.png b/src/homework/09-ci/9.1/img/jira-closed-sprint.png
new file mode 100644
index 0000000..7f003b4
Binary files /dev/null and b/src/homework/09-ci/9.1/img/jira-closed-sprint.png differ
diff --git a/src/homework/09-ci/9.1/img/jira-kanban.png b/src/homework/09-ci/9.1/img/jira-kanban.png
new file mode 100644
index 0000000..93c01e8
Binary files /dev/null and b/src/homework/09-ci/9.1/img/jira-kanban.png differ
diff --git a/src/homework/09-ci/9.1/img/jira-task-workflow.png b/src/homework/09-ci/9.1/img/jira-task-workflow.png
new file mode 100644
index 0000000..aa51bf0
Binary files /dev/null and b/src/homework/09-ci/9.1/img/jira-task-workflow.png differ
diff --git a/src/homework/09-ci/9.1/readme.md b/src/homework/09-ci/9.1/readme.md
new file mode 100644
index 0000000..da91ebf
--- /dev/null
+++ b/src/homework/09-ci/9.1/readme.md
@@ -0,0 +1,59 @@
+Выполнение [домашнего задания](https://github.com/netology-code/mnt-homeworks/blob/MNT-13/09-ci-01-intro/README.md)
+по теме "9.1. Жизненный цикл ПО".
+
+## Q/A
+
+### Задание 1
+
+> Подготовка к выполнению
+> 1. Получить бесплатную JIRA
+> 2. Настроить её для своей "команды разработки"
+> 3. Создать доски kanban и scrum
+
+По умолчанию проект создаётся с kanban-доской.
+
+
+
+Поэтому достаточно создать дополнительную доску для scrum.
+
+
+
+### Задание 2
+
+> Основная часть
+>
+> В рамках основной части необходимо создать собственные workflow для двух типов задач: bug и остальные типы задач.
+> Задачи типа bug должны проходить следующий жизненный цикл:
+> 1. Open -> On reproduce
+> 2. On reproduce -> Open, Done reproduce
+> 3. Done reproduce -> On fix
+> 4. On fix -> On reproduce, Done fix
+> 5. Done fix -> On test
+> 6. On test -> On fix, Done
+> 7. Done -> Closed, Open
+>
+> Остальные задачи должны проходить по упрощённому workflow:
+> 1. Open -> On develop
+> 2. On develop -> Open, Done develop
+> 3. Done develop -> On test
+> 4. On test -> On develop, Done
+> 5. Done -> Closed, Open
+>
+> Создать задачу с типом bug, попытаться провести его по всему workflow до Done.
+> Создать задачу с типом epic, к ней привязать несколько задач с типом task, провести их по всему workflow до Done.
+> При проведении обеих задач по статусам использовать kanban. Вернуть задачи в статус Open.
+> Перейти в scrum, запланировать новый спринт, состоящий из задач эпика и одного бага, стартовать спринт, провести задачи до состояния Closed. Закрыть спринт.
+>
+> Если всё отработало в рамках ожидания - выгрузить схемы workflow для импорта в XML. Файлы с workflow приложить к решению задания.
+
+Workflow для задач типа bug описан в [bug.xml](./workflows/bug.xml).
+
+
+
+Для всех остальных типов workflow описан в [common.xml](./workflows/common.xml).
+
+
+
+Информация о закрытом спринте:
+
+
diff --git a/src/homework/09-ci/9.1/workflows/bug.xml b/src/homework/09-ci/9.1/workflows/bug.xml
new file mode 100644
index 0000000..ca2057e
--- /dev/null
+++ b/src/homework/09-ci/9.1/workflows/bug.xml
@@ -0,0 +1,360 @@
+
+
+
+
+ 62fda3e5eec8d4a478d4add4
+ 62fda3e5eec8d4a478d4add4
+ 1660791313915
+
+
+
+
+ com.atlassian.jira.workflow.validator.PermissionValidator
+ Create Issue
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.IssueCreateFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+ 10003
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+ 10004
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+ 10005
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+ 10006
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+ 10007
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+ 10002
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+ 6
+
+
+
diff --git a/src/homework/09-ci/9.1/workflows/common.xml b/src/homework/09-ci/9.1/workflows/common.xml
new file mode 100644
index 0000000..c2ecd94
--- /dev/null
+++ b/src/homework/09-ci/9.1/workflows/common.xml
@@ -0,0 +1,246 @@
+
+
+
+
+ 62fda3e5eec8d4a478d4add4
+ 62fda3e5eec8d4a478d4add4
+ 1660791806013
+
+
+
+
+ com.atlassian.jira.workflow.validator.PermissionValidator
+ Create Issue
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.IssueCreateFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+ 10008
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+ 10009
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+ 10007
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+ 10002
+
+
+
+
+
+
+
+
+ com.atlassian.jira.workflow.function.issue.UpdateIssueStatusFunction
+
+
+ com.atlassian.jira.workflow.function.misc.CreateCommentFunction
+
+
+ com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction
+
+
+ com.atlassian.jira.workflow.function.issue.IssueReindexFunction
+
+
+ com.atlassian.jira.workflow.function.event.FireIssueEventFunction
+ 13
+
+
+
+
+
+
+
+
+ 6
+
+
+