From 436fe29d103445300a1bad328136de131172e5a2 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:40 +0100
Subject: [PATCH] CI/CD => Automatic push of the CHANGELOG.md to the
 documentation website repo

---
 .gitlab-ci.yml | 64 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 60 insertions(+), 4 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d8ad279..80d804e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,6 +15,21 @@ variables:
 
     WIKI_FOLDER: Wiki
 
+    DOC_CHANGELOG_FILE: ZolaApp/content/changelog/projects/103_api.md
+    DOC_FILE_BEGIN: |
+        +++
+        title = "Dojo Backend API"
+        slug = "dojo-backend-api"
+        weight = 103
+        template = "docs/page.html"
+        
+        [extra]
+        lead = "Changelog of The Dojo Backend API."
+        toc = true
+        top = false
+        +++
+        
+
 
 .get_version:
     script:
@@ -111,7 +126,7 @@ clean:packages:
         - if: '$CI_COMMIT_REF_PROTECTED == "true"'
 
 
-clean:dev:release:
+clean:release:dev:
     stage: clean
     tags:
         - gitlab_clean
@@ -124,7 +139,7 @@ clean:dev:release:
         - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
 
 
-clean:dev:packages:
+clean:packages:dev:
     stage: clean
     tags:
         - gitlab_clean
@@ -137,7 +152,7 @@ clean:dev:packages:
         - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
 
 
-upload:packages:wiki:
+upload:packages:doc:wiki:
     stage: upload
     tags:
         - gitlab_package
@@ -160,7 +175,7 @@ upload:packages:wiki:
         - if: '$CI_COMMIT_REF_PROTECTED == "true"'
 
 
-release:wiki:
+release:doc:wiki:
     stage: release
     tags:
         - release
@@ -208,6 +223,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