[no-issue] fix deploy PR script (#4065)

* fix deploy PR script

* change docker ignore

* create subfolder

* rename script
This commit is contained in:
Eugenio Romano
2018-12-12 15:14:37 +00:00
committed by GitHub
parent 0b1cfcf8fe
commit 511087f6b1
9 changed files with 194 additions and 762 deletions

View File

@@ -1,12 +1,16 @@
.git
.github
.vscode
assets
coverage
docs
e2e
e2e-output
node_modules
scripts
src
lib
integration
/demo-shell/config/
tools
demo-shell/src/
demo-shell/resources/

View File

@@ -180,7 +180,7 @@ jobs:
(./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e $E2E_EMAIL -b -save --folder insights --skip-lint --use-dist || exit 1;);
fi
- stage: Create Docker PR
script: (./scripts/pr-publish.sh -n $TRAVIS_BUILD_NUMBER -r $REPO_DOCKER -u $USERNAME_DOCKER -p $PASSWORD_DOCKER || exit 1)
script: node ./scripts/move-dist-folder.js --base-href $TRAVIS_BUILD_NUMBER && (./scripts/pr-publish.sh -n $TRAVIS_BUILD_NUMBER -r $REPO_DOCKER -u $USERNAME_DOCKER -p $PASSWORD_DOCKER || exit 1)
- stage: Deploy Docker PR
script: node --no-deprecation ./scripts/pr-deploy.js -n $TRAVIS_BUILD_NUMBER -u $RANCHER_TOKEN -p $RANCHER_SECRET -s $REPO_RANCHER --image "docker:$REPO_DOCKER/adf/demo-shell:$TRAVIS_BUILD_NUMBER" --env $ENVIRONMENT_NAME -r $ENVIRONMENT_URL || exit 1

455
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -112,7 +112,6 @@
"@types/node": "6.0.90",
"ajv-cli": "^3.0.0",
"angular2-template-loader": "0.6.2",
"archiver": "^3.0.0",
"astrolabe": "^0.3.6",
"autoprefixer": "6.5.4",
"bundlesize": "^0.15.3",
@@ -153,6 +152,7 @@
"mdast-zone": "^3.0.1",
"merge-stream": "1.0.1",
"nconf": "^0.10.0",
"ncp": "^2.0.0",
"ng-packagr": "4.4.0",
"node-sass": "4.9.2",
"protractor": "^5.4.0",
@@ -174,9 +174,8 @@
"tslib": "^1.9.0",
"tslint": "5.9.1",
"typedoc": "^0.11.1",
"unist-util-select": "^2.0.0",
"typescript": "^3.1.6",
"unzip-stream": "^0.3.0",
"unist-util-select": "^2.0.0",
"url-join": "^4.0.0",
"webpack-bundle-analyzer": "^2.13.1",
"webpack-cli": "^3.1.0",
@@ -198,11 +197,15 @@
},
{
"path": "./lib/dist/core/bundles/adf-core.umd.min.js",
"maxSize": "150 kb"
"maxSize": "110 kb"
},
{
"path": "./lib/dist/process-services-cloud/bundles/adf-process-services-cloud.umd.min.js",
"maxSize": "50 kb"
"maxSize": "20 kb"
},
{
"path": "./lib/dist/extensions/bundles/adf-extensions.umd.min.js",
"maxSize": "5 kb"
}
],
"engines": {

View File

@@ -1,103 +0,0 @@
var program = require('commander');
var AlfrescoApi = require('alfresco-js-api-node');
var http = require('http');
var fs = require('fs');
var path = require('path');
var unzip = require('unzip-stream');
replaceHrefInIndex = (folder, href) => {
fs.readFile(`demo-shell/${folder}/index.html`, 'utf8', function (err, data) {
if (err) {
return console.log(err);
}
let result = data.replace(`base href="/"`, `base href=\"/${href}/\"`);
fs.writeFile(`demo-shell/${folder}/index.html`, result, 'utf8', function (err) {
if (err) return console.log(err);
});
});
};
unzipRetry = (tentativeNumber, outputFolder, url) => {
let file = fs.createWriteStream('demo.zip');
http.get(`http://${url}`, (response) => {
response.pipe(file);
file.on('finish', async () => {
console.log('Unzip Demo ' + path.join(__dirname, '../demo.zip'));
setTimeout(() => {
fs.createReadStream(path.join(__dirname, '../demo.zip'))
.pipe(unzip.Extract({path: path.join(__dirname, '../demo-shell')}))
.on('error', () => {
if (tentativeNumber <= 4) {
tentativeNumber++;
unzipRetry(tentativeNumber, outputFolder);
}
})
.on('finish', () => {
setTimeout(() => {
let oldFolder = path.join(__dirname, `../demo-shell/demo.zip`);
let newFolder = path.join(__dirname, `../demo-shell/${outputFolder}`);
if (!fs.existsSync(path.join(__dirname, `../demo-shell/dist`))) {
fs.mkdirSync(path.join(__dirname, `../demo-shell/dist`));
}
fs.rename(oldFolder, newFolder, () => {
console.log('renamed complete ');
});
if (program.baseHref) {
replaceHrefInIndex(outputFolder, program.baseHref);
}
}, 10000);
})
}, 10000);
});
});
};
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);
let alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: program.host
});
await alfrescoJsApi.login(program.username, program.password);
let zipDemoNode;
try {
zipDemoNode = await alfrescoJsApi.nodes.getNode('-my-', {
'relativePath': `Builds/${program.folder}/demo.zip`
});
} catch (error) {
console.log('error: ' + error);
}
const url = await alfrescoJsApi.content.getContentUrl(zipDemoNode.entry.id, true);
console.log('Download zip');
let outputFolder = program.baseHref ? path.join('dist', program.baseHref) : 'dist';
unzipRetry(0, outputFolder, url);
}
main();

View File

@@ -1,111 +0,0 @@
var program = require('commander');
var AlfrescoApi = require('alfresco-js-api-node');
var http = require('http');
var fs = require('fs');
var path = require('path');
var unzip = require('unzip-stream');
var alfrescoJsApi;
unzipRetry = (url, outputFolder, pacakge, tentativeNumber) => {
console.log(`Unzip ${pacakge} in ` + path.join(__dirname, `../${pacakge}.zip`));
fs.createReadStream(path.join(__dirname, `../${pacakge}.zip`))
.pipe(unzip.Extract({path: path.join(__dirname, `../${outputFolder}/@alfresco/`)}))
.on('error', (error) => {
console.log('Error' + error)
if (tentativeNumber <= 4) {
fs.unlinkSync(path.join(__dirname, `../${pacakge}.zip`));
setTimeout(() => {
downloadZip(url, outputFolder, pacakge, tentativeNumber);
}, 10000);
}
})
.on('finish', () => {
setTimeout(() => {
let oldFolder = path.join(__dirname, `../${outputFolder}/@alfresco/${pacakge}`)
let newFolder = path.join(__dirname, `../${outputFolder}/@alfresco/adf-${pacakge}`)
fs.rename(oldFolder, newFolder, (err) => {
console.log('renamed complete');
});
}, 10000);
})
};
downloadZip = async (url, outputFolder, pacakge, tentativeNumber) => {
if (!tentativeNumber) {
tentativeNumber = 0;
}
tentativeNumber++;
console.log(`Download ${pacakge} in OutputFolder ${outputFolder}`)
let file = fs.createWriteStream(`${pacakge}.zip`);
return await http.get(`http://${url}`, (response) => {
response.pipe(file);
file.on('finish', async () => {
file.close(() => {
unzipRetry(url, outputFolder, pacakge, tentativeNumber);
});
});
});
};
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('-o, --output [type]', 'output folder')
.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
});
if (!program.output) {
program.output = 'node_modules'
}
await alfrescoJsApi.login(program.username, program.password);
let coreUrl = await getUrl(program.folder, 'core');
downloadZip(coreUrl, program.output, 'core');
let contentUrl = await getUrl(program.folder, 'content-services');
downloadZip(contentUrl, program.output, 'content-services');
let processUrl = await getUrl(program.folder, 'process-services');
downloadZip(processUrl, program.output, 'process-services');
let insightUrl = await getUrl(program.folder, 'insights');
downloadZip(insightUrl, program.output, 'insights');
let processCloudUrl = await getUrl(program.folder, 'process-services-cloud');
downloadZip(processCloudUrl, program.output, 'process-services-cloud');
}
main();

65
scripts/move-dist-folder.js Executable file
View File

@@ -0,0 +1,65 @@
var program = require('commander');
var fs = require('fs');
var path = require('path');
var ncp = require('ncp').ncp;
var rimraf = require('rimraf');
ncp.limit = 16;
replaceHrefInIndex = (href) => {
fs.readFile(`demo-shell/dist/${href}/index.html`, 'utf8', function (err, data) {
if (err) {
return console.log(err);
}
let result = data.replace(`base href="/"`, `base href=\"/${href}/\"`);
fs.writeFile(`demo-shell/dist/${href}/index.html`, result, 'utf8', function (err) {
if (err) return console.log(err);
});
});
};
async function main() {
program
.version('0.1.0')
.option('--base-href [type]', '')
.parse(process.argv);
let outputTemp = path.resolve(__dirname, '../demo-shell/', program.baseHref);
console.log('output ' + outputTemp);
let distFolder = path.resolve(__dirname, '../demo-shell/dist');
fs.rename(distFolder, outputTemp, (err) => {
if (err) throw err;
console.log('renamed complete');
let distFolderNew = path.resolve(__dirname, '../demo-shell/dist', program.baseHref);
if (!fs.existsSync(distFolderNew)){
fs.mkdirSync(distFolder);
fs.mkdirSync(distFolderNew);
}
ncp(outputTemp, distFolderNew, (err) => {
if (err) {
return console.error(err);
}
replaceHrefInIndex(program.baseHref);
rimraf(outputTemp, ()=> { console.log('output temp removed'); });
});
});
}
main();

View File

@@ -1,98 +0,0 @@
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 (zipFolder) {
if (!fs.existsSync(zipFolder)) {
fs.mkdirSync(zipFolder);
}
// create a file to stream archive data to.
let output = fs.createWriteStream(path.join(zipFolder, `demo.zip`));
let archive = archiver('zip');
archive.pipe(output);
archive.directory(path.join(__dirname, `../demo-shell/dist/`), `demo.zip`);
return archive.finalize();
};
async function main() {
program
.version('0.1.0')
.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, '../demo-shell/zip/');
await this.writeZipLib(zipFolder);
let files = fs.readdirSync(path.join(__dirname, '../demo-shell/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(`Folder Builds/${program.folder} creation error ${JSON.stringify(error)}` );
folder = await alfrescoJsApi.nodes.getNode('-my-', {
'relativePath': `Builds/${program.folder}`,
'nodeType': 'cm:folder'
}, {}, {
'overwrite': true
});
}
for (const fileName of files) {
let pathFile = path.join(__dirname, '../demo-shell/zip/demo.zip');
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();

View File

@@ -1,103 +0,0 @@
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');
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] <file ...>')
.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);
await this.writeZipLib('process-services-cloud', 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(`Folder Builds/${program.folder} creation error ${JSON.stringify(error)}` );
folder = await alfrescoJsApi.nodes.getNode('-my-', {
'relativePath': `Builds/${program.folder}`,
'nodeType': 'cm:folder'
}, {}, {
'overwrite': true
});
}
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();