func initReleaseMetrics()

in metrics/metrics.go [507:563]


func initReleaseMetrics(pluggables *[]handlers.Pluggable, logger *logrus.Logger, consulHost string, consulPort int) error {
	subsystem := "release"

	severities := []string{"severity::1", "severity::2", "severity::3", "severity::4", "none"}

	pressureGauge, err := metrics.NewGaugeVec(
		metrics.WithName("pressure"),
		metrics.WithSubsystem(subsystem),
		metrics.WithHelp("Number of unreleased merge requests"),
		metrics.WithLabel(labels.FromValues("severity", severities)),
		metrics.WithLabel(labels.MinorVersion("version")),
	)
	if err != nil {
		return err
	}

	*pluggables = append(*pluggables, handlers.NewGauge(pressureGauge))

	// Status (value)
	// 	Open (1): Any commit that reached production is expected to be released with the next monthly release
	// 	Announced (2): Signal the RC tagging date is getting closer
	// 	Tagged_RC (3): RC has been tagged; any commit that has not reached production prior to the tagging time is
	//								not included in the monthly release.
	monthlyStatusGauge, err := metrics.NewGaugeVec(
		metrics.WithName("monthly_status"),
		metrics.WithSubsystem(subsystem),
		metrics.WithHelp("Status of monthly release"),
		metrics.WithLabel(labels.ReleaseDate("release_date")),
		metrics.WithLabel(labels.MinorVersion("version")),
		metrics.WithConsulMemory(consulHost, consulPort, logger),
	)
	if err != nil {
		return err
	}

	*pluggables = append(*pluggables, handlers.NewGauge(monthlyStatusGauge))

	// Status (value)
	// 	Open (1): Any 'security-target' security issue is expected to be processed in the patch release
	// 	Warning (2): Signal the Merging date is getting closer (Friday before release)
	// 	Merged (3): Default branch MRs have been merged; no more security issue will be processed for the patch release
	patchStatusGauge, err := metrics.NewGaugeVec(
		metrics.WithName("patch_status"),
		metrics.WithSubsystem(subsystem),
		metrics.WithHelp("Status of patch release"),
		metrics.WithLabel(labels.ReleaseDate("release_date")),
		metrics.WithLabel(labels.AnyString("versions")),
		metrics.WithConsulMemory(consulHost, consulPort, logger),
	)
	if err != nil {
		return err
	}

	*pluggables = append(*pluggables, handlers.NewGauge(patchStatusGauge))

	return nil
}