github.com/vchain-us/vcn@v0.9.11-0.20210921212052-a2484d23c0b3/pkg/cicontext/ci_context_saver.go (about) 1 /* 2 * Copyright (c) 2018-2020 vChain, Inc. All Rights Reserved. 3 * This software is released under GPL3. 4 * The full license information can be found under: 5 * https://www.gnu.org/licenses/gpl-3.0.en.html 6 * 7 */ 8 9 package cicontext 10 11 import ( 12 "os" 13 ) 14 15 type contextSaver struct { 16 probes []Probe 17 } 18 19 func NewContextSaver() *contextSaver { 20 return &contextSaver{ 21 probes: []Probe{NewGithubProbe(), NewGitlabProbe(), NewJenkinsProbe()}, 22 } 23 } 24 25 // GetCIContextMetadata returns the CI context metadata 26 func (cs *contextSaver) GetCIContextMetadata() map[string]interface{} { 27 r := map[string]interface{}{} 28 for _, k := range CIEnvWhiteList { 29 if val, exist := os.LookupEnv(k); exist { 30 r[k] = val 31 } 32 } 33 for _, probe := range cs.probes { 34 if probe.Detect() { 35 r[CI_TYPE_KEY_NAME] = probe.GetName() 36 break 37 } 38 } 39 return r 40 } 41 42 // ExtendMetadata extends parent metadata with new data 43 func ExtendMetadata(parent map[string]interface{}, data map[string]interface{}) map[string]interface{} { 44 for k, v := range data { 45 parent[k] = v 46 } 47 return parent 48 }