mirror of
https://github.com/google/blockly.git
synced 2025-12-16 06:10:12 +01:00
91 lines
2.1 KiB
JavaScript
91 lines
2.1 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @fileoverview Gulp script to deploy Blockly demos on appengine.
|
|
*/
|
|
|
|
var gulp = require('gulp');
|
|
|
|
var fs = require('fs');
|
|
var rimraf = require('rimraf');
|
|
var path = require('path');
|
|
var execSync = require('child_process').execSync;
|
|
|
|
var packageJson = require('../../package.json');
|
|
|
|
const demoTmpDir = '../_deploy';
|
|
const demoStaticTmpDir = '../_deploy/static';
|
|
|
|
/**
|
|
* Cleans and creates the tmp directory used for deploying.
|
|
*/
|
|
function prepareDeployDir(done) {
|
|
// Clean directory if exists.
|
|
if (fs.existsSync(demoTmpDir)) {
|
|
rimraf.sync(demoTmpDir);
|
|
}
|
|
fs.mkdirSync(demoStaticTmpDir, { recursive: true });
|
|
done()
|
|
}
|
|
|
|
/**
|
|
* Copies all files into static deploy directory except for those under
|
|
* appengine.
|
|
*/
|
|
function copyStaticSrc(done) {
|
|
execSync(`git archive HEAD | tar -x -C ${demoStaticTmpDir}`,
|
|
{ stdio: 'inherit' });
|
|
done()
|
|
}
|
|
|
|
/**
|
|
* Copies appengine files into deploy directory.
|
|
*/
|
|
function copyAppengineSrc() {
|
|
const appengineSrc = [
|
|
path.join(demoStaticTmpDir, 'appengine/**/*'),
|
|
path.join(demoStaticTmpDir, 'appengine/.gcloudignore'),
|
|
];
|
|
return gulp.src(appengineSrc).pipe(gulp.dest(demoTmpDir));
|
|
}
|
|
|
|
/**
|
|
* Deploys files from tmp directory to appengine to version based on the version
|
|
* specified in package.json and then cleans the tmp directory.
|
|
*/
|
|
function deployAndClean(done) {
|
|
const minorVersion = packageJson.version.split('.')[1];
|
|
const patchVersion = packageJson.version.split('.')[2];
|
|
let demoVersion = minorVersion;
|
|
if (patchVersion != 0) {
|
|
demoVersion += '-' + patchVersion
|
|
}
|
|
try {
|
|
execSync(`gcloud app deploy --project blockly-demo --version ${demoVersion} --no-promote`, { stdio: 'inherit', cwd: demoTmpDir });
|
|
} finally {
|
|
// Clean up tmp directory.
|
|
if (fs.existsSync(demoTmpDir)) {
|
|
rimraf.sync(demoTmpDir);
|
|
}
|
|
}
|
|
done();
|
|
}
|
|
|
|
/**
|
|
* Deploys demos.
|
|
*/
|
|
const deployDemos = gulp.series(
|
|
prepareDeployDir,
|
|
copyStaticSrc,
|
|
copyAppengineSrc,
|
|
deployAndClean
|
|
);
|
|
|
|
module.exports = {
|
|
deployDemos: deployDemos,
|
|
}
|