github.com/konsorten/ktn-build-info@v1.0.11/ver/teamcity.go (about) 1 package ver 2 3 import ( 4 "fmt" 5 "os" 6 "strconv" 7 8 log "github.com/sirupsen/logrus" 9 ) 10 11 func IsTeamCityAvailable() bool { 12 return os.Getenv("TEAMCITY_VERSION") != "" 13 } 14 15 func TryReadFromTeamCity(ignoreBuildNumber bool, ignoreRevision bool, ignoreName bool) (*VersionInformation, error) { 16 if !IsTeamCityAvailable() { 17 return nil, nil 18 } 19 20 vi := MakeVersionInformation() 21 22 // read build number (from meta project) 23 if !ignoreBuildNumber && vi.Build <= 0 { 24 bn := os.Getenv("BUILDMETA_BUILD_NUMBER") 25 26 if bn != "" { 27 vi.Build, _ = strconv.Atoi(bn) 28 29 log.Debugf("Found TeamCity build number: %v", vi.Build) 30 } 31 } 32 33 // read build number 34 if !ignoreBuildNumber && vi.Build <= 0 { 35 bn := os.Getenv("BUILD_NUMBER") 36 37 if bn != "" { 38 vi.Build, _ = strconv.Atoi(bn) 39 40 log.Debugf("Found TeamCity build number: %v", vi.Build) 41 } 42 } 43 44 // read revision 45 if !ignoreRevision && vi.Revision == "" { 46 bn := os.Getenv("BUILD_VCS_NUMBER") 47 48 if bn != "" { 49 vi.Revision = bn 50 51 log.Debugf("Found TeamCity VCS revision: %v", vi.Revision) 52 } 53 } 54 55 // read project name 56 if !ignoreName && vi.Name == "" { 57 bn := os.Getenv("TEAMCITY_PROJECT_NAME") 58 59 if bn != "" { 60 vi.Name = bn 61 62 log.Debugf("Found TeamCity project name: %v", vi.Name) 63 } 64 } 65 66 return vi, nil 67 } 68 69 func (vi *VersionInformation) WriteToTeamCity() error { 70 if !IsTeamCityAvailable() { 71 return nil 72 } 73 74 // don't use logger, but write to console directly 75 fmt.Printf("##teamcity[buildNumber '%v']", vi.VersionString()) 76 77 return nil 78 }