mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-30 21:30:16 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| /*
 | |
| Copyright 2014 The Kubernetes Authors All rights reserved.
 | |
| 
 | |
| Licensed under the Apache License, Version 2.0 (the "License");
 | |
| you may not use this file except in compliance with the License.
 | |
| You may obtain a copy of the License at
 | |
| 
 | |
|     http://www.apache.org/licenses/LICENSE-2.0
 | |
| 
 | |
| Unless required by applicable law or agreed to in writing, software
 | |
| distributed under the License is distributed on an "AS IS" BASIS,
 | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| See the License for the specific language governing permissions and
 | |
| limitations under the License.
 | |
| */
 | |
| 
 | |
| package version
 | |
| 
 | |
| import "github.com/prometheus/client_golang/prometheus"
 | |
| 
 | |
| // Info contains versioning information.
 | |
| // TODO: Add []string of api versions supported? It's still unclear
 | |
| // how we'll want to distribute that information.
 | |
| type Info struct {
 | |
| 	Major        string `json:"major"`
 | |
| 	Minor        string `json:"minor"`
 | |
| 	GitVersion   string `json:"gitVersion"`
 | |
| 	GitCommit    string `json:"gitCommit"`
 | |
| 	GitTreeState string `json:"gitTreeState"`
 | |
| }
 | |
| 
 | |
| // Get returns the overall codebase version. It's for detecting
 | |
| // what code a binary was built from.
 | |
| func Get() Info {
 | |
| 	// These variables typically come from -ldflags settings and in
 | |
| 	// their absence fallback to the settings in pkg/version/base.go
 | |
| 	return Info{
 | |
| 		Major:        gitMajor,
 | |
| 		Minor:        gitMinor,
 | |
| 		GitVersion:   gitVersion,
 | |
| 		GitCommit:    gitCommit,
 | |
| 		GitTreeState: gitTreeState,
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // String returns info as a human-friendly version string.
 | |
| func (info Info) String() string {
 | |
| 	return info.GitVersion
 | |
| }
 | |
| 
 | |
| func init() {
 | |
| 	buildInfo := prometheus.NewGaugeVec(
 | |
| 		prometheus.GaugeOpts{
 | |
| 			Name: "kubernetes_build_info",
 | |
| 			Help: "A metric with a constant '1' value labeled by major, minor, git version, git commit and git tree state from which Kubernetes was built.",
 | |
| 		},
 | |
| 		[]string{"major", "minor", "gitVersion", "gitCommit", "gitTreeState"},
 | |
| 	)
 | |
| 	info := Get()
 | |
| 	buildInfo.WithLabelValues(info.Major, info.Minor, info.GitVersion, info.GitCommit, info.GitTreeState).Set(1)
 | |
| 
 | |
| 	prometheus.MustRegister(buildInfo)
 | |
| }
 |