Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CI CD Test on ReRep

November 08, 2018

CI CD Test on ReRep


November 08, 2018

More Decks by Spring_MT

Other Decks in Technology


  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. Using FrameWorks API Server • Ruby on Rails Client •

    iOS and Android • React Native + TypeScript • Web(JS) • React
  4. Policy Use existing Tools and Services for High Productivity •

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

    using Swagger • https://speakerdeck.com/spring_mt/api-spec-driven- development-with-swagger
  6. 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
  7. Policy Stateless and Immutable Build Artifacts • Artifacts will work

    everywhere without modifying • Artifacts will be deployable regardless of previous contexts
  8. Artifacts in ReRep Server • Docker image Client • ipa

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

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

  11. 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
  12. 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
  13. CI for Server  ! "    

         ςετ    Run Tests
  14. 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
  15. 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
  16. Test Unit tests before Integration • Server : rspec •

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

  18. 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
  19. 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
  20. Retrospective Sever Troubles in Prod • No Release Step Troubles

    • One Prod Specific bug • Using “Rails.production?” Ops Client Troubles in Prod • Not Yet