From 535dbb0d9761c4bd35402aaa716e082f45e629c5 Mon Sep 17 00:00:00 2001
From: Kwangjin Lee <k.lee-5@student.tudelft.nl>
Date: Fri, 30 Aug 2024 17:55:26 +0200
Subject: [PATCH] Update .gitlab-ci.yml file

---
 .gitlab-ci.yml | 71 ++++++++++++++++++++++++++++++++++----------------
 1 file changed, 49 insertions(+), 22 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index babe285f..90e28d9d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -42,22 +42,58 @@ build-book:
     - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "publish"
       when: always
 
+image: python:3.10-bullseye
+
+stages:
+  - build
+  - deploy
+
+variables:
+  PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
+
+cache:
+  paths:
+    - .cache/pip
+    - venv/
+
+before_script:
+  - python -V
+  - pip install virtualenv
+  - virtualenv venv
+  - source venv/bin/activate
+  - pip install -r requirements.txt
+
+build-book:
+  stage: build
+  script:
+    - |
+      if [ "$CI_COMMIT_BRANCH" == "publish" ]; then
+        echo "Building production version"
+        teachbooks build --publish book/ > >(tee stdout.log) 2> >(tee stderr.log >&2)
+      else
+        echo "Building draft version"
+        teachbooks build book/ > >(tee stdout.log) 2> >(tee stderr.log >&2)
+      fi
+    - echo $CI_JOB_ID > build_job_id.txt
+  artifacts:
+    paths:
+      - book/_build/html
+      - stdout.log
+      - stderr.log
+      - build_job_id.txt
+    expire_in: 1 week
+  rules:
+    - if: $CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "publish"
+    - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "publish"
+      when: always
+
 deploy-draft:
   stage: deploy
   needs: ["build-book"]
   script:
+    - BUILD_JOB_ID=$(cat build_job_id.txt)
+    - echo "Build Job ID: $BUILD_JOB_ID"
     - |
-      echo "Fetching job information..."
-      API_RESPONSE=$(curl -s -H "PRIVATE-TOKEN: $CI_JOB_TOKEN" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/pipelines/${CI_PIPELINE_ID}/jobs?scope[]=success")
-      echo "API Response:"
-      echo "$API_RESPONSE"
-      echo "Parsing build job ID..."
-      BUILD_JOB_ID=$(echo "$API_RESPONSE" | jq -r '.[] | select(.name=="build-book") | .id')
-      if [ -z "$BUILD_JOB_ID" ]; then
-        echo "Failed to find build-book job ID. Using current job ID as fallback."
-        BUILD_JOB_ID=$CI_JOB_ID
-      fi
-      echo "Build Job ID: $BUILD_JOB_ID"
       curl -X POST https://mude.citg.tudelft.nl/hooks/book-deploy-draft \
         -H "Content-Type: application/json" \
         -H "X-Gitlab-Token: glpat-m4CzsDqHnXNn3Pf5Whyd" \
@@ -79,18 +115,9 @@ deploy-production:
   stage: deploy
   needs: ["build-book"]
   script:
+    - BUILD_JOB_ID=$(cat build_job_id.txt)
+    - echo "Build Job ID: $BUILD_JOB_ID"
     - |
-      echo "Fetching job information..."
-      API_RESPONSE=$(curl -s -H "PRIVATE-TOKEN: $CI_JOB_TOKEN" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/pipelines/${CI_PIPELINE_ID}/jobs?scope[]=success")
-      echo "API Response:"
-      echo "$API_RESPONSE"
-      echo "Parsing build job ID..."
-      BUILD_JOB_ID=$(echo "$API_RESPONSE" | jq -r '.[] | select(.name=="build-book") | .id')
-      if [ -z "$BUILD_JOB_ID" ]; then
-        echo "Failed to find build-book job ID. Using current job ID as fallback."
-        BUILD_JOB_ID=$CI_JOB_ID
-      fi
-      echo "Build Job ID: $BUILD_JOB_ID"
       curl -X POST https://mude.citg.tudelft.nl/hooks/book-deploy-production \
         -H "Content-Type: application/json" \
         -H "X-Gitlab-Token: glpat-m4CzsDqHnXNn3Pf5Whyd" \
-- 
GitLab