common.gitlab-ci.yml 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. stages:
  2. - build
  3. - deploy
  4. variables:
  5. GIT_SSL_NO_VERIFY: 'true'
  6. GIT_STRATEGY: clone
  7. build:
  8. stage: build
  9. when: manual
  10. image: node:21
  11. artifacts:
  12. expire_in: 1 day
  13. paths:
  14. - aktivisda-core/dist
  15. variables:
  16. PUBLIC_PATH: $ROOT_URL
  17. script:
  18. - echo "building app for any push on any branch or for release tags..."
  19. - git clone --depth 1 https://framagit.org/aktivisda/aktivisda.git -b $(python3 -c "import json; x = json.load(open('local/config.json', 'r')); print(x['aktivisda']['ref'] if 'aktivisda' in x else 'main')") aktivisda-core
  20. - cd aktivisda-core/aktivisda-library
  21. - npm install
  22. - npm run build
  23. - cd ..
  24. - npm install
  25. - cd ..
  26. - npm run build:aktivisda
  27. - npm run build:backtivisda
  28. rules:
  29. - if: $CI_PIPELINE_SOURCE == "schedule"
  30. when: never
  31. - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
  32. when: never
  33. - when: always
  34. ##########
  35. # Deploy #
  36. ##########
  37. deploy-server:
  38. stage: deploy
  39. image: debian:13
  40. before_script:
  41. script:
  42. - apt-get update
  43. - apt-get install -y lftp
  44. - lftp -e "set ssl:verify-certificate no;set sftp:auto-confirm yes;open sftp://$FTP_HOST -p $FTP_PORT; user $FTP_USER $FTP_PASSWORD; mirror --reverse --verbose --delete aktivisda-core/dist/aktivisda $REMOTE_DIR;exit"
  45. - lftp -e "set ssl:verify-certificate no;set sftp:auto-confirm yes;open sftp://$FTP_HOST -p $FTP_PORT; user $FTP_USER $FTP_PASSWORD; mirror --reverse --verbose --delete aktivisda-core/dist/backtivisda $REMOTE_DIR/backtivisda;exit"
  46. needs: ['build']
  47. dependencies: ['build']
  48. rules:
  49. - if: $CI_PIPELINE_SOURCE == "schedule"
  50. when: never
  51. - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
  52. when: never
  53. - when: always
  54. deploy-server-ssh:
  55. stage: deploy
  56. image: alpine:latest
  57. needs: ['build']
  58. dependencies: ['build']
  59. script:
  60. - apk update && apk add openssh && apk add rsync
  61. - eval $(ssh-agent -s)
  62. - mkdir -p ~/.ssh
  63. - chmod 700 ~/.ssh
  64. - echo "$PROD_SSH_KEY" | tr -d '\r' | ssh-add - > /dev/null
  65. - ssh-keyscan -p $FTP_PORT $FTP_HOSTNAME >> ~/.ssh/known_hosts 2> /dev/null
  66. - chmod 644 ~/.ssh/known_hosts
  67. - FTP_SERVER="$FTP_USER@$FTP_HOSTNAME"
  68. - rsync -e "ssh -p $FTP_PORT" -avz --stats --delete-after aktivisda-core/dist/aktivisda/ $FTP_SERVER:./www;
  69. - rsync -e "ssh -p $FTP_PORT" -avz --stats --delete-after aktivisda-core/dist/backtivisda/ $FTP_SERVER:./www/backtivisda;
  70. - ssh -p $FTP_PORT $FTP_SERVER "chmod a+r * -R"
  71. rules:
  72. - if: $CI_PIPELINE_SOURCE == "schedule"
  73. when: never
  74. - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
  75. when: never
  76. - when: always