cmc/cleberg.net

My personal web garden & blog.

clone: git clone https://gitbay.org/cmc/cleberg.net.git

b509b08d520142d69de1ad0a1b9ec68f771dd9ab

unsigned

author: Christian Cleberg <hello@cleberg.net> · 2026-02-10T19:11:25Z

split build and deploy steps in python script
 .gitlab-ci.yml | 7 +++++--
 build.py       | 7 ++++++-
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 34af04b..0a24814 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -8,16 +8,17 @@ build-job:
   stage: build
   script:
     - echo "Environment is ready. Running build..."
-    - ENV=prod uv run build.py <<< "r"
+    - ENV=prod SKIP_DEPLOY=true uv run build.py <<< "r"
   artifacts:
     paths:
       - .build/
 
 deploy-job:
   stage: deploy
+  dependencies:
+    - build-job
   script:
     - mkdir -p $HOME/.ssh
-    - chmod 700 $HOME/.ssh
     - ssh-keyscan -p 2169 $SERVER_IP >> $HOME/.ssh/known_hosts
     - |
       echo "Host homelab-remote
@@ -25,5 +26,7 @@ deploy-job:
           User $SERVER_USER
           Port 2169" > $HOME/.ssh/config
     - chmod 600 $HOME/.ssh/config
+    - eval $(ssh-agent -s)
+    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
     - echo "Deploying via Python script..."
     - ENV=prod uv run build.py <<< "r"
diff --git a/build.py b/build.py
index 3e9affd..7b19123 100644
--- a/build.py
+++ b/build.py
@@ -352,6 +352,8 @@ def main():
     css_min = theme_dir / "styles.min.css"
 
     env = os.environ.get("ENV", "").casefold()
+    skip_deploy = os.environ.get("SKIP_DEPLOY", "").casefold() == "true"
+    
     if env == "prod":
         print("Environment: Production")
         method = prompt("Publishing on remote or LAN? [r|l] ").lower()
@@ -382,7 +384,10 @@ def main():
         generate_sitemap()
 
         # Deploy changes
-        deploy_to_server(build_dir, homelab_server)
+        if not skip_deploy:
+            deploy_to_server(build_dir, homelab_server)
+        else:
+            print("SKIP_DEPLOY is true. Skipping rsync step.")
 
     else:
         print("Environment: Development")