From 875424b919aa5efbd5746bc953c54dbbb8be16a4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me>
Date: Tue, 27 Feb 2024 14:14:57 +0100
Subject: [PATCH] CI/CD => Automatic push of the CHANGELOG.md to the
 documentation website repo

---
 ExerciseChecker/.gitlab-ci/00_vars.yml        | 16 ++++++-
 ExerciseChecker/.gitlab-ci/07_stageClean.yml  |  6 +--
 ExerciseChecker/.gitlab-ci/08_stageUpload.yml |  2 +-
 .../.gitlab-ci/09_stageRelease.yml            | 43 ++++++++++++++++++-
 4 files changed, 61 insertions(+), 6 deletions(-)

diff --git a/ExerciseChecker/.gitlab-ci/00_vars.yml b/ExerciseChecker/.gitlab-ci/00_vars.yml
index 1fcea07..a1b6112 100644
--- a/ExerciseChecker/.gitlab-ci/00_vars.yml
+++ b/ExerciseChecker/.gitlab-ci/00_vars.yml
@@ -24,4 +24,18 @@ variables:
 
     PACKAGE_REGISTRY_URL: "${GITLAB_API_PROJECT_URL}/packages/generic/${PROJECT_NAME}"
 
-    WIKI_FOLDER: Wiki
\ No newline at end of file
+    WIKI_FOLDER: Wiki
+
+    DOC_CHANGELOG_FILE: ZolaApp/content/changelog/projects/104_exercise-checker.md
+    DOC_FILE_BEGIN: |
+        +++
+        title = "Dojo Exercise Checker"
+        slug = "dojo-exercise-checker"
+        weight = 104
+        template = "docs/page.html"
+        
+        [extra]
+        lead = "Changelog of The Dojo Exercise Checker."
+        toc = true
+        top = false
+        +++
diff --git a/ExerciseChecker/.gitlab-ci/07_stageClean.yml b/ExerciseChecker/.gitlab-ci/07_stageClean.yml
index f8b6dba..5d3fcba 100644
--- a/ExerciseChecker/.gitlab-ci/07_stageClean.yml
+++ b/ExerciseChecker/.gitlab-ci/07_stageClean.yml
@@ -22,7 +22,7 @@ clean:packages:
         -   if: '$CI_COMMIT_REF_PROTECTED == "true"'
 
 
-clean:dev:release:
+clean:release:dev:
     stage: clean
     tags:
         - gitlab_clean
@@ -35,7 +35,7 @@ clean:dev:release:
         -   if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
 
 
-clean:dev:packages:
+clean:packages:dev:
     stage: clean
     tags:
         - gitlab_clean
@@ -48,7 +48,7 @@ clean:dev:packages:
         -   if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
 
 
-clean:dev:dockerhub:
+clean:dockerhub:dev:
     stage: clean
     tags:
         - clean
diff --git a/ExerciseChecker/.gitlab-ci/08_stageUpload.yml b/ExerciseChecker/.gitlab-ci/08_stageUpload.yml
index 4c9bd45..f5eab6c 100644
--- a/ExerciseChecker/.gitlab-ci/08_stageUpload.yml
+++ b/ExerciseChecker/.gitlab-ci/08_stageUpload.yml
@@ -1,4 +1,4 @@
-upload:packages:wiki:
+upload:packages:doc:wiki:
     stage: upload
     tags:
         - gitlab_package
diff --git a/ExerciseChecker/.gitlab-ci/09_stageRelease.yml b/ExerciseChecker/.gitlab-ci/09_stageRelease.yml
index ad039e9..f025d16 100644
--- a/ExerciseChecker/.gitlab-ci/09_stageRelease.yml
+++ b/ExerciseChecker/.gitlab-ci/09_stageRelease.yml
@@ -15,7 +15,7 @@ release:dockerhub:latest:
         -   if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH == "test"'
 
 
-release:wiki:
+release:doc:wiki:
     stage: release
     tags:
         - release
@@ -63,6 +63,47 @@ release:wiki:
         -   if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
 
 
+release:doc:changelog:
+    stage: release
+    tags:
+        - release
+    image: ubuntu:latest
+    script:
+        # Install dependencies
+        - apt-get update -y
+        - apt-get install -y openssh-client git unzip sshpass --fix-missing
+
+        # Add SSH key
+        - eval `ssh-agent -s`
+        - echo "$DOC_GIT_SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
+
+        - mkdir -p ~/.ssh
+        - chmod 700 ~/.ssh
+
+        - echo "$DOC_GIT_SSH_PUBLIC_KEY" >> ~/.ssh/id_rsa.pub
+        - echo "$DOC_GIT_SSH_PRIVATE_KEY" >> ~/.ssh/id_rsa
+
+        - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
+
+        # Set git config
+        - git config --global user.email "dojo@minelli.me"
+        - git config --global user.name "[Gitlab CI/CD] ${PROJECT_NAME}"
+
+        # Pull repo
+        - git clone ssh://git@ssh.hesge.ch:10572/dojo_project/projects/ui/dojodoc.git
+
+        # Do something after pulling your repo
+        - echo "${DOC_FILE_BEGIN}$(cat CHANGELOG.md)" > dojodoc/${DOC_CHANGELOG_FILE}
+
+        # Push repo changes into current repo
+        - cd dojodoc
+        - git add ${DOC_CHANGELOG_FILE}
+        - git commit -m "[Gitlab CI/CD] ${PROJECT_NAME} => Automatic update of changelog" || echo "No changes, nothing to commit!"
+        - git push
+    rules:
+        -   if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+
+
 release:gitlab:
     stage: release
     tags:
-- 
GitLab