@@ -137,8 +137,33 @@ func (d *DeployConfig) Deploy(generatedConfig *generated.Config, forceDeploy boo
137137 return fmt .Errorf ("Error hashing chart directory: %v" , err )
138138 }
139139
140+ // Get HelmClient
141+ helmClient , err := helm .NewClient (d .KubeClient , d .Log , false )
142+ if err != nil {
143+ return err
144+ }
145+
146+ // Check if redeploying is necessary
147+ reDeploy := forceDeploy || generatedConfig .ChartHashs [chartPath ] != hash
148+ if reDeploy == false {
149+ releases , err := helmClient .Client .ListReleases ()
150+ if err != nil {
151+ return err
152+ }
153+
154+ reDeploy = true
155+ if releases != nil {
156+ for _ , release := range releases .Releases {
157+ if release .GetName () == releaseName {
158+ reDeploy = false
159+ break
160+ }
161+ }
162+ }
163+ }
164+
140165 // Check if re-deployment is necessary
141- if forceDeploy || generatedConfig . ChartHashs [ chartPath ] != hash {
166+ if reDeploy {
142167 d .Log .StartWait ("Deploying helm chart" )
143168 defer d .Log .StopWait ()
144169
@@ -150,14 +175,7 @@ func (d *DeployConfig) Deploy(generatedConfig *generated.Config, forceDeploy boo
150175 return fmt .Errorf ("Couldn't deploy chart, error reading from chart values %s: %v" , chartPath + "values.yaml" , err )
151176 }
152177
153- // Get HelmClient
154- helmClient , err := helm .NewClient (d .KubeClient , d .Log , false )
155- if err != nil {
156- return err
157- }
158-
159178 containerValues := map [string ]interface {}{}
160-
161179 for imageName , imageConf := range * config .Images {
162180 container := map [string ]interface {}{}
163181 container ["image" ] = registry .GetImageURL (generatedConfig , imageConf , true )
0 commit comments