diff --git a/README.md b/README.md index 05f70ff..7d68d7f 100644 --- a/README.md +++ b/README.md @@ -70,12 +70,12 @@ classDiagram DevopsBuild <|-- ProvsK3sBuild DevopsBuild <|-- C4kBuild - link DevopsBuild "./doc/DevopsBuild.md" - link DevopsImageBuild "./doc/DevopsImageBuild.md" - link DevopsTerraformBuild "./doc/DevopsTerraformBuild.md" - link ReleaseMixin "./doc/ReleaseMixin.md" - link ProvsK3sBuild "doc/ProvsK3sBuild.md" - link C4kBuild "doc/C4kBuild.md" + link DevopsBuild "src/doc/DevopsBuild.md" + link DevopsImageBuild "src/doc/DevopsImageBuild.md" + link DevopsTerraformBuild "src/doc/DevopsTerraformBuild.md" + link ReleaseMixin ".rc/doc/ReleaseMixin.md" + link ProvsK3sBuild "src/doc/ProvsK3sBuild.md" + link C4kBuild "src/doc/C4kBuild.md" ``` diff --git a/doc/architecture/ReleaseProcessAdr.md b/doc/architecture/ReleaseProcessAdr.md index 3b681b5..108f65c 100644 --- a/doc/architecture/ReleaseProcessAdr.md +++ b/doc/architecture/ReleaseProcessAdr.md @@ -16,35 +16,85 @@ We discussed how we will handle releases in cooperation with gitlab-ci. ### Outcome of Eventstroming: Events ordered by time -1. B: Pulls the latest changes -1. B: Possibly merge/rebase with main -1. -1. B: starts "create release-notes" -1. B: commits his changes with [skip-ci]. -1. -1. B: starts the release build and specifies major, minor, patch -1. -1. S: does a git fetch & status and checks if there are no changes at origin -1. S: starts tests -1. S: runs the linting -1. S: possibly does image building and image testing -1. -1. S: version numbers are adjusted in project.clj/package.json to full version -1. S: change commit is tagged with git tag -1. S: version numbers are adjusted in project.clj/package.json to next snapshot version -1. S: makes a bump commit with [skip-ci]. -1. S: push to gitlab/gitea along with git tags -1. -1. S: CI starts - for a new tag -1. S: CI runs tests -1. S: runs the linting -1. S: makes artifacts -1. S: possibly performs image building and image testing -1. S: publishes images and artifacts -1. -1. S: CI starts - for push with the last commit -1. S: CI runs tests -1. S: performs the linting +* B: is the human devops +* S: is the build / ci system + +```mermaid +stateDiagram-v2 + state prepare_release { + state "B: Pulls the latest changes" as pull + state "B: Possibly merge/rebase with main" as merge + state "B: starts 'create release-notes'" as rn + state "B: commits his changes with [skip-ci]." as c1 + + [*] --> pull + pull --> merge + merge --> rn + rn --> c1 + c1 --> [*] + } + state release { + state "B: starts the release build and specifies major, minor, patch" as trigger + state "S: does a git fetch & status and checks if there are no changes at origin" as fetch + state "S: starts tests" as test + state "S: runs the linting" as lint + state "S: possibly does image building and image testing" as image + state "S: version numbers are adjusted in project.clj/package.json to full version" as vno + state "S: change commit is tagged with git tag" as c2 + state "S: version numbers are adjusted in project.clj/package.json to next snapshot " as snap + state "S: makes a bump commit with [skip-ci]." as c3 + state "S: push to gitlab/gitea along with git tags" as push + + [*] --> trigger + trigger --> fetch + fetch --> lint + fetch --> test + fetch --> image + test --> vno + lint --> vno + image --> vno + vno --> c2 + c2 --> snap + snap --> c3 + c3 --> push + push --> [*] + } + state ci_tag { + state "S: CI starts - for a new tag" as ct1 + state "S: runs the linting" as ct2 + state "S: CI runs tests" as ct3 + state "S: makes artifacts" as ct4 + state "S: possibly performs image building and image testing" as ct5 + state "S: publishes images and artifacts" as ct6 + + + [*] --> ct1 + ct1 --> ct2 + ct2 --> ct3 + ct3 --> ct4 + ct4 --> ct5 + ct5 --> ct6 + ct6 --> [*] + } + state ci_version_bump { + state "S: CI starts - for push with the last commit" as cvb1 + state "S: CI runs tests" as cvb2 + state "S: performs the linting" as cvb3 + + [*] --> cvb1 + cvb1 --> cvb2 + cvb2 --> cvb3 + cvb3 --> [*] + } + + [*] --> prepare_release + prepare_release --> release + release --> ci_tag + release --> ci_version_bump + ci_tag --> [*] + ci_version_bump --> [*] + +``` ## Consequences