UNDER MY UMBRELLA
SPEAKER
DELIVERY
DEFINITION
DESTINATION
REQUIREMENTS
Knowledge base
Definition of Done
Definition of Ready
Requirements management
Requirements stakeholders
Requirements review by QA
ONBOARDING
Gui guide
Mentoring
Handbook
Coaching
Pair programming
Start kit
CODE QUALITY
Style guide
Check tools
Code standards
Test automation
Builders
Technical debt
CODE REVIEW
Peer-to-peer code review
Tools
Reviewers strategy
Check list
Code analysis
Pre-merged review
RELEASE STRATEGY
Frequency
Test strategy
Speed
Recovery strategy
Environments
Change management
CONTINUOUS INTEGRATION
Process
Frequency
Server
Speed
Artifacts
Analysis
CONTINUOUS DEPLOYMENT
Single click
Frequency
Tools
Rollback
Speed
Automated
CONFIGURATION
Environment requirements
Build configuration
Deployment guide
Automated provision
Automated deployment
Automated environment
ARCHITECTURE
Logging
Support interface
Analytics
KPI monitoring
Architecture documentation
Architecture model
TESTING
Unit testing
End-to-end testing
Integration testing
Load testing
Security testing
Mutation testing
SERVICES
GERRIT
CRUCIBLE
GITHUB
TEAM CITY
BAMBOO
MOBFARM
SITEPERF
AWS
SUPPORT
EXCEL
PIPELINE
CONFIGURATION
stages:
- build
- test
- sonar
- plan
- deploy
- integration-test
- e2e-test
- load-test
- destroy
variables:
TERRAFORMER_VERSION: v0.10.7_cd
DOCKER_PULL_HOST: tmhub.io
NODE_IMAGE: node:6.10.3
NODE_SONARQUBE_IMAGE: tmhub.io/project-name/node-sonarqube:latest
TERRAFORMER_IMAGE: $DOCKER_PULL_HOST/customer/terraformer:${TERRAFORMER_VERSION}
MAVEN_IMAGE: $DOCKER_PULL_HOST/maven/maven:3.3.9-jdk1.8.0_121
TERRAFORM_FOLDER: terraform
.template: &nonprod_gitlab_runner
tags:
- tm-nonprod terraformer
.template: &prod_gitlab_runner
tags:
- tm-prod terraformer
.template: &sonar_gitlab_runner
tags:
- tm-prod cicd build
.template: &only_develop
only:
- develop@sponsorship/repository
.template: &only_master
only:
- master@sponsorship/repository
.template: &except_master_and_develop
except:
- master
- develop
.template: &except_master
except:
- master
.template: &dev_env
<<: *nonprod_gitlab_runner
variables:
account_tag: tm-nonprod
environment_tag: dev1
.template: &qa_env
<<: *nonprod_gitlab_runner
variables:
account_tag: tm-nonprod
environment_tag: qa1
.template: &preprod_env
<<: *prod_gitlab_runner
variables:
account_tag: tm-prod
environment_tag: preprod1
.template: &plan_job
image: $TERRAFORMER_IMAGE
stage: plan
script:
- cd $TERRAFORM_FOLDER
- terraformer $account_tag/$environment_tag plan
.template: &deploy_job
image: $TERRAFORMER_IMAGE
stage: deploy
script:
- cd $TERRAFORM_FOLDER
- terraformer $account_tag/$environment_tag apply
.template: &destroy_job
image: $TERRAFORMER_IMAGE
stage: destroy
script:
- cd $TERRAFORM_FOLDER
- terraformer $account_tag/$environment_tag destroy -force
<<: *except_master
when: manual
.template: &integration_test_job
image: $NODE_IMAGE
stage: integration-test
script:
- yarn
- yarn run integration-test
.template: &e2e_test_job
image: $NODE_IMAGE
stage: e2e-test
script:
- yarn
- yarn run e2e-test
.template: &load_test_job
image: $MAVEN_IMAGE
stage: load-test
script:
- bin/load-test
build:
image: $NODE_IMAGE
stage: build
<<: *nonprod_gitlab_runner
script:
- bin/build
artifacts:
paths:
- terraform/build
test:
image: $NODE_IMAGE
stage: test
<<: *nonprod_gitlab_runner
script:
- yarn
- yarn run lint
- yarn run flow:check
- yarn run unit-test:coverage
- yarn run flow:coverage
coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/
artifacts:
paths:
- coverage
sonar:
stage: sonar
image: $NODE_SONARQUBE_IMAGE
<<: *sonar_gitlab_runner
script:
- sonar-scanner
plan dev:
<<: *plan_job
<<: *dev_env
<<: *except_master_and_develop
plan qa:
<<: *plan_job
<<: *qa_env
<<: *except_master_and_develop
when: manual
plan preprod:
<<: *plan_job
<<: *preprod_env
<<: *except_master_and_develop
when: manual
deploy dev (manual):
<<: *deploy_job
<<: *dev_env
<<: *except_master_and_develop
when: manual
deploy dev:
<<: *deploy_job
<<: *dev_env
<<: *only_develop
deploy qa:
<<: *deploy_job
<<: *qa_env
<<: *except_master
when: manual
deploy preprod (manual):
<<: *deploy_job
<<: *preprod_env
<<: *except_master
when: manual
deploy preprod:
<<: *deploy_job
<<: *preprod_env
<<: *only_master
integration-test dev (manual):
<<: *integration_test_job
<<: *dev_env
<<: *except_master_and_develop
when: manual
integration-test dev:
<<: *integration_test_job
<<: *dev_env
<<: *only_develop
integration-test qa:
<<: *integration_test_job
<<: *qa_env
<<: *except_master
when: manual
integration-test preprod (manual):
<<: *integration_test_job
<<: *preprod_env
<<: *except_master
when: manual
integration-test preprod:
<<: *integration_test_job
<<: *preprod_env
<<: *only_master
e2e-test dev (manual):
<<: *e2e_test_job
<<: *dev_env
<<: *except_master_and_develop
when: manual
e2e-test dev:
<<: *e2e_test_job
<<: *dev_env
<<: *only_develop
e2e-test qa:
<<: *e2e_test_job
<<: *qa_env
<<: *except_master
when: manual
e2e-test preprod (manual):
<<: *e2e_test_job
<<: *preprod_env
<<: *except_master
when: manual
e2e-test preprod:
<<: *e2e_test_job
<<: *preprod_env
<<: *only_master
load-test dev:
<<: *load_test_job
<<: *dev_env
<<: *except_master_and_develop
when: manual
load-test qa:
<<: *load_test_job
<<: *qa_env
<<: *except_master
when: manual
load-test preprod (manual):
<<: *load_test_job
<<: *preprod_env
<<: *except_master
when: manual
load-test preprod:
<<: *load_test_job
<<: *preprod_env
<<: *only_master
destroy dev:
<<: *destroy_job
<<: *dev_env
<<: *except_master
destroy qa:
<<: *destroy_job
<<: *qa_env
<<: *except_master
destroy preprod:
<<: *destroy_job
<<: *preprod_env
PRODUCTION
ACCELERATOR
THIS IS THE BEGINNING
Under My Umbrella
By Roman Stremedlovskyi
Under My Umbrella
Delivering Excellence in EPAM Systems
- 2,111