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.