@@ -42,7 +42,7 @@ export class GitHubPublisher implements Publisher {
42
42
43
43
private async init ( ) : Promise < Release > {
44
44
// we don't use "Get a release by tag name" because "tag name" means existing git tag, but we draft release and don't create git tag
45
- let releases = await gitHubRequest < Array < Release > > ( `/repos/${ this . owner } /${ this . repo } /releases` , this . token )
45
+ const releases = await gitHubRequest < Array < Release > > ( `/repos/${ this . owner } /${ this . repo } /releases` , this . token )
46
46
for ( let release of releases ) {
47
47
if ( release . tag_name === this . tag ) {
48
48
if ( ! release . draft ) {
@@ -75,6 +75,7 @@ export class GitHubPublisher implements Publisher {
75
75
76
76
const parsedUrl = parseUrl ( release . upload_url . substring ( 0 , release . upload_url . indexOf ( "{" ) ) + "?name=" + fileName )
77
77
const fileStat = await stat ( path )
78
+ let badGatewayCount = 0
78
79
uploadAttempt: for ( let i = 0 ; i < 3 ; i ++ ) {
79
80
const progressBar = ( < ReadStream > process . stdin ) . isTTY ? new ProgressBar ( `Uploading ${ fileName } [:bar] :percent :etas` , {
80
81
total : fileStat . size ,
@@ -107,8 +108,7 @@ export class GitHubPublisher implements Publisher {
107
108
}
108
109
catch ( e ) {
109
110
if ( e instanceof HttpError ) {
110
- const httpError = < HttpError > e
111
- if ( httpError . response . statusCode === 422 && httpError . description != null && httpError . description . errors != null && httpError . description . errors [ 0 ] . code === "already_exists" ) {
111
+ if ( e . response . statusCode === 422 && e . description != null && e . description . errors != null && e . description . errors [ 0 ] . code === "already_exists" ) {
112
112
// delete old artifact and re-upload
113
113
log ( "Artifact %s already exists, overwrite one" , fileName )
114
114
const assets = await gitHubRequest < Array < Asset > > ( `/repos/${ this . owner } /${ this . repo } /releases/${ release . id } /assets` , this . token )
@@ -122,6 +122,9 @@ export class GitHubPublisher implements Publisher {
122
122
log ( "Artifact %s not found, trying to upload again" , fileName )
123
123
continue
124
124
}
125
+ else if ( e . response . statusCode === 502 && badGatewayCount ++ < 3 ) {
126
+ continue
127
+ }
125
128
}
126
129
127
130
throw e
0 commit comments