in src/tasks/CodeDeployDeployApplication/TaskOperations.ts [101:157]
private async uploadBundle(): Promise<string> {
let archiveName: string
let autoCreatedArchive = false
if (tl.stats(this.taskParameters.revisionBundle).isDirectory()) {
autoCreatedArchive = true
archiveName = await this.createDeploymentArchive(
this.taskParameters.revisionBundle,
this.taskParameters.applicationName
)
} else {
archiveName = this.taskParameters.revisionBundle
}
let key: string
const bundleFilename = path.basename(archiveName)
if (this.taskParameters.bundlePrefix) {
key = `${this.taskParameters.bundlePrefix}/${bundleFilename}`
} else {
key = bundleFilename
}
try {
console.log(tl.loc('UploadingBundle', archiveName, key, this.taskParameters.bucketName))
const readStream = fs.createReadStream(archiveName)
readStream.on('error', err => {
if (err) {
throw err
}
})
const request: S3.PutObjectRequest = {
Bucket: this.taskParameters.bucketName,
Key: key,
Body: readStream
}
if (this.taskParameters.filesAcl && this.taskParameters.filesAcl !== 'none') {
request.ACL = this.taskParameters.filesAcl
}
await this.s3Client.upload(request).promise()
console.log(tl.loc('BundleUploadCompleted'))
return key
} catch (err) {
console.error(tl.loc('BundleUploadFailed', (err as Error).message), err)
throw err
} finally {
// clean up the archive if we created one
this.cleanDeploymentArchive(autoCreatedArchive, archiveName)
}
}