Skip to content

CI: Enable all services and run gdk install and update in scheduled pipelines

Overview

Integration tests for GDK are slow and expensive so we cannot run every service combination in CI in every MR.

As suggested in !4521 (comment 2356854095) we could enable services in scheduled pipelines and run gdk install and gdk update.

Business impact

  • Reduces CI infrastructure costs by running comprehensive service testing only at scheduled intervals rather than on every merge request
  • Accelerates development cycles by providing faster MR pipeline feedback while maintaining thorough testing coverage through scheduled runs
  • Identifies potential breaking changes and integration issues across the full service matrix through regular scheduled testing, preventing disruption

Example script to enable all services

yaml = GDK.config.dump!

def find_enable(key, value, slugs)
  p slugs => key
  case value
  when Hash
    value.flat_map { |k, v| find_enable(k, v, slugs + [k]) }.compact
  when Array
    value.each.with_index.flat_map { |v, i| find_enable(i, v, slugs + [i]) }.compact
  else
    slugs.join(".") if key == 'enabled'
  end
end

enabled =  yaml.flat_map do |key, value|
  find_enable(key, value, [key])
end.compact.to_h { |k| [k, true] }

p enabled

GDK.config.bury_multiple!(enabled)

GDK.config.save_yaml!

Impacted categories

The following categories relate to this issue:

Edited by Mohga Gamea