首页 > 解决方案 > 如何从 Jenkins 将远程机器上的文件上传到 Amazon s3

问题描述

我正在从 Jenkins 远程运行我的量角器浏览器测试到虚拟机。当我为 default_directory 设置的位置在项目的同一存储库中但下载的文件保存在远程机器下载文件夹中时,如何将我在远程机器上下载的文件上传到 Amazon s3?

var downloadsPath = path.resolve(__dirname, '../e2e/downloads');
multiCapabilities:
[{
    'browserName': 'chrome',
    specs: 'features/*.feature',
    'chromeOptions': {
        prefs: {
            download: {
                'prompt_for_download': false,
                'directory_upgrade': true,
                'default_directory': downloadsPath
            }
        }
    }
}],

在我的规范文件中:

const downloadDirectory = './e2e/downloads';
fs.readdir(downloadDirectory, async (err, files) => {
            if (err) throw err;
            return await Promise.all(files.map(file => {

                var s3 = new AWS.S3();
                var putObjectPromise = s3.putObject({
                    Bucket: 'reports',
                    Key: file,
                    Body: fs.createReadStream(path.join(downloadDirectory, '/' , file)),
                    ACL: 'public-read'
                }).promise();

                return putObjectPromise.then(function(data) {

                    return Promise.resolve(true);
                }).catch(function(err) {

                    return Promise.reject(err);
                });
            }));
        });

标签: javascriptnode.jsprotractorcucumber

解决方案


推荐阅读