build: upload to AZ as well as S3 (#33573)
* build: upload to AZ aswell as S3 * fix: provide env to azput
This commit is contained in:
		
					parent
					
						
							
								0ac6d74536
							
						
					
				
			
			
				commit
				
					
						204b53e7b8
					
				
			
		
					 10 changed files with 345 additions and 93 deletions
				
			
		
							
								
								
									
										48
									
								
								script/lib/azput.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								script/lib/azput.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,48 @@ | |||
| /* eslint-disable camelcase */ | ||||
| const { BlobServiceClient } = require('@azure/storage-blob'); | ||||
| const fs = require('fs'); | ||||
| const path = require('path'); | ||||
| 
 | ||||
| const blobServiceClient = BlobServiceClient.fromConnectionString(process.env.ELECTRON_ARTIFACTS_BLOB_STORAGE); | ||||
| 
 | ||||
| const args = require('minimist')(process.argv.slice(2)); | ||||
| 
 | ||||
| let { prefix = '/', key_prefix = '', _: files } = args; | ||||
| if (prefix && !prefix.endsWith(path.sep)) prefix = path.resolve(prefix) + path.sep; | ||||
| 
 | ||||
| function filenameToKey (file) { | ||||
|   file = path.resolve(file); | ||||
|   if (file.startsWith(prefix)) file = file.substr(prefix.length - 1); | ||||
|   return key_prefix + (path.sep === '\\' ? file.replace(/\\/g, '/') : file); | ||||
| } | ||||
| 
 | ||||
| let anErrorOccurred = false; | ||||
| function next (done) { | ||||
|   const file = files.shift(); | ||||
|   if (!file) return done(); | ||||
|   let key = filenameToKey(file); | ||||
|   // TODO: When we drop s3put, migrate the key to not include atom-shell in the callsites
 | ||||
|   key = key.replace('atom-shell/dist/', 'headers/dist/'); | ||||
|   key = key.replace('atom-shell/symbols/', 'symbols/'); | ||||
|   key = key.replace('atom-shell/tmp/', 'checksums-scratchpad/'); | ||||
|   key = key.replace('electron-artifacts/', 'release-builds/'); | ||||
| 
 | ||||
|   const [containerName, ...keyPath] = key.split('/'); | ||||
|   const blobKey = keyPath.join('/'); | ||||
|   console.log(`Uploading '${file}' to container '${containerName}' with key '${blobKey}'...`); | ||||
| 
 | ||||
|   const containerClient = blobServiceClient.getContainerClient(containerName); | ||||
|   const blockBlobClient = containerClient.getBlockBlobClient(blobKey); | ||||
|   blockBlobClient.uploadFile(file) | ||||
|     .then((uploadBlobResponse) => { | ||||
|       console.log(`Upload block blob ${blobKey} successfully: https://artifacts.electronjs.org/${key}`, uploadBlobResponse.requestId); | ||||
|     }) | ||||
|     .catch((err) => { | ||||
|       console.error(err); | ||||
|       anErrorOccurred = true; | ||||
|     }) | ||||
|     .then(() => next(done)); | ||||
| } | ||||
| next(() => { | ||||
|   process.exit(anErrorOccurred ? 1 : 0); | ||||
| }); | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Samuel Attard
				Samuel Attard