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

Mobile CI/CD in 2k19

Mobile CI/CD in 2k19

In order to understand how to build your CI/CD pipeline, you need to know what a base technology you use? React-Native, Swift iOS app, Flutter app? Where do you checkout your sources? Where do you want to deploy it? What side capabilities your pipeline should have?

Vladimir Ivanov

July 01, 2019
Tweet

More Decks by Vladimir Ivanov

Other Decks in Programming

Transcript

  1. 3

  2. 4

  3. 5

  4. 6

  5. 8

  6. 9

  7. 10

  8. 19

  9. > run Lint/Static Analysis on the Code > run Unit

    Tests > maintain Build Numbers 19
  10. > run Lint/Static Analysis on the Code > run Unit

    Tests > maintain Build Numbers > build the App from Code 19
  11. > run Lint/Static Analysis on the Code > run Unit

    Tests > maintain Build Numbers > build the App from Code > deploy the App 19
  12. > run Lint/Static Analysis on the Code > run Unit

    Tests > maintain Build Numbers > build the App from Code > deploy the App > notify about status 19
  13. > run Lint/Static Analysis on the Code > run Unit

    Tests > maintain Build Numbers > build the App from Code > deploy the App > notify about status > provide Logs, Artifacts & Build Reports 19
  14. > run Lint/Static Analysis on the Code > run Unit

    Tests > maintain Build Numbers > build the App from Code > deploy the App > notify about status > provide Logs, Artifacts & Build Reports > and actually many more 19
  15. 20

  16. 21

  17. GIT HOSTINGS > Saas: Github, Bitbucket, Gitlab, Azure DevOps, AWS

    CodeCommit > On-premise: Github Enterprise, Gitlab, Bitbucket Server 25
  18. GIT HOSTINGS > Saas: Github, Bitbucket, Gitlab, Azure DevOps, AWS

    CodeCommit > On-premise: Github Enterprise, Gitlab, Bitbucket Server > Ad-Hoc 25
  19. 26

  20. > Checkout different branches > Trigger different builds on VCS

    commit/pull request > Report build status to a VCS back 26
  21. 28

  22. 29

  23. 31

  24. 34

  25. 35

  26. BUILD SHOULD BE > Reliable (isolated&clean) > Fast (on performant

    machines) > Locally reproducible (to debug) 36
  27. BUILD SHOULD BE > Reliable (isolated&clean) > Fast (on performant

    machines) > Locally reproducible (to debug) > Customizable (for envs or other params) 36
  28. BUILD SHOULD BE > Reliable (isolated&clean) > Fast (on performant

    machines) > Locally reproducible (to debug) > Customizable (for envs or other params) > Secure (only allowed persons to create/edit/run builds) 36
  29. SIGN > Secure storage for provisioning profile/signing certificate/keystore > Secure

    storage for password > Account storage for pushing to Google Play/Test flight/3rd party services 37
  30. 39

  31. 40

  32. 43

  33. 46

  34. MISCELLANEOUS > Configuration as code > Debug locally > Centralized

    user management(SSO) > Auto-configuration 48
  35. MISCELLANEOUS > Configuration as code > Debug locally > Centralized

    user management(SSO) > Auto-configuration > Extensions 48
  36. LOCAL JENKINS > Free > Great flexibility > Agents system

    > Decent plugin system > But no containerization out-of-the- box 52
  37. LOCAL JENKINS > Free > Great flexibility > Agents system

    > Decent plugin system > But no containerization out-of-the- box > All support burden is on your shoulders 52
  38. WHEN > For education purposes and student projects > For

    companies which already use Jenkins 53
  39. WHEN > For education purposes and student projects > For

    companies which already use Jenkins > For security paranoids(debatable) 53
  40. 3RD PARTY SERVICES > Circle CI > GitLab CI >

    Nevercode > App Center > Bitrise 56
  41. 3RD PARTY SERVICES > Circle CI > GitLab CI >

    Nevercode > App Center > Bitrise 57
  42. APP CENTER - AZURE DEVOPS > Part of the integrated

    environment(former TFS) > Distribution destinations - GP, TestFlight, Internal 59
  43. APP CENTER - AZURE DEVOPS > Part of the integrated

    environment(former TFS) > Distribution destinations - GP, TestFlight, Internal > Bitbucket, Github, VSTS 59
  44. APP CENTER - AZURE DEVOPS > Part of the integrated

    environment(former TFS) > Distribution destinations - GP, TestFlight, Internal > Bitbucket, Github, VSTS > Configuration as Code 59
  45. APP CENTER - AZURE DEVOPS > Part of the integrated

    environment(former TFS) > Distribution destinations - GP, TestFlight, Internal > Bitbucket, Github, VSTS > Configuration as Code > Mobile Apps as first class citizens 59
  46. APP CENTER - AZURE DEVOPS > Part of the integrated

    environment(former TFS) > Distribution destinations - GP, TestFlight, Internal > Bitbucket, Github, VSTS > Configuration as Code > Mobile Apps as first class citizens > Cloud based 59
  47. APP CENTER - AZURE DEVOPS > Part of the integrated

    environment(former TFS) > Distribution destinations - GP, TestFlight, Internal > Bitbucket, Github, VSTS > Configuration as Code > Mobile Apps as first class citizens > Cloud based > Webhooks 59
  48. APP CENTER - AZURE DEVOPS > Support for ad-hoc git

    servers > Support CI job triggers on push to Any branch 60
  49. APP CENTER - AZURE DEVOPS > Support for ad-hoc git

    servers > Support CI job triggers on push to Any branch > SonarQube Support - 60
  50. APP CENTER - AZURE DEVOPS > Support for ad-hoc git

    servers > Support CI job triggers on push to Any branch > SonarQube Support - > Local debug - 60
  51. APP CENTER - WHEN > You already have Azure DevOps/Azure

    subscription > You're hosted in Bitbucket/Github 61
  52. APP CENTER - WHEN > You already have Azure DevOps/Azure

    subscription > You're hosted in Bitbucket/Github > You only want apps distribution solution 61
  53. 62

  54. NEVERCODE > Mobile Centric CI/CD > Distribution destinations - App

    Store Connect, Google Play, HockeyApp, Crashlytics, TestFairy 63
  55. NEVERCODE > Mobile Centric CI/CD > Distribution destinations - App

    Store Connect, Google Play, HockeyApp, Crashlytics, TestFairy > Bitbucket, GitHub or GitLab 63
  56. NEVERCODE > Mobile Centric CI/CD > Distribution destinations - App

    Store Connect, Google Play, HockeyApp, Crashlytics, TestFairy > Bitbucket, GitHub or GitLab > Cloud based 63
  57. NEVERCODE > Mobile Centric CI/CD > Distribution destinations - App

    Store Connect, Google Play, HockeyApp, Crashlytics, TestFairy > Bitbucket, GitHub or GitLab > Cloud based > Mobile Apps as first class citizens 63
  58. NEVERCODE > Mobile Centric CI/CD > Distribution destinations - App

    Store Connect, Google Play, HockeyApp, Crashlytics, TestFairy > Bitbucket, GitHub or GitLab > Cloud based > Mobile Apps as first class citizens > Webhooks 63
  59. BITRISE > Mobile Centric CI/CD > Distribution destinations - GP,

    TestFlight, TestFairy, App Center, Whatever 66
  60. BITRISE > Mobile Centric CI/CD > Distribution destinations - GP,

    TestFlight, TestFairy, App Center, Whatever > Bitbucket, Github, Custom 66
  61. BITRISE > Mobile Centric CI/CD > Distribution destinations - GP,

    TestFlight, TestFairy, App Center, Whatever > Bitbucket, Github, Custom > Configuration as Code 66
  62. BITRISE > Mobile Centric CI/CD > Distribution destinations - GP,

    TestFlight, TestFairy, App Center, Whatever > Bitbucket, Github, Custom > Configuration as Code > Mobile Apps as first class citizens 66
  63. BITRISE > Mobile Centric CI/CD > Distribution destinations - GP,

    TestFlight, TestFairy, App Center, Whatever > Bitbucket, Github, Custom > Configuration as Code > Mobile Apps as first class citizens > Cloud based 66
  64. BITRISE > Mobile Centric CI/CD > Distribution destinations - GP,

    TestFlight, TestFairy, App Center, Whatever > Bitbucket, Github, Custom > Configuration as Code > Mobile Apps as first class citizens > Cloud based > Webhooks 66
  65. BITRISE > Support for ad-hoc git servers > Support CI

    job triggers on push to Any branch 67
  66. BITRISE > Support for ad-hoc git servers > Support CI

    job triggers on push to Any branch > SonarQube Support with a community extension 67
  67. BITRISE > Support for ad-hoc git servers > Support CI

    job triggers on push to Any branch > SonarQube Support with a community extension > Local debug - 67
  68. BITRISE > Support for ad-hoc git servers > Support CI

    job triggers on push to Any branch > SonarQube Support with a community extension > Local debug - > Open source 67
  69. 68

  70. CONCLUSIONS App Center Nevercode Bitrise Simplicity ✅ Flutter ✅ Flexible

    ✅ Device Cloud ✅ Build cache ✅ Build cache ✅ Crash Reporting ✅ No Xamarin ❌ Different inf. stacks ✅ Difficult customization ❌ No conf as service ❌ Open Source ✅ Funny jokes Slow ❌ 70
  71. 71