Skip to content

Commit cd55149

Browse files
authored
retry gem install and gem update commands (#25)
* retry gem install and gem update commands * error log fix
1 parent fc0aaf0 commit cd55149

File tree

7 files changed

+122
-26
lines changed

7 files changed

+122
-26
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
.bitrise*
22
.DS_Store
33
_tmp/
4+
.gows*
45

Godeps/Godeps.json

Lines changed: 13 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gows.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package_name: github.com/bitrise-io/steps-deploy-to-itunesconnect-deliver

main.go

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/bitrise-io/go-utils/command"
1010
"github.com/bitrise-io/go-utils/command/rubycommand"
1111
"github.com/bitrise-io/go-utils/log"
12+
"github.com/bitrise-io/go-utils/retry"
1213
"github.com/bitrise-tools/go-steputils/input"
1314
"github.com/kballard/go-shellquote"
1415
)
@@ -146,31 +147,50 @@ func ensureGemInstalled(gemName string, isUpgrade bool) error {
146147
} else {
147148
log.Printf("updating %s...", gemName)
148149

149-
cmds, err := rubycommand.GemUpdate(gemName)
150+
err := retry.Times(2).Try(func(attempt uint) error {
151+
if attempt > 0 {
152+
log.Warnf("%d attempt failed", attempt+1)
153+
}
154+
155+
cmds, err := rubycommand.GemUpdate(gemName)
156+
if err != nil {
157+
return fmt.Errorf("Failed to create command, error: %s", err)
158+
}
159+
160+
for _, cmd := range cmds {
161+
if out, err := cmd.RunAndReturnTrimmedCombinedOutput(); err != nil {
162+
return fmt.Errorf("Gem update failed, output: %s, error: %s", out, err)
163+
}
164+
}
165+
166+
return nil
167+
})
168+
169+
return err
170+
}
171+
} else {
172+
log.Printf("%s NOT yet installed, attempting install...", gemName)
173+
174+
err := retry.Times(2).Try(func(attempt uint) error {
175+
if attempt > 0 {
176+
log.Warnf("%d attempt failed", attempt+1)
177+
}
178+
179+
cmds, err := rubycommand.GemInstall(gemName, "")
150180
if err != nil {
151181
return fmt.Errorf("Failed to create command, error: %s", err)
152182
}
153183

154184
for _, cmd := range cmds {
155-
if err := cmd.Run(); err != nil {
156-
return fmt.Errorf("Gem update failed, error: %s", err)
185+
if out, err := cmd.RunAndReturnTrimmedCombinedOutput(); err != nil {
186+
return fmt.Errorf("Gem install failed, output: %s, error: %s", out, err)
157187
}
158188
}
159-
return nil
160-
}
161-
} else {
162-
log.Printf("%s NOT yet installed, attempting install...", gemName)
163189

164-
cmds, err := rubycommand.GemInstall(gemName, "")
165-
if err != nil {
166-
return fmt.Errorf("Failed to create command, error: %s", err)
167-
}
190+
return nil
191+
})
168192

169-
for _, cmd := range cmds {
170-
if err := cmd.Run(); err != nil {
171-
return fmt.Errorf("Gem install failed, error: %s", err)
172-
}
173-
}
193+
return err
174194
}
175195

176196
return nil

vendor/github.com/bitrise-io/go-utils/retry/retry.go

Lines changed: 57 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/bitrise-tools/go-steputils/input/input.go

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/kballard/go-shellquote/quote.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)