diff --git a/build/azure-pipelines/common/copyArtifacts.ts b/build/azure-pipelines/common/copyArtifacts.ts index 7ab5d0ff73..95da6374e0 100644 --- a/build/azure-pipelines/common/copyArtifacts.ts +++ b/build/azure-pipelines/common/copyArtifacts.ts @@ -6,24 +6,33 @@ 'use strict'; import * as vfs from 'vinyl-fs'; +import * as path from 'path'; +import * as es from 'event-stream'; +import * as fs from 'fs'; const files = [ '.build/extensions/**/*.vsix', // external extensions '.build/win32-x64/**/*.{exe,zip}', // windows binaries '.build/linux/sha256hashes.txt', // linux hashes - '.build/linux/deb/amd64/deb/*', // linux debs - '.build/linux/rpm/x86_64/*', // linux rpms + '.build/linux/deb/amd64/deb/*.deb', // linux debs + '.build/linux/rpm/x86_64/*.rpm', // linux rpms '.build/linux/server/*', // linux server '.build/linux/archive/*', // linux archive - '.build/docker/**', // docker images - '.build/darwin/**', // darwin binaries + '.build/docker/*', // docker images + '.build/darwin/*', // darwin binaries '.build/version.json' // version information ]; async function main() { return new Promise((resolve, reject) => { const stream = vfs.src(files, { base: '.build', allowEmpty: true }) - .pipe(vfs.dest(process.env.BUILD_ARTIFACTSTAGINGDIRECTORY!)); + .pipe(es.through(file => { + const filePath = path.join(process.env.BUILD_ARTIFACTSTAGINGDIRECTORY!, + //Preserve intermediate directories after .build folder + file.path.substr(path.resolve('.build').length + 1)); + fs.mkdirSync(path.dirname(filePath), { recursive: true }); + fs.renameSync(file.path, filePath); + })); stream.on('end', () => resolve()); stream.on('error', e => reject(e));