Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- image: registry.gitlab.com/sleepless-nights/docker-registry/frontend-ci:v1.1
- stages:
- - build
- - deploy
- .dev-job:
- variables:
- ENV: development
- .prod-job:
- variables:
- ENV: production
- ### BUILD ###
- .build-job:
- stage: build
- script:
- - npm install --unsafe-perm=true --allow-root
- - export BUILD_ENV="$ENV"
- - npm run-script build
- artifacts:
- paths:
- - dist/
- .build-changes: &build-changes
- changes:
- - src/**/*
- - webpack/*
- - .gitlab-ci.yml
- dev-build:
- extends:
- - .dev-job
- - .build-job
- rules:
- - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME || $CI_COMMIT_BRANCH == "dev"'
- <<: *build-changes
- when: always
- prod-build:
- extends:
- - .prod-job
- - .build-job
- rules:
- - if: '$CI_COMMIT_BRANCH == "master"'
- <<: *build-changes
- when: always
- ###
- .deploy-job:
- stage: deploy
- before_script:
- - echo $ENV
- - if [[ $ENV == "production" ]]; then export SSH_KNOWN_HOSTS="$PROD_SSH_KNOWN_HOSTS" && export SSH_CREDENTIALS="$PROD_SSH_CREDENTIALS"; fi
- - if [[ $ENV == "development" ]]; then export SSH_KNOWN_HOSTS="$DEV_SSH_KNOWN_HOSTS" && export SSH_CREDENTIALS="$DEV_SSH_CREDENTIALS"; fi
- - eval $(ssh-agent -s)
- - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- - mkdir -p ~/.ssh
- - chmod 700 ~/.ssh
- - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
- - chmod 644 ~/.ssh/known_hosts
- .dev-deploy-job:
- extends:
- - .dev-job
- - .deploy-job
- variables:
- J2_VARS_ARGS: "-v etc/vars.yaml -v etc/vars-dev.yaml"
- resource_group: development
- .prod-deploy-job:
- extends:
- - .prod-job
- - .deploy-job
- variables:
- J2_VARS_ARGS: "-v etc/vars.yaml"
- resource_group: production
- ### DEPLOY DIST ###
- .deploy-dist-job:
- script:
- - scp -r dist/* $SSH_CREDENTIALS:/data/www
- - ssh $SSH_CREDENTIALS "sudo chgrp -R nginx /data/www/static/*" # nginx-only access
- - ssh $SSH_CREDENTIALS "sudo chgrp node /data/www/production.js" # node-only access
- - ssh $SSH_CREDENTIALS "sudo systemctl restart jr-ssr"
- .deploy-dist-changes: &deploy-dist-changes
- changes:
- - src/**/*
- - webpack/*
- dev-deploy-dist:
- extends:
- - .dev-deploy-job
- - .deploy-dist-job
- rules:
- - if: '$CI_COMMIT_BRANCH == "dev"'
- <<: *deploy-dist-changes
- when: always
- - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
- <<: *deploy-dist-changes
- when: manual
- prod-deploy-dist:
- extends:
- - .prod-deploy-job
- - .deploy-dist-job
- rules:
- - if: '$CI_COMMIT_BRANCH == "master"'
- <<: *deploy-dist-changes
- when: always
- ###
- ### DEPLOY NGINX ###
- .deploy-nginx-job:
- script:
- - j2.py $J2_VARS_ARGS -o etc/nginx.conf etc/nginx.conf.j2
- - scp ./etc/nginx.conf $SSH_CREDENTIALS:/etc/nginx/nginx.conf
- - ssh $SSH_CREDENTIALS "sudo systemctl restart nginx"
- .deploy-nginx-changes: &deploy-nginx-changes
- changes:
- - etc/nginx.conf.j2
- - etc/vars*.yaml
- dev-deploy-nginx:
- extends:
- - .dev-deploy-job
- - .deploy-nginx-job
- rules:
- - if: '$CI_COMMIT_BRANCH == "dev"'
- <<: *deploy-nginx-changes
- when: always
- - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
- <<: *deploy-nginx-changes
- when: manual
- prod-deploy-nginx:
- extends:
- - .prod-deploy-job
- - .deploy-nginx-job
- rules:
- - if: '$CI_COMMIT_BRANCH == "master"'
- <<: *deploy-nginx-changes
- when: always
- ###
- ### DEPLOY SYSTEMD UNIT ###
- .deploy-unit-job:
- script:
- - j2.py $J2_VARS_ARGS -o etc/jr-ssr.service etc/jr-ssr.service.j2
- - scp ./etc/jr-ssr.service $SSH_CREDENTIALS:/tmp/jr-ssr.service
- - ssh $SSH_CREDENTIALS "sudo mv /tmp/jr-ssr.service /etc/systemd/system/jr-ssr.service"
- - ssh $SSH_CREDENTIALS "sudo systemctl enable jr-ssr"
- - ssh $SSH_CREDENTIALS "sudo systemctl restart jr-ssr"
- .deploy-unit-changes: &deploy-unit-changes
- changes:
- - etc/jr-ssr.service.j2
- - etc/vars*.yaml
- dev-deploy-unit:
- extends:
- - .dev-deploy-job
- - .deploy-unit-job
- rules:
- - if: '$CI_COMMIT_BRANCH == "dev"'
- <<: *deploy-unit-changes
- when: always
- - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
- <<: *deploy-unit-changes
- when: manual
- prod-deploy-unit:
- extends:
- - .prod-deploy-job
- - .deploy-unit-job
- rules:
- - if: '$CI_COMMIT_BRANCH == "master"'
- <<: *deploy-unit-changes
- when: always
- ###
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement