# Reusable GitLab CI template for deploying to a dotnews-paas server. # # In your project's .gitlab-ci.yml: # include: # - project: 'dotnews/dotnews-paas' # or local copy of this file # file: 'ci/deploy.yml' # variables: # PAAS_APP: myapp # PAAS_HOST: deploy@ # # CI/CD variable (masked, type File): PAAS_SSH_KEY = deploy user private key # # Multi-app matrix example (dotnews tenants): # deploy: # extends: .paas-deploy # parallel: # matrix: # - PAAS_APP: [dotnews-an, dotnews-js, dotnews-ran, dotnews-can] # before_script: # - cp nuxt.config.ts-variant-${PAAS_APP#dotnews-} nuxt.config.ts .paas-deploy: image: node:22 variables: NITRO_PRESET: node-server OUTPUT_DIR: .output script: - npm ci - npm run build - mkdir -p ~/.ssh && chmod 700 ~/.ssh - cp "$PAAS_SSH_KEY" ~/.ssh/id_paas && chmod 600 ~/.ssh/id_paas - ssh-keyscan -H "${PAAS_HOST#*@}" >> ~/.ssh/known_hosts 2>/dev/null - rsync -az -e "ssh -i ~/.ssh/id_paas" --delete "$OUTPUT_DIR"/ "$PAAS_HOST:/srv/paas/builds/ci-$PAAS_APP/" - ssh -i ~/.ssh/id_paas "$PAAS_HOST" "PAAS_SOURCE=gitlab-ci PAAS_COMMIT=$CI_COMMIT_SHA paas deploy $PAAS_APP /srv/paas/builds/ci-$PAAS_APP" paas-deploy: extends: .paas-deploy rules: - if: '$PAAS_APP && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'