Last active
December 30, 2016 14:02
-
-
Save diafour/1a83095cc2d0bb266adc0f7f554f5d5c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@startuml | |
'PHP-разработчик | |
'Actor Developer | |
'Тимлид PHP-разработчиков | |
Actor TeamLead | |
'Devops из команды Flant | |
Actor Devops | |
'Релиз-инженер из команды Нотамедия | |
Actor ReleaseIngenier | |
'Приложение, например mos-back/search-app, его исходники в репозитории в GitLab | |
Participant GitLab.chef_repo | |
'Приложение, например mos-back/search-app, его исходники в репозитории в GitLab | |
Participant GitLab.some_php_app | |
'gitlab-ci воркер | |
Participant GitLabCI.worker | |
'ci-deploy | |
Participant BuildServer1.ci_deploy | |
'dapp или сборщик | |
Participant BuildServer1.dapp | |
'dapp или сборщик | |
Participant BuildServer1.deployit | |
'утилита mostainer | |
Participant Node.mostainer | |
'dapp или сборщик | |
Participant Node.docker | |
Participant Node.chef_client | |
'chef server | |
Participant Infra.chef_server | |
Participant Infra.registry | |
Participant Infra.team_api | |
== Выкладывание chef-repo, запуск chef-client на нодах == | |
Devops -> GitLab.chef_repo: Ставит релизный тэг | |
GitLab.chef_repo -> GitLabCI.worker: Запуск джоба, описанного в gitlab-ci.yml (deploy to *) | |
activate GitLabCI.worker | |
GitLabCI.worker -> Infra.chef_server: Загрузка обновлённых кукбуков на chef сервер | |
GitLabCI.worker -> Node.chef_client: Запуск chef-client на ноде | |
activate Node.chef_client | |
Node.chef_client <- Infra.chef_server: Получение новых версий кукбуков от chef сервера | |
Node.chef_client <- Infra.chef_server: Получение атрибутов мостейнеров | |
Node.chef_client -> Node.chef_client: генерация файловой структуры /mostainers | |
Node.chef_client -> Node.chef_client: генерация mostainer.yml | |
Node.chef_client -> Node.chef_client: генерация версий main.json | |
GitLabCI.worker <- Node.chef_client: Логи работы chef-client | |
deactivate Node.chef_client | |
GitLab.chef_repo <- GitLabCI.worker: Логи выкладывания | |
deactivate GitLabCI.worker | |
Devops <- GitLab.chef_repo: Логи выкладывания | |
== Сборка приложения == | |
'Developer -> GitLab.some_php_app: Пуш изменений в репозиторий | |
TeamLead -> GitLab.some_php_app: Ставит релизный тэг | |
GitLab.some_php_app -> GitLabCI.worker: Запуск джоба, описанного в gitlab-ci.yml (build) | |
activate GitLabCI.worker | |
GitLabCI.worker -> BuildServer1.ci_deploy: Запуск ci_deploy | |
activate BuildServer1.ci_deploy | |
BuildServer1.ci_deploy -> BuildServer1.dapp: Запуск сборки образа | |
activate BuildServer1.dapp | |
BuildServer1.ci_deploy <- BuildServer1.dapp: Сборка успешна | |
deactivate BuildServer1.dapp | |
BuildServer1.ci_deploy -> BuildServer1.dapp: Загрузка готовых образов в registry | |
activate BuildServer1.dapp | |
BuildServer1.dapp -> Infra.registry: Образы | |
activate Infra.registry | |
BuildServer1.dapp <- Infra.registry: Образы выложены | |
deactivate Infra.registry | |
BuildServer1.ci_deploy <- BuildServer1.dapp: Образы выложены | |
deactivate BuildServer1.dapp | |
GitLabCI.worker <- BuildServer1.ci_deploy: ci_deploy отработал | |
deactivate BuildServer1.ci_deploy | |
GitLab.some_php_app <- GitLabCI.worker: Логи сборки | |
deactivate GitLabCI.worker | |
TeamLead <- GitLab.some_php_app: Логи сборки | |
== Выкладывание приложения == | |
ReleaseIngenier -> GitLab.some_php_app: После успешной сборки запускает джоб деплоя | |
GitLab.some_php_app -> GitLabCI.worker: Запуск джоба деплоя, описанного в gitlab-ci.yml (to *) | |
activate GitLabCI.worker | |
GitLabCI.worker -> BuildServer1.ci_deploy: Запуск ci_deploy | |
activate BuildServer1.ci_deploy | |
BuildServer1.ci_deploy -> BuildServer1.ci_deploy: проверка нужных файлов-флагов от джоба сборки и джобов деплоя | |
BuildServer1.ci_deploy <-> Infra.team_api: проверка прав на деплой | |
'activate Infra.team_api | |
'BuildServer1.ci_deploy <- Infra.team_api: ответ от team api | |
'deactivate Infra.team_api | |
BuildServer1.ci_deploy -> BuildServer1.deployit: Запуск деплоя на ноду утилитой deployit | |
activate BuildServer1.deployit | |
BuildServer1.deployit <-> Infra.chef_server: Поиск ip адреса в ohai-атрибутах ноды по её имени | |
BuildServer1.deployit -> Node.mostainer: Запуск утилиты mostainer на ноде через ssh | |
activate Node.mostainer | |
Node.mostainer <-> Infra.registry: Скачивание образа some_php_app из registry в локальное хранилище на ноде | |
Node.mostainer -> Node.mostainer: Загрузка конфига из mostainer.yml | |
Node.mostainer -> Node.mostainer: Копирование нужной версии main.json | |
Node.mostainer -> Node.docker: Запуск мостейнера (запуск docker-контейнера из образа some_php_app с параметрами из mostainer.yml и копирование main.json) | |
activate Node.docker | |
Node.docker -> Node.docker: запуск chef-solo: применение кукбуков init-фазы с атрибутами из main.json | |
Node.docker -> Node.docker: запуск процессов приложения | |
Node.mostainer <- Node.docker: Лог запуска мостейнера (вывод chef-solo) | |
deactivate Node.docker | |
BuildServer1.deployit <- Node.mostainer: Лог запуска мостейнера | |
deactivate Node.mostainer | |
BuildServer1.ci_deploy <- BuildServer1.deployit: Лог запуска мостейнера | |
deactivate BuildServer1.deployit | |
BuildServer1.ci_deploy -> BuildServer1.ci_deploy: Хук: сброс кэша nginx | |
BuildServer1.ci_deploy -> BuildServer1.ci_deploy: Хук: генерация меню | |
GitLabCI.worker <- BuildServer1.ci_deploy: ci_deploy отработал | |
deactivate BuildServer1.ci_deploy | |
GitLab.some_php_app <- GitLabCI.worker: Логи деплоя | |
deactivate GitLabCI.worker | |
ReleaseIngenier <- GitLab.some_php_app: Логи деплоя | |
@enduml |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment