// Copyright © 2019 NAME HERE // // 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 cmd import ( "git.psu.edu/k8s/devtool/config" "git.psu.edu/k8s/devtool/environment" "github.com/fatih/color" "github.com/spf13/cobra" ) // buildCmd represents the build command var ciBuildCmd = &cobra.Command{ Use: "build", Short: "build the application within the CI system", RunE: func(cmd *cobra.Command, args []string) error { conf, err := config.New(configFile) if err != nil { color.New(color.FgRed).PrintFunc()("Error reading configuration file: %s", configFile) return err } err = buildCiDocker(conf) if err != nil { color.Red("Failed to build docker image.") return err } return nil }, } func init() { ciCmd.AddCommand(ciBuildCmd) // Here you will define your flags and configuration settings. // Cobra supports Persistent Flags which will work for this command // and all subcommands, e.g.: // buildCmd.PersistentFlags().String("foo", "", "A help for foo") // Cobra supports local flags which will only run when this command // is called directly, e.g.: // buildCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") } func buildCiDocker(config config.Config) error { color.Blue("Building Docker Containers") for _, deployable := range config.Deployables { dockerfile := deployable.Dockerfile image := deployable.Name dockerImage := dockerRegistry + "/" + dockerRegistryNamespace + "/" + image dockerTag := dockerImage + ":" + imageTag color.New(color.FgGreen).PrintFunc()("Building: ", dockerTag) err := environment.Run(true, "docker", "build", "-t", dockerTag, "-f", dockerfile, ".") if err != nil { return err } color.New(color.FgGreen).PrintFunc()("Pushing Docker image: ", dockerTag) err = environment.Run(true, "docker", "push", dockerImage) if err != nil { return err } } return nil }