@startuml participant gerrit as "Gerrit\n(git server)" participant controller as "Controller" participant vcsworker as "VCS\nworker" participant gitlab as "GitLab" participant runner as "Gitlab\nRunner" participant artifacts as "Artifact\nstore" participant deployer as "Deployment\nworker" participant env as "Test\nenvironment" gerrit -> controller : notify of change activate controller controller -> vcsworker : copy repo to gitlab activate vcsworker vcsworker -> gerrit : git clone gerrit -> vcsworker vcsworker -> gitlab : git push activate gitlab vcsworker -> controller deactivate vcsworker gitlab -> runner : build .gitlab-ci.yml activate runner runner -> artifacts : upload artifacts runner -> gitlab : build finished deactivate runner gitlab -> controller : webhook: build finished deactivate gitlab controller -> deployer : deploy artifacts activate deployer deployer -> artifacts : request artifacts artifacts -> deployer deployer -> env : copy artifacts to test env deployer -> controller : deployment done deactivate deployer controller -> gerrit : notify build result deactivate controller @enduml