github.com/thetechnoweenie/graven@v1.0.2/repotool/docker_repotool.go (about) 1 package repotool 2 3 import ( 4 "fmt" 5 6 "github.com/cbegin/graven/config" 7 "github.com/cbegin/graven/domain" 8 "github.com/cbegin/graven/util" 9 "path" 10 ) 11 12 type DockerRepotool struct{} 13 14 func (r *DockerRepotool) Login(project *domain.Project, repo string) error { 15 return GenericLogin(project, repo) 16 } 17 18 func (r *DockerRepotool) Release(project *domain.Project, repo string) error { 19 config := config.NewConfig() 20 21 if err := config.Read(); err != nil { 22 return fmt.Errorf("Error reading configuration (try: graven repo --login --name %v): %v", repo, err) 23 } 24 25 username := config.Get(project.Name, fmt.Sprintf("%v-username", repo)) 26 password, err := config.GetSecret(project.Name, fmt.Sprintf("%v-password", repo)) 27 if err != nil { 28 return err 29 } 30 31 repository, ok := project.Repositories[repo] 32 if !ok { 33 return fmt.Errorf("Sorry, could not find repo configuration named %v", repo) 34 } 35 36 if username == "" || password == "" { 37 return fmt.Errorf("Could not find docker credentials. Please log in with: graven repo --login --name [reponame]") 38 } 39 if sout, serr, err := util.RunCommand(project.ProjectPath(), nil, "docker", "login", "-u", username, "-p", password, repository.URL); err != nil { 40 fmt.Printf("Logging into Docker... %v\n%v\n", sout, serr) 41 return err 42 } 43 44 dockerPath := path.Join(repository.URL, repository.Group, repository.Artifact) 45 dockerTag := fmt.Sprintf("%v:%v", dockerPath, project.Version) 46 47 fmt.Printf("Pushing docker image %v\n", dockerTag) 48 if sout, serr, err := util.RunCommand(project.ProjectPath(), nil, "docker", "push", dockerTag); err != nil { 49 fmt.Printf("Running Docker build... %v\n%v\n", sout, serr) 50 return err 51 } 52 53 return nil 54 } 55 56 func (r *DockerRepotool) UploadDependency(project *domain.Project, repo string, dependencyFile, dependencyPath string) error { 57 return fmt.Errorf("Docker repos don't support dependencies.") 58 } 59 60 61 func (g *DockerRepotool) DownloadDependency(project *domain.Project, repo string, dependencyFile, dependencyPath string) error { 62 return fmt.Errorf("Docker repos don't support dependencies.") 63 }