Design Continuous Deployment workflow
wip
sequenceDiagram
actor Developper
participant Gitlab
participant Jenkins
participant CI/CD
Note right of CI/CD: for now, Jenkins and ArgoCD
participant PyPi
participant Repository as Debian repository
actor Sysadmin
participant registry as Docker registry
participant Kubernetes
Developper ->> Gitlab: Push a tag
Gitlab ->> Jenkins: Trigger a build
activate Jenkins
Jenkins ->> Jenkins: Run package tests
Jenkins ->> PyPi: Push module
par Debian build
Jenkins ->> Jenkins: Trigger debian build
Jenkins ->> Repository: Push debian package
and Prepare next swh-charts deployment
Jenkins ->> Jenkins: Determine next swh-charts appVersion
Jenkins ->> Gitlab: open "swh-$appVersion" MR if needed
Jenkins ->> Jenkins: Search impacted images to rebuild
par docker image builds
Jenkins ->> Jenkins: docker image build
Jenkins ->> registry: Push docker image to gitlab registry
end
Jenkins ->> Gitlab: update docker image versions in the "swh-$appVersion" branch
Jenkins ->> Gitlab: update MR in gitlab
alt MVP
Sysadmin ->> Sysadmin: Test branch manually
else further automation
CI/CD ->> Kubernetes: Create "swh-$appVersion" environment from "swh-$appVersion" branch
CI/CD ->> Jenkins: Trigger integration tests on "swh-$appVersion" environment
end
end
deactivate Jenkins
activate CI/CD
Syadmin ->> Gitlab: merge "swh-$appVersion" in staging
CI/CD ->> Kubernetes: deploy
activate Developper
Sysadmin ->> Developper: Notify
alt OK
Developper ->> Sysadmin: Notify OK
Syadmin ->> Gitlab: merge "swh-$appVersion" in production
CI/CD -x Kubernetes: deploy to production
else KO
Developper ->> Sysadmin: Notify KO
Syadmin ->> Gitlab: revert commit
CI/CD ->> Kubernetes: deploy previous staging version
end
deactivate Developper
deactivate CI/CD
Source: https://hedgedoc.softwareheritage.org/0eHkEXtzS6KHp6-VWB_6Kg