diff --git a/.travis.yml b/.travis.yml index 2d12b518fa..7b22b6d1a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -47,7 +47,7 @@ jobs: (./scripts/start.sh -dev -t -ss -vjsapi alpha || exit 1;); fi - stage: Packaging test - script: (npm run build-lib || exit 1;); + script: (npm run build-lib || exit 1;) && node ./scripts/upload-build-lib-in-cs.js -u $E2E_USERNAME -p $E2E_PASSWORD --host $E2E_HOST -f $TRAVIS_BUILD_NUMBER - stage: Test Update version 2.0.0 env: STAGE=test-BC script: ./scripts/test-e2e-bc.sh @@ -70,7 +70,7 @@ jobs: if: tag =~ .*beta.* script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n alfresco-modeler-app - stage: Create Shell dist - script: ./copy-dist-node.sh; npm run build:dist; node ./scripts/upload-build-in-cs.js -u $E2E_USERNAME -p $E2E_PASSWORD --host $E2E_HOST -f $TRAVIS_BUILD_NUMBER + script: rm -rf ./node_modules/@alfresco; node ./scripts/download-build-lib-in-cs.js -u $E2E_USERNAME -p $E2E_PASSWORD --host $E2E_HOST -f $TRAVIS_BUILD_NUMBER; npm run build:dist; node ./scripts/upload-build-in-cs.js -u $E2E_USERNAME -p $E2E_PASSWORD --host $E2E_HOST -f $TRAVIS_BUILD_NUMBER - stage: e2e Test # Test core env: STAGE=core script: node ./scripts/download-build-in-cs.js --username $E2E_USERNAME --password $E2E_USERNAME --host $E2E_HOST --folder $TRAVIS_BUILD_NUMBER; ./scripts/test-e2e-lib.sh -host localhost:4200 -proxy $E2E_HOST -u $E2E_USERNAME -p $E2E_PASSWORD -e $E2E_EMAIL -b -save --folder core --skip-lint --use-dist diff --git a/scripts/copy-dist-node.sh b/scripts/copy-dist-node.sh deleted file mode 100644 index 1e24119b92..0000000000 --- a/scripts/copy-dist-node.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -cd $DIR/../ - -echo "====== COPY new build in node_modules ===== " - -rm -rf ../node_modules/@alfresco - -mkdir -p $DIR/../node_modules/@alfresco/adf-core -mkdir -p $DIR/../node_modules/@alfresco/adf-content-services -mkdir -p $DIR/../node_modules/@alfresco/adf-process-services -mkdir -p $DIR/../node_modules/@alfresco/adf-insights - -cp -R $DIR/../lib/dist/core/* $DIR/../node_modules/@alfresco/adf-core -cp -R $DIR/../lib/dist/content-services/* $DIR/../node_modules/@alfresco/adf-content-services -cp -R $DIR/../lib/dist/process-services/* $DIR/../node_modules/@alfresco/adf-process-services -cp -R $DIR/../lib/dist/insights/* $DIR/../node_modules/@alfresco/adf-insights diff --git a/scripts/download-build-in-cs.js b/scripts/download-build-in-cs.js index d71bff956f..dec137df00 100755 --- a/scripts/download-build-in-cs.js +++ b/scripts/download-build-in-cs.js @@ -8,8 +8,6 @@ var archiver = require('archiver'); var unzip = require('unzip-stream'); var stream = require('unzip-stream'); -var exec = require('child_process').exec; - replaceHrefInIndex = (folder) => { fs.readFile(`demo-shell/${folder}/index.html`, 'utf8', function (err, data) { if (err) { @@ -72,7 +70,6 @@ async function main() { let newFolder = path.join(__dirname, `../demo-shell/${outputFolder}`) fs.rename(oldFolder, newFolder, (err) => { - // if (err) throw err; console.log('renamed complete'); }); diff --git a/scripts/download-build-lib-in-cs.js b/scripts/download-build-lib-in-cs.js new file mode 100644 index 0000000000..2b799f19bd --- /dev/null +++ b/scripts/download-build-lib-in-cs.js @@ -0,0 +1,85 @@ +var program = require('commander'); +var AlfrescoApi = require('alfresco-js-api-node'); +var http = require('http'); + +var fs = require('fs'); +var path = require('path'); +var archiver = require('archiver'); +var unzip = require('unzip-stream'); +var stream = require('unzip-stream'); + +var exec = require('child_process').exec; + +var alfrescoJsApi; + +downloadZip = async(url, pacakge) => { + console.log(`Download ${pacakge}`) + var file = fs.createWriteStream(`${pacakge}.zip`); + return await http.get(`http://${url}`, (response) => { + response.pipe(file); + file.on('finish', async () => { + console.log(`Unzip ${pacakge}` + path.join(__dirname, `../${pacakge}.zip`)); + fs.createReadStream(path.join(__dirname, `../${pacakge}.zip`)) + .pipe(unzip.Extract({path: path.join(__dirname, '../node_modules/@alfresco/')})) + // .on('finish', () => { + // setTimeout(() => { + // let oldFolder = path.join(__dirname, `../demo-shell/demo.zip`) + // let newFolder = path.join(__dirname, `../demo-shell/${outputFolder}`) + // + // fs.rename(oldFolder, newFolder, (err) => { + // console.log('renamed complete'); + // }); + // + // }, 10000); + // + // }) + }); + }); +} + +getUrl = async (folder, pacakge) => { + let zipDemoNode; + + try { + zipDemoNode = await alfrescoJsApi.nodes.getNode('-my-', { + 'relativePath': `Builds/${folder}/${pacakge}.zip` + }); + } catch (error) { + console.log('error: ' + error); + } + + return await alfrescoJsApi.content.getContentUrl(zipDemoNode.entry.id, true); +} + +async function main() { + + program + .version('0.1.0') + .option('-p, --password [type]', 'password') + .option('-u, --username [type]', 'username') + .option('--base-href [type]', '') + .option('-f, --folder [type]', 'Name of the folder') + .option('-host, --host [type]', 'URL of the CS') + .parse(process.argv); + + alfrescoJsApi = new AlfrescoApi({ + provider: 'ECM', + hostEcm: program.host + }); + + alfrescoJsApi.login(program.username, program.password); + + let coreUrl = await getUrl(program.folder, 'core'); + downloadZip(coreUrl, 'core'); + + let contentUrl = await getUrl(program.folder, 'content-services'); + downloadZip(contentUrl, 'content-services'); + + let processUrl = await getUrl(program.folder, 'process-services'); + downloadZip(processUrl, 'process-services'); + + let insightUrl = await getUrl(program.folder, 'insights'); + downloadZip(insightUrl, 'insights'); +} + +main(); diff --git a/scripts/upload-build-lib-in-cs.js b/scripts/upload-build-lib-in-cs.js new file mode 100644 index 0000000000..c62ef5da33 --- /dev/null +++ b/scripts/upload-build-lib-in-cs.js @@ -0,0 +1,97 @@ +var program = require('commander'); +var AlfrescoApi = require('alfresco-js-api-node'); + +var fs = require('fs'); +var path = require('path'); +var archiver = require('archiver'); + +writeZipLib = async function (zipName, zipFolder) { + + if (!fs.existsSync(zipFolder)) { + fs.mkdirSync(zipFolder); + } + + // create a file to stream archive data to. + let output = fs.createWriteStream(path.join(zipFolder, `${zipName}.zip`)); + let archive = archiver('zip', { + zlib: {level: 9} // Sets the compression level. + }); + + archive.pipe(output); + archive.directory(path.join(__dirname, `../lib/dist/${zipName}`), zipName); + + return archive.finalize(); +}; + +async function main() { + + program + .version('0.1.0') + .usage('[options] ') + .option('-p, --password [type]', 'password') + .option('-u, --username [type]', 'username') + .option('-f, --folder [type]', 'Name of the folder') + .option('-host, --host [type]', 'URL of the CS') + .parse(process.argv); + + let alfrescoJsApi = new AlfrescoApi({ + provider: 'ECM', + hostEcm: program.host + }); + + let zipFolder = path.join(__dirname, '/../lib/dist/zip/'); + + await this.writeZipLib('core', zipFolder); + await this.writeZipLib('content-services', zipFolder); + await this.writeZipLib('process-services', zipFolder); + await this.writeZipLib('insights', zipFolder); + + let files = fs.readdirSync(path.join(__dirname, '../lib/dist/zip')); + + if (files && files.length > 0) { + + alfrescoJsApi.login(program.username, program.password); + let folder; + + if (!program.folder) { + program.folder = Date.now(); + } + + try { + folder = await alfrescoJsApi.nodes.addNode('-my-', { + 'name': program.folder, + 'relativePath': `Builds`, + 'nodeType': 'cm:folder' + }, {}, { + 'overwrite': true + }); + } catch (error) { + console.log('error' + error); + } + + for (const fileName of files) { + + let pathFile = path.join(__dirname, '../lib/dist/zip', fileName); + + console.log('Upload ' + pathFile); + let file = fs.createReadStream(pathFile); + + try { + await alfrescoJsApi.upload.uploadFile( + file, + '', + folder.entry.id, + null, + { + 'name': file.name, + 'nodeType': 'cm:content' + }); + + } catch (error) { + console.log('error' + error); + } + } + } +} + +main();