From cdd840e5c71461e180265b9be11dc8f857c975d4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Moritz=20St=C3=BCckler?= <moritz@bitbetter.de>
Date: Fri, 17 Feb 2023 14:56:03 +0100
Subject: [PATCH] feat: add gitlab pipeline

---
 .gitlab-ci.yml | 88 ++++++++++++++++++++++++--------------------------
 1 file changed, 43 insertions(+), 45 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b75a85069..a68ab7f6a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,7 +3,6 @@ image: node:alpine
 variables:
   TEMPLATE_DOWNLOAD_URL: https://gitlab.fabcity.hamburg/fcos-suite/fcos-suite-astro/-/archive/main/fcos-suite-astro-main.zip
   TEMPLATE_FILENAME: template.zip
-  GIT_DEPTH: 1
 
 workflow:
   rules:
@@ -14,21 +13,20 @@ workflow:
 build:
   stage: build
   before_script:
-    - apk add --no-cache curl zip
+    - apk add --no-cache curl zip rsync
   script:
     - curl $TEMPLATE_DOWNLOAD_URL -o $TEMPLATE_FILENAME
     - unzip -o $TEMPLATE_FILENAME
-    - mv fcos-suite-astro-main/{.*,*} .
-    - ls -la
-  # Replacing the whole Astro config is a temporary workaround b/c Astro
-  # currently doesn't support env variables inside of the config file.
-  # See: https://github.com/withastro/astro/issues/3897
-    
-  #   - echo "$ASTRO_CONFIG" > astro.config.mjs
-  #   - echo "$NPM_RC" > .npmrc
-  # # - cat astro.config.mjs
-  #   - npm ci
-  #   - npm run build
+    - rm $TEMPLATE_FILENAME
+    - rsync -va --exclude="src/pages" --exclude="public" --exclude ".git" fcos-suite-astro-main/ .
+    - rm -rf fcos-suite-astro-main
+    # Replacing the whole Astro config is a temporary workaround b/c Astro
+    # currently doesn't support env variables inside of the config file.
+    # See: https://github.com/withastro/astro/issues/3897
+    - echo "$ASTRO_CONFIG" > astro.config.mjs
+    - cat astro.config.mjs
+    - npm ci
+    - npm run build
   artifacts:
     name: "$CI_COMMIT_REF_SLUG"
     expire_in: 1 day
@@ -38,36 +36,36 @@ build:
     name: $CI_COMMIT_REF_SLUG
     url: $TARGET_HOST/$CI_PROJECT_NAME/$CI_COMMIT_REF_SLUG
 
-# deploy:
-#   stage: deploy
-#   variables:
-#     GIT_STRATEGY: none
-#   before_script:
-#     - apk update
-#     - apk add --no-cache lftp openssh
-#     - mkdir -p ~/.ssh
-#     - echo "$HTACCESS" >> dist/.htaccess
-#     - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
-#     - echo "Deploying for branch $CI_COMMIT_REF_SLUG – will be available at 🌎 $TARGET_HOST/$CI_PROJECT_NAME/$CI_COMMIT_REF_SLUG"
-#   script:
-#     - lftp -e "set ftp:list-options -a; set net:timeout 5; set net:max-retries 3; set net:reconnect-interval-base 5; open sftp://$SFTP_HOST; user $SFTP_USER $SFTP_PASSWORD; mirror --exclude .well-known/ --reverse --delete ./dist/ $SFTP_FOLDER/$CI_PROJECT_NAME/$CI_COMMIT_REF_SLUG/; bye"
-#   environment:
-#     name: $CI_COMMIT_REF_SLUG
-#     url: $TARGET_HOST/$CI_PROJECT_NAME/$CI_COMMIT_REF_SLUG
-#     on_stop: delete
+deploy:
+  stage: deploy
+  variables:
+    GIT_STRATEGY: none
+  before_script:
+    - apk update
+    - apk add --no-cache lftp openssh
+    - mkdir -p ~/.ssh
+    - echo "$HTACCESS" >> dist/.htaccess
+    - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
+    - echo "Deploying for branch $CI_COMMIT_REF_SLUG – will be available at 🌎 $TARGET_HOST/$CI_PROJECT_NAME/$CI_COMMIT_REF_SLUG"
+  script:
+    - lftp -e "set ftp:list-options -a; set net:timeout 5; set net:max-retries 3; set net:reconnect-interval-base 5; open sftp://$SFTP_HOST; user $SFTP_USER $SFTP_PASSWORD; mirror --exclude .well-known/ --reverse --delete ./dist/ $SFTP_FOLDER/$CI_PROJECT_NAME/$CI_COMMIT_REF_SLUG/; bye"
+  environment:
+    name: $CI_COMMIT_REF_SLUG
+    url: $TARGET_HOST/$CI_PROJECT_NAME/$CI_COMMIT_REF_SLUG
+    on_stop: delete
 
-# delete:
-#   stage: deploy
-#   variables:
-#     GIT_STRATEGY: none
-#   before_script:
-#     - apk update
-#     - apk add --no-cache lftp openssh
-#     - mkdir -p ~/.ssh
-#     - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
-#   script:
-#     - lftp -e "set ftp:list-options -a; set net:timeout 5; set net:max-retries 3; set net:reconnect-interval-base 5; open sftp://$SFTP_HOST; user $SFTP_USER $SFTP_PASSWORD; rm -r $SFTP_FOLDER/$CI_PROJECT_NAME/$CI_COMMIT_REF_SLUG/; bye"
-#   when: manual
-#   environment:
-#     name: $CI_COMMIT_REF_SLUG
-#     action: stop
+delete:
+  stage: deploy
+  variables:
+    GIT_STRATEGY: none
+  before_script:
+    - apk update
+    - apk add --no-cache lftp openssh
+    - mkdir -p ~/.ssh
+    - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
+  script:
+    - lftp -e "set ftp:list-options -a; set net:timeout 5; set net:max-retries 3; set net:reconnect-interval-base 5; open sftp://$SFTP_HOST; user $SFTP_USER $SFTP_PASSWORD; rm -r $SFTP_FOLDER/$CI_PROJECT_NAME/$CI_COMMIT_REF_SLUG/; bye"
+  when: manual
+  environment:
+    name: $CI_COMMIT_REF_SLUG
+    action: stop
-- 
GitLab