Successfully reported this slideshow.
Your SlideShare is downloading. ×

CI and CD

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
CI and CD
CI and CD
Loading in …3
×

Check these out next

1 of 31 Ad

More Related Content

Slideshows for you (20)

Advertisement

Similar to CI and CD (20)

More from Ladislav Prskavec (20)

Advertisement

Recently uploaded (20)

CI and CD

  1. 1. CI and CD Nette Camp 27.8.2016
  2. 2. Key concepts 4 Continuous Delivery (CD) 4 Continuous Integration (CI) 4 Continuous Deployment
  3. 3. Continuous Integration
  4. 4. Continuous Integration (CI) 4 is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.
  5. 5. Continuous Delivery
  6. 6. Continuous Delivery 4 is a software development discipline where you build software in such a way that the software can be released to production at any time.
  7. 7. Continuous Deployment
  8. 8. Continuous Deployment 4 means that every change goes through the pipeline and automatically gets put into production, resulting in many production deployments every day.
  9. 9. How we do Continuous Delivery in Apiary
  10. 10. Continuous Integration Engines
  11. 11. Key features from CIE 4 job definitions in repository 4 autoscaling on traffic with lowest possible price 4 pipelines 4 caching for installations (apt, npm, gem, composer, docker) 4 docker support (registry, caching layers) 4 matrix builds (OSS)
  12. 12. Job definitions in repository
  13. 13. sudo: "required" dist: "trusty" language: "node_js" node_js: - "0.10" - "0.12" - "4" - "6" env: global: # GH_TOKEN and NPM_TOKEN encrypted by 'travis encrypt' utility - secure: "<<<TOKEN>>>" cache: directories: - "node_modules" before_install: - "npm -g install npm@latest" - "gem install travis" - "curl -Lo travis_after_all.py https://raw.githubusercontent.com/dmakhno/travis_after_all/master/travis_after_all.py" before_script: - "npm run lint" script: - "npm test" - "npm run test:hooks-handlers" after_success: # travis_after_all.py is needed due to travis-ci/travis-ci#1548 & travis-ci/travis-ci#929 - "npm run coveralls" - "python travis_after_all.py" - "export $(cat .to_export_back)" - "npm run semantic-release || true"
  14. 14. node('node') { currentBuild.result = "SUCCESS" try { stage 'Checkout' checkout scm stage 'Test' env.NODE_ENV = "test" print "Environment will be : ${env.NODE_ENV}" sh 'node -v' sh 'npm prune' sh 'npm install' sh 'npm test' stage 'Build Docker' sh './dockerBuild.sh' stage 'Deploy' echo 'Push to Repo' sh './dockerPushToRepo.sh' echo 'ssh to web server and tell it to pull new image' sh 'ssh deploy@xxxxx.xxxxx.com running/xxxxxxx/dockerRun.sh' stage 'Cleanup' echo 'prune and cleanup' sh 'npm prune' sh 'rm node_modules -rf' mail body: 'project build successful', from: 'xxxx@yyyyy.com', replyTo: 'xxxx@yyyy.com', subject: 'project build successful', to: 'yyyyy@yyyy.com' } catch (err) { currentBuild.result = "FAILURE" mail body: "project build error: ${err}" , from: 'xxxx@yyyy.com', replyTo: 'yyyy@yyyy.com', subject: 'project build failed', to: 'zzzz@yyyyy.com' throw err } }
  15. 15. Autoscaling
  16. 16. Pipelines
  17. 17. Caching
  18. 18. Docker support
  19. 19. machine: services: - docker dependencies: override: - docker info - docker build -t circleci/elasticsearch . test: override: - docker run -d -p 9200:9200 circleci/elasticsearch; sleep 10 - curl --retry 10 --retry-delay 5 -v http://localhost:9200 deployment: hub: branch: master commands: - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS - docker push circleci/elasticsearch
  20. 20. Matrix builds
  21. 21. matrix: GO_VERSION: - 1.4 - 1.3 REDIS_VERSION: - 2.6 - 2.8 - 3.0
  22. 22. Distributed job across multiple nodes
  23. 23. Q & A Ladislav Prskavec ladislav@prskavec.net @abtris

×