File tree Expand file tree Collapse file tree 1 file changed +28
-5
lines changed Expand file tree Collapse file tree 1 file changed +28
-5
lines changed Original file line number Diff line number Diff line change @@ -29,12 +29,35 @@ runs:
2929
3030 const idToken = await core.getIDToken(aud)
3131
32- const providerTokenResponse = await fetch(`${apiBaseURL}/tokens/auth/login`, {
33- method: "POST",
34- headers: {
35- "Authorization": `Bearer ${idToken}`
32+ const isRetryableError = (response) => {
33+ return response.status >= 500 || response.status === 429
34+ }
35+
36+ const loginWithRetries = async (tries) => {
37+ const providerTokenResponse = await fetch(`${apiBaseURL}/tokens/auth/login`, {
38+ method: "POST",
39+ headers: {
40+ "Authorization": `Bearer ${idToken}`
41+ }
42+ })
43+
44+ if (providerTokenResponse.ok) {
45+ return providerTokenResponse
46+ } else {
47+ if (tries > 0 && isRetryableError(providerTokenResponse)) {
48+ console.log(`Failed to get provider token: ${providerTokenResponse.status} ${providerTokenResponse.statusText}. Retrying...`)
49+
50+ // Random backoff between 0 and 3 seconds
51+ await new Promise(resolve => setTimeout(resolve, Math.floor(Math.random() * 3000)))
52+
53+ return loginWithRetries(tries - 1)
54+ } else {
55+ return providerTokenResponse
56+ }
3657 }
37- })
58+ }
59+
60+ const providerTokenResponse = await loginWithRetries(3)
3861
3962 if (providerTokenResponse.ok) {
4063 const providerTokenJson = await providerTokenResponse.json()
You can’t perform that action at this time.
0 commit comments