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

Such Great Heights, Code BEAM Lite, Amsterdam 2018

78d85ea26770975ea8c497d7bd722d55?s=47 Saša Jurić
November 30, 2018

Such Great Heights, Code BEAM Lite, Amsterdam 2018

78d85ea26770975ea8c497d7bd722d55?s=128

Saša Jurić

November 30, 2018
Tweet

Transcript

  1. Such great heights @sasajuric aircloak.com

  2. None
  3. sensitive data Aircloak analyst query non sensitive result

  4. aircloak air cloak central common integration_test ...

  5. dev flow pull request based mandatory code review mandatory tests

  6. outgrowing Travis CI long build times flakiness low throughput

  7. solution self-hosting

  8. custom CI simpler for a small problem flexible no additional

    knowledge required
  9. aircloak air cloak central common integration_test ci ...

  10. None
  11. GitHub poller GitHub poll list of branches and PRs

  12. aircloak_ci GitHub poller builds branch x pull request y

  13. pull request x air cloak …

  14. changed component tested components air air integration_test ci ci common

    everything
  15. report success build components await approval report mergeability

  16. if not merge_conflict?(build_state) and tests_passed?(build_state) and pr_approved?(build_state) do: report_mergeable(build_state)

  17. Github.comment_on_issue( build_state, "Pull request can be merged #{AircloakCI.Emoji.happy()}" ) Github.put_status_check_state(

    build_state, "continuous-integration/aircloak/mergeable", "pull request can be merged", :success )
  18. None
  19. %{ compile: [ "mix deps.get", "mix compile" ], test: [

    "mix test", "mix dialyze", "mix format --check-formatted" ] }
  20. test_test = # ... test_dev = # ... test_prod =

    # ... %{ compile: # ..., test: [test_test, test_dev, test_prod] }
  21. # sequence of commands [ "mix deps.get", "mix compile" ]

  22. # also a sequence {:sequence, [ "mix deps.get", "mix compile"

    ]}
  23. # independent commands {:parallel, [ "mix format --check-formatted", "mix test",

    "mix dialyze", ]}
  24. {:sequence, [ "command a", {:parallel, [ "command b", {:sequence, [

    "command c", "command d" ]}, "command e" ]}, "command f" ]}
  25. command a command b command c command e command d

    command f
  26. component command 1 command 2 …

  27. build component 1 component 2 …

  28. builds build 1 build 2 …

  29. not open-source (yet!)

  30. None
  31. uniformity simpler development simpler testing simpler deployment simpler maintenance improved

    collaboration
  32. technical feature built-in options services GenServer, Task service manager Supervisor

    service registry Registry k-v ETS, Mnesia web server Phoenix, Plug, Cowboy periodical jobs :timer, Quantum, Periodic load regulation Jobs, Safetyvalve, Sbroker concurrent flows Flow, GenStage
  33. distributed systems persistence partial deployment

  34. They will see us waving from such great heights Come

    down now, they'll say But everything looks perfect from far away Come down now, but we'll stay The Postal Service
  35. 40% off at manning.com with code ctwcodebeamamsterdam18 links: bit.ly/such-great-heights-amsterdam2018