Skip to content

Instantly share code, notes, and snippets.

@AlexsJones
Last active October 17, 2016 09:17
Show Gist options
  • Select an option

  • Save AlexsJones/54e790fa919f9d0ecb1aaa37951848a8 to your computer and use it in GitHub Desktop.

Select an option

Save AlexsJones/54e790fa919f9d0ecb1aaa37951848a8 to your computer and use it in GitHub Desktop.
Gitlab and why it's not production ready

Current issues:

####Build process

  • Any change to build configuration essentially requires a new branch to make the change & then a pull request to build it in the gitlab pipeline. Therefore, two seperate changes would essentially spawn N * C builds (N is the number of builds per pipeline, C is changes - On complexity).

  • static YAML files require enormous amounts of repetitive statements as it doesn't support in line interpolation or dynamically injection build variables.

    • Further to this; by way of compromise, the YAML sets environment shell variables, which have to fight ordinality with those set by developers in Xcode or subsequent shell scripts.
  • The fan out build strategy (whilst promoting parrallism) actually creates a block on building as tests will continue to run - despite the primary build failing, and visa versa. It is not an efficient strategy and would be better replaced by a gated build chain.

#####Build Interaction

  • Accessibility to developers is very low as having to use a static YAML file, not only pushes the responsibility over the fence to DevOps, but also has a layer of mysticism about how the DSL works.
    • Further to this point; The entire build process is far too complex and relys on too many downstream tools.
  • No dynamic variable injection through custom build configuration

#####Administration

  • Build machines have no form of management integrated into the CI; meaning restarting, ssh and system load information is not seen.
  • There is no meaningful administration dashboard (other than to show total number CPU's / Memory / Disk - on the gitlab server)
  • Administration UI is clunky and requires you to go into an individual machine (runner) page to see its build history.
  • There is no plugin support
  • Having a single 2 factor auth for a master admin is a complete joke on any system of scale.
  • Completely unintuitive UI requires you to go into a project to see current builds; there is no way to see all build machines and current system load.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment