github.com/munnerz/test-infra@v0.0.0-20190108210205-ce3d181dc989/experiment/bootstrap/main.go (about) 1 /* 2 Copyright 2017 The Kubernetes Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 // bootstrap implements a drop-in-replacement for jenkins/bootstrap.py 18 package main 19 20 import ( 21 "fmt" 22 "log" 23 "os" 24 ) 25 26 // Constant Keys for known environment variables and URLs 27 const ( 28 BuildNumberEnv string = "BUILD_NUMBER" 29 BootstrapEnv string = "BOOTSTRAP_MIGRATION" 30 CloudSDKEnv string = "CLOUDSDK_CONFIG" 31 GCEPrivKeyEnv string = "JENKINS_GCE_SSH_PRIVATE_KEY_FILE" 32 GCEPubKeyEnv string = "JENKINS_GCE_SSH_PUBLIC_KEY_FILE" 33 AWSPrivKeyEnv string = "JENKINS_AWS_SSH_PRIVATE_KEY_FILE" 34 AWSPubKeyEnv string = "JENKINS_AWS_SSH_PUBLIC_KEY_FILE" 35 GubernatorBaseBuildURL string = "https://gubernator.k8s.io/build/" 36 HomeEnv string = "HOME" 37 JenkinsHomeEnv string = "JENKINS_HOME" 38 JobEnv string = "JOB_NAME" 39 NodeNameEnv string = "NODE_NAME" 40 ServiceAccountEnv string = "GOOGLE_APPLICATION_CREDENTIALS" 41 WorkspaceEnv string = "WORKSPACE" 42 GCSArtifactsEnv string = "GCS_ARTIFACTS_DIR" 43 ) 44 45 // Bootstrap is the "real main" for bootstrap, after argument parsing 46 func Bootstrap(args *Args) error { 47 repos, err := ParseRepos(args.Repo) 48 if err != nil { 49 return err 50 } 51 52 originalCWD, err := os.Getwd() 53 if err != nil { 54 return fmt.Errorf("failed to get CWD! %v", err) 55 } 56 57 build := "fake" // TODO: port computing this value 58 59 var paths *Paths 60 if args.Upload != "" { 61 if repos.Main().Pull != "" { 62 paths, err = PRPaths(args.Upload, repos, args.Job, build) 63 if err != nil { 64 return err 65 } 66 } else { 67 paths = CIPaths(args.Upload, args.Job, build) 68 } 69 // TODO(fejta): Replace env var below with a flag eventually. 70 os.Setenv(GCSArtifactsEnv, paths.Artifacts) 71 } 72 73 // TODO(bentheelder): mimic the rest of bootstrap.py here ¯\_(ツ)_/¯ 74 // Printing these so that it compiles ¯\_(ツ)_/¯ 75 fmt.Println(originalCWD) 76 fmt.Println(paths) 77 return nil 78 } 79 80 func main() { 81 args, err := ParseArgs(os.Args[1:]) 82 if err != nil { 83 log.Fatalf("error parsing args: %v", err) 84 } 85 err = Bootstrap(args) 86 if err != nil { 87 log.Fatalf("bootstrap error: %v", err) 88 } 89 }