CI CD Test on ReRep

Aa777465acd82d13333678f3fc082c59?s=47 Spring_MT
November 08, 2018

CI CD Test on ReRep

Aa777465acd82d13333678f3fc082c59?s=128

Spring_MT

November 08, 2018
Tweet

Transcript

  1. CI / CD Test on ReRep 春⼭ 誠 Makoto Haruyama

    Nov, 8, 2018 CI/CD Test Night #2
  2. DeNA E-Commerce & Incubation Unit, Service Incubation Div., Rerep Gr.<-

    New! SpringMT Spring_MT Makoto Haruyama 春⼭ 誠
  3. Service & Team Development Policy CI / CD Test Retrospective

    Agenda
  4. Service & Team

  5. None
  6. Team

  7. Using FrameWorks API Server • Ruby on Rails Client •

    iOS and Android • React Native + TypeScript • Web(JS) • React
  8. Current Status

  9. Development Policy

  10. Policy Use existing Tools and Services for High Productivity •

    Fastly • CircleCI • Bitrise • Sentry • Firebase
  11. Policy API Spec Driven Development • API Spec Driven Development

    using Swagger • https://speakerdeck.com/spring_mt/api-spec-driven- development-with-swagger
  12. Policy Environment parity • Environment parity for Artifacts • Environment

    parity for Infrastructure • Rais on GKE • https://speakerdeck.com/spring_mt/rails-on-gke • 1⼈でできるDocker/Kubernetes(GKE)を使った新規サービス⽴ち上げ • https://containerdays.jp
  13. 紹介 https://containerdays.jp

  14. Policy Stateless and Immutable Build Artifacts • Artifacts will work

    everywhere without modifying • Artifacts will be deployable regardless of previous contexts
  15. CI / CD Test

  16. Artifacts in ReRep Server • Docker image Client • ipa

    • apk Contents Data for Service • Zipped JSON files
  17. Manage Artifacts Build artifacts on Every repos push Store All

    Artifacts • Store Build artifacts which are ready to deploy
  18. CI

  19. CI Build artifacts on every repos push • Server :

    Build Docker images • Client : Make ipa and apk files • Service Contents Data : Zipped JSON Files Run tests before integration Store All Artifacts
  20. CI CI Tools • Server • CircleCI • Client •

    Bitrise
  21. CI Why use external tools like CircleCI and Bitrise? •

    It is important to introduce CI from the beginning • So, to be easy to introduce CI is important • Independent from local environment
  22. CI for Server  ! "    

         ςετ    Run Tests
  23. CI for Client Bitrise • Why? • Useful features for

    client app building • Easy to manage iOS Provisioning profile • Easy to manage Android Code signing • Store all artifacts(DeNA uses elite plan) • Distribute Apps on Bitrise • Easy to use workflow Editors
  24. Bitrise Client Build Settings History History of build workflows using

    Bitrise 1. Default React Native Configurations • Simple and Fast! 2. Fastlane • For controlling build types
  25. Current Bitrise WorkFlow

  26. Current Bitrise Trigger

  27. Test

  28. Test Unit tests before Integration • Server : rspec •

    Client : NO tests yet (use Jest) Functional tests for Build Artifacts • Execute manually
  29. CD

  30. CD No CD • Deploy manually in ReRep • Server

    : kubectl set image • Client : Under preparation(will upload from Bitrise) • Contents Data for Service : Upload from Administrator tools
  31. Deploy Docker images for Server Move docker image to Prod

    from Dev directly when QA finished • Move Docker image in Google Cloud Registry over GCP Project using gcloud command • gcloud container images add-tag
  32. Retrospective

  33. Retrospective Sever Troubles in Prod • No Release Step Troubles

    • One Prod Specific bug • Using “Rails.production?” Ops Client Troubles in Prod • Not Yet
  34. We are hiring!

  35. https://dena.com/jp/recruit/career/engineer/ DeNA is hiring!