Advertisement
Uimin_Maxim

joint.rent - frontend

Oct 29th, 2020
1,884
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 4.42 KB | None | 0 0
  1. image: registry.gitlab.com/sleepless-nights/docker-registry/frontend-ci:v1.1
  2.  
  3. stages:
  4.  - build
  5.   - deploy
  6.  
  7. .dev-job:
  8.   variables:
  9.     ENV: development
  10.  
  11. .prod-job:
  12.   variables:
  13.     ENV: production
  14.  
  15.  
  16. ### BUILD ###
  17. .build-job:
  18.   stage: build
  19.   script:
  20.    - npm install --unsafe-perm=true --allow-root
  21.     - export BUILD_ENV="$ENV"
  22.     - npm run-script build
  23.   artifacts:
  24.     paths:
  25.      - dist/
  26.  
  27. .build-changes: &build-changes
  28.   changes:
  29.    - src/**/*
  30.     - webpack/*
  31.     - .gitlab-ci.yml
  32.  
  33. dev-build:
  34.   extends:
  35.    - .dev-job
  36.     - .build-job
  37.   rules:
  38.     - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME || $CI_COMMIT_BRANCH == "dev"'
  39.       <<: *build-changes
  40.       when: always
  41.  
  42. prod-build:
  43.   extends:
  44.    - .prod-job
  45.     - .build-job
  46.   rules:
  47.     - if: '$CI_COMMIT_BRANCH == "master"'
  48.       <<: *build-changes
  49.       when: always
  50. ###
  51.  
  52.  
  53. .deploy-job:
  54.   stage: deploy
  55.   before_script:
  56.    - echo $ENV
  57.     - if [[ $ENV == "production" ]]; then export SSH_KNOWN_HOSTS="$PROD_SSH_KNOWN_HOSTS" && export SSH_CREDENTIALS="$PROD_SSH_CREDENTIALS"; fi
  58.     - if [[ $ENV == "development" ]]; then export SSH_KNOWN_HOSTS="$DEV_SSH_KNOWN_HOSTS" && export SSH_CREDENTIALS="$DEV_SSH_CREDENTIALS"; fi
  59.     - eval $(ssh-agent -s)
  60.     - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
  61.     - mkdir -p ~/.ssh
  62.     - chmod 700 ~/.ssh
  63.     - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
  64.     - chmod 644 ~/.ssh/known_hosts
  65.  
  66. .dev-deploy-job:
  67.   extends:
  68.    - .dev-job
  69.     - .deploy-job
  70.   variables:
  71.     J2_VARS_ARGS: "-v etc/vars.yaml -v etc/vars-dev.yaml"
  72.   resource_group: development
  73.  
  74. .prod-deploy-job:
  75.   extends:
  76.    - .prod-job
  77.     - .deploy-job
  78.   variables:
  79.     J2_VARS_ARGS: "-v etc/vars.yaml"
  80.   resource_group: production
  81.  
  82.  
  83. ### DEPLOY DIST ###
  84. .deploy-dist-job:
  85.   script:
  86.    - scp -r dist/* $SSH_CREDENTIALS:/data/www
  87.     - ssh $SSH_CREDENTIALS "sudo chgrp -R nginx /data/www/static/*"  # nginx-only access
  88.     - ssh $SSH_CREDENTIALS "sudo chgrp node /data/www/production.js" # node-only access
  89.     - ssh $SSH_CREDENTIALS "sudo systemctl restart jr-ssr"
  90.  
  91. .deploy-dist-changes: &deploy-dist-changes
  92.   changes:
  93.    - src/**/*
  94.     - webpack/*
  95.  
  96. dev-deploy-dist:
  97.   extends:
  98.    - .dev-deploy-job
  99.     - .deploy-dist-job
  100.   rules:
  101.     - if: '$CI_COMMIT_BRANCH == "dev"'
  102.       <<: *deploy-dist-changes
  103.       when: always
  104.     - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
  105.       <<: *deploy-dist-changes
  106.       when: manual
  107.  
  108. prod-deploy-dist:
  109.   extends:
  110.    - .prod-deploy-job
  111.     - .deploy-dist-job
  112.   rules:
  113.     - if: '$CI_COMMIT_BRANCH == "master"'
  114.       <<: *deploy-dist-changes
  115.       when: always
  116. ###
  117.  
  118.  
  119. ### DEPLOY NGINX ###
  120. .deploy-nginx-job:
  121.   script:
  122.    - j2.py $J2_VARS_ARGS -o etc/nginx.conf etc/nginx.conf.j2
  123.     - scp ./etc/nginx.conf $SSH_CREDENTIALS:/etc/nginx/nginx.conf
  124.     - ssh $SSH_CREDENTIALS "sudo systemctl restart nginx"
  125.  
  126. .deploy-nginx-changes: &deploy-nginx-changes
  127.   changes:
  128.    - etc/nginx.conf.j2
  129.     - etc/vars*.yaml
  130.  
  131. dev-deploy-nginx:
  132.   extends:
  133.    - .dev-deploy-job
  134.     - .deploy-nginx-job
  135.   rules:
  136.     - if: '$CI_COMMIT_BRANCH == "dev"'
  137.       <<: *deploy-nginx-changes
  138.       when: always
  139.     - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
  140.       <<: *deploy-nginx-changes
  141.       when: manual
  142.  
  143. prod-deploy-nginx:
  144.   extends:
  145.    - .prod-deploy-job
  146.     - .deploy-nginx-job
  147.   rules:
  148.     - if: '$CI_COMMIT_BRANCH == "master"'
  149.       <<: *deploy-nginx-changes
  150.       when: always
  151. ###
  152.  
  153.  
  154. ### DEPLOY SYSTEMD UNIT ###
  155. .deploy-unit-job:
  156.   script:
  157.    - j2.py $J2_VARS_ARGS -o etc/jr-ssr.service etc/jr-ssr.service.j2
  158.     - scp ./etc/jr-ssr.service $SSH_CREDENTIALS:/tmp/jr-ssr.service
  159.     - ssh $SSH_CREDENTIALS "sudo mv /tmp/jr-ssr.service /etc/systemd/system/jr-ssr.service"
  160.     - ssh $SSH_CREDENTIALS "sudo systemctl enable jr-ssr"
  161.     - ssh $SSH_CREDENTIALS "sudo systemctl restart jr-ssr"
  162.  
  163. .deploy-unit-changes: &deploy-unit-changes
  164.   changes:
  165.    - etc/jr-ssr.service.j2
  166.     - etc/vars*.yaml
  167.  
  168. dev-deploy-unit:
  169.   extends:
  170.    - .dev-deploy-job
  171.     - .deploy-unit-job
  172.   rules:
  173.     - if: '$CI_COMMIT_BRANCH == "dev"'
  174.       <<: *deploy-unit-changes
  175.       when: always
  176.     - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
  177.       <<: *deploy-unit-changes
  178.       when: manual
  179.  
  180. prod-deploy-unit:
  181.   extends:
  182.    - .prod-deploy-job
  183.     - .deploy-unit-job
  184.   rules:
  185.     - if: '$CI_COMMIT_BRANCH == "master"'
  186.       <<: *deploy-unit-changes
  187.       when: always
  188. ###
  189.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement