Deployment
All commits merged to develop branch and all tags are deployed automatically. To the test environment for develop branch and to the production environment for tags. The code below is a standard configuration for the build stage in both Vue Storefront and Vue Storefront API applications, but for the API frontContainerVersion
is replaced by apiContainerVersion
.
deploy-to-staging:
stage: deploy
image: alpine
script:
- apk add --no-cache curl
- >
curl -H "Content-Type: application/json" -X POST -d "{\"code\":\"{{ instance_name }}-test\", \"frontContainerVersion\":\"${CI_COMMIT_SHA:0:8}\"}" http://10.29.1.1:4000/instances
environment:
name: staging
url: https://{{ instance_name }}-test.storefrontcloud.io/
only:
- develop
deploy-to-prod:
stage: deploy
image: alpine
script:
- apk add --no-cache curl
- >
curl -H "Content-Type: application/json" -X POST -d "{\"code\":\"{{ instance_name }}\", \"frontContainerVersion\":\"$CI_COMMIT_TAG\"}" http://10.29.1.1:4000/instances
environment:
name: prod
url: https://{{ instance_domain }}/
only:
- tags
How read this configuration? For us most importan part is script
definition. Ther is only call to our tool responsible for deploy by curl
. The tool is available only for runners on address http://10.29.1.1:4000/
.
Deploy Check
In stage deploy-to-staging-check
and deploy-to-prod-check
is run a script which confirms deployment success. For success deployment output will be similar to below:
Downloading artifacts from coordinator... ok id=7150 responseStatus=200 OK token=hnrBT1oP
$ cd /usr/src/app
$ echo $KUBE_CONFIG_TEST | base64 --decode > /tmp/kubeconfig
$ bundle exec ruby deploy_checker.rb --tag ${CI_COMMIT_SHA:0:8} --kubeconfig /tmp/kubeconfig --namespace test-storefrontcloud-io
.................................................................................................................
Great news! Deploy succeeded!
Job succeeded