From dca0f18cbb20de2122f5f5f3a21745526370c567 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Wed, 8 Oct 2025 14:38:42 +0200 Subject: [PATCH] improve CI --- .gitlab-ci.yml | 74 ++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2108350..50ba152 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,7 @@ stages: variables: COMPOSER_ALLOW_SUPERUSER: '1' + SSH_PORT: '2244' build: stage: build @@ -11,7 +12,7 @@ build: script: - apk add --no-cache nodejs npm - npm install - - if [ "$CI_COMMIT_REF_NAME" = "dev" ]; then npm run build:preprod; else npm run build; fi + - if [ "$CI_COMMIT_REF_NAME" = "preprod" ]; then npm run build:preprod; else npm run build; fi - cd dist - composer install --no-dev --optimize-autoloader --ignore-platform-req=ext-gd - cd .. @@ -23,54 +24,51 @@ build: paths: - node_modules/ -deploy: +.deploy_script: &deploy_script | + cd dist + if [ ! -d "vendor" ]; then + echo "Error: vendor/ not found in dist (composer install may have failed)" + exit 1 + fi + + rsync_deploy() { + local src=$1 + local dst=$2 + local exclude=$3 + cmd="sshpass -p \"$PASSWORD\" rsync -az --delete -O" + [[ -n $exclude ]] && cmd="$cmd $exclude" + cmd="$cmd -e 'ssh -p $SSH_PORT -o StrictHostKeyChecking=no' $src $USERNAME@$HOST:$dst" + echo "$cmd" + eval $cmd + } + + rsync_deploy site/ "$TARGET_PATH/site/" "--exclude 'accounts/' --exclude 'cache/' --exclude 'sessions/'" + rsync_deploy vendor/ "$TARGET_PATH/vendor/" + rsync_deploy kirby/ "$TARGET_PATH/kirby/" + rsync_deploy assets/ "$TARGET_PATH/assets/" "--exclude 'tiles/'" + +deploy_prod: stage: deploy image: node:latest + needs: ['build'] only: - main before_script: - apt-get update -qq && apt-get install -y rsync sshpass script: - - cd dist - - | - rsync_deploy() { - local src=$1 - local dst=$2 - local exclude=$3 - cmd="sshpass -p \"$PASSWORD\" rsync -az --delete -O" - [[ -n $exclude ]] && cmd="$cmd $exclude" - cmd="$cmd -e 'ssh -p 2244 -o StrictHostKeyChecking=no' $src $USERNAME@$HOST:$dst" - echo "$cmd" - eval $cmd - } + - TARGET_PATH=$PROD_PATH bash -c "$DEPLOY_SCRIPT" + variables: + DEPLOY_SCRIPT: *deploy_script - rsync_deploy site/ "$PROD_PATH/site/" "--exclude 'accounts/' --exclude 'cache/' --exclude 'sessions/'" - rsync_deploy vendor/ "$PROD_PATH/vendor/" - rsync_deploy kirby/ "$PROD_PATH/kirby/" - rsync_deploy assets/ "$PROD_PATH/assets/" "--exclude 'tiles/'" - -deploy_dev: +deploy_preprod: stage: deploy image: node:latest + needs: ['build'] only: - - dev + - preprod before_script: - apt-get update -qq && apt-get install -y rsync sshpass script: - - cd dist - - | - rsync_deploy() { - local src=$1 - local dst=$2 - local exclude=$3 - cmd="sshpass -p \"$PASSWORD\" rsync -az --delete -O" - [[ -n $exclude ]] && cmd="$cmd $exclude" - cmd="$cmd -e 'ssh -p 2244 -o StrictHostKeyChecking=no' $src $USERNAME@$HOST:$dst" - echo "$cmd" - eval $cmd - } - - rsync_deploy site/ "$PREPROD_PATH/site/" "--exclude 'accounts/' --exclude 'cache/' --exclude 'sessions/'" - rsync_deploy vendor/ "$PREPROD_PATH/vendor/" - rsync_deploy kirby/ "$PREPROD_PATH/kirby/" - rsync_deploy assets/ "$PREPROD_PATH/assets/" "--exclude 'tiles/'" + - TARGET_PATH=$PREPROD_PATH bash -c "$DEPLOY_SCRIPT" + variables: + DEPLOY_SCRIPT: *deploy_script