Skip to content

Instantly share code, notes, and snippets.

@brunodasilvalenga
Created May 5, 2020 14:34
Show Gist options
  • Save brunodasilvalenga/947125513c0502ef26776dd5db7c4518 to your computer and use it in GitHub Desktop.
Save brunodasilvalenga/947125513c0502ef26776dd5db7c4518 to your computer and use it in GitHub Desktop.
image: dnxsolutions/musketeers:1.1.1-ecr
services:
- docker:18.03.1-ce-dind # needs to match gitlab runner version
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
AWS_DEFAULT_REGION: ap-southeast-2
AWS_HOSTED_ZONE: dev.cloud.example.com.au
AWS_ROLE: ci-deploy
API_ENV: dev
API_NAME: ${CI_PROJECT_NAME}
API_VERSION: v1
API_BASE_PATH: api
API_BASE_SUBDOMAIN: api
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- package.json
- package-lock.json
stages:
- install
- tests
- deploy-developer
- deploy-nonprod
- deploy-prod
# ------------------------------------------------------------------------------
# CONTINUOUS INTEGRATION
# ------------------------------------------------------------------------------
libraries:
tags: [example_runner, docker]
stage: install
script:
- make install
only:
- master
- merge_requests
cache:
policy: pull-push
retry: 2
artifacts:
untracked: true
"unit-tests":
tags: [example_runner, docker]
when: on_success
stage: tests
script:
- make test
after_script:
- bash <(curl -s https://codecov.io/bash) -t ${CODECOV_TOKEN} -s .cov
only:
- master
- merge_requests
cache:
policy: pull-push
dependencies:
- libraries
# ------------------------------------------------------------------------------
# CONTINUOUS DELIVERY
# ------------------------------------------------------------------------------
# DEPLOY TO DEVELOPER ENVIRONMENT
"deploy developer":
tags: [example_runner, docker]
when: on_success
allow_failure: true
stage: deploy-developer
variables:
AWS_ACCOUNT_ID: 000000000000
AWS_ACM_CERTIFICATE: "arn:aws:acm:us-east-1:000000000000:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
AWS_API_DOMAIN_NAME: ${API_BASE_SUBDOMAIN}-${GITLAB_USER_ID}.dev.cloud.example.com.au
AWS_HOSTED_ZONE: dev.cloud.example.com.au
AWS_ENV: dev-${GITLAB_USER_ID}
script:
- make deploy
only:
- merge_requests
cache:
policy: pull-push
environment:
name: ${CI_PROJECT_NAME}/developer/${GITLAB_USER_ID}
url: https://${AWS_API_DOMAIN_NAME}/${API_BASE_PATH}
# DEPLOY TO NON-PROD SHARED ENVIRONMENT
"deploy nonprod":
tags: [example_runner, docker]
when: on_success
stage: deploy-nonprod
variables:
AWS_ACCOUNT_ID: 000000000000
AWS_ACM_CERTIFICATE: "arn:aws:acm:us-east-1:000000000000:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
AWS_API_DOMAIN_NAME: ${API_BASE_SUBDOMAIN}.dev.cloud.example.com.au
AWS_HOSTED_ZONE: dev.cloud.example.com.au
AWS_ENV: dev
script:
- make deploy
only:
- master
cache:
policy: pull-push
environment:
name: ${CI_PROJECT_NAME}/nonprod
url: https://${AWS_API_DOMAIN_NAME}/${API_BASE_PATH}
# DEPLOY TO PRODUCTION ENVIRONMENT AND GENERATE RELEASE
"deploy prod":
tags: [example_runner, docker]
when: manual
stage: deploy-prod
variables:
AWS_ACCOUNT_ID: 000000000000
AWS_ACM_CERTIFICATE: "arn:aws:acm:ap-southeast-2:000000000000:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
AWS_API_DOMAIN_NAME: ${API_BASE_SUBDOMAIN}.example.com.au
AWS_HOSTED_ZONE: prod.cloud.example.com.au
AWS_ENV: prod
API_ENV: prod
script:
- make deploy
after_script:
- make release
only:
- master
cache:
policy: pull-push
environment:
name: ${CI_PROJECT_NAME}/prod
url: https://${AWS_API_DOMAIN_NAME}/${API_BASE_PATH}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment