Skip to content

Commit be808e6

Browse files
changes for tar deployment
1 parent b71e509 commit be808e6

File tree

3 files changed

+80
-173
lines changed

3 files changed

+80
-173
lines changed

src/engine/engine.ts

Lines changed: 69 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
import { logging } from '@angular-devkit/core';
2-
32
import { Schema } from '../deploy/schema';
43
const Heroku = require('heroku-client');
54
import * as tar from 'tar';
65
const fetch = require("node-fetch");
7-
import { ensureDir, copy, remove } from 'fs-extra';
6+
import {
7+
ensureDir, copy, remove, move,
8+
copyFileSync, readFileSync, createWriteStream
9+
} from 'fs-extra';
10+
11+
812
// TODO: add your deployment code here!
913
export async function run(dir: string,
1014
options: Schema,
@@ -18,57 +22,102 @@ export async function run(dir: string,
1822
const result = await heroku.get('/apps');
1923
const site = result.find((app => app.name === 'ngx-deploy-demo'))
2024

25+
// async function download() {
26+
// const response = await fetch('https://nodejs.org/dist/v10.16.3/node-v10.16.3.tar.gz')
27+
// if (!response.ok) throw new Error(`unexpected response ${response .statusText}`)
28+
// await streamPipeline(response.body, fs.createWriteStream('./app'))
29+
// }
30+
// download()
31+
2132
const slugResult = await heroku.post(`/apps/${site.name}/slugs`, {
2233
body: {
2334
buildpack_provided_description: "heroku/nodejs",
24-
process_types: { "web": `node-v0.10.20-linux-x64/bin/node index.js` }
35+
process_types: { "web": `node-v10.16.3-linux-x64/bin/node index.js` }
2536
}
26-
}
27-
);
28-
29-
// const upload
30-
// console.log(site);
31-
console.log(slugResult);
32-
// !fs.existsSync(`${dir}/app`) && fs.mkdirSync(`${dir}/app`);
33-
37+
});
38+
logger.info('Copying Build Files');
3439
await remove(`${dir}/app`);
40+
await remove(`${dir}/tmp`);
3541
await remove(`${dir}/slug.tgz`);
3642
await ensureDir(`${dir}/app`);
43+
await ensureDir(`${dir}/tmp`);
44+
// fetch('https://nodejs.org/dist/v10.16.3/node-v10.16.3.tar.gz')
45+
// .then(res => {
46+
// const dest = fs.createWriteStream('./tmp/node-v10.16.3.tar.gz');
47+
// res.body.pipe(dest);
48+
// });
49+
await download();
3750
await copy(`${outDir}`, `${dir}/app`);
38-
// await copy(`${dir}/index.js`, `${dir}/app`);
51+
await moveNodeJS('node-v10.16.3-linux-x64', `${dir}/app/node-v10.16.3-linux-x64`)
52+
copyFileSync('index.js', `${dir}/app/index.js`);
53+
54+
// copyfiles([`${dir}/index.js`, `${dir}/app`], () => {
55+
// console.log('Files copied');
56+
// });
57+
3958

4059
console.log(`${outDir} outdir`);
4160
const tarResponse = await tar.c(
4261
{
4362
gzip: true,
4463
file: 'slug.tgz'
4564
},
46-
['app']
65+
['./app']
4766
);
4867

49-
console.log(`${tarResponse} response`);
5068

69+
const buf = readFileSync(`slug.tgz`);
5170
const response = await fetch(slugResult.blob.url, {
5271
method: 'PUT', // or 'PUT'
5372
// body: JSON.stringify(data), // data can be `string` or {object}!
54-
body: `@${dir}/slug.tgz`,
73+
body: buf,
5574
headers: {
56-
'Content-Type': ''
75+
"Content-Type": ""
5776
}
58-
});
59-
console.log(response);
77+
})
78+
79+
logger.info('Starting deployment');
6080

6181
const release = await heroku.post(`/apps/${site.name}/releases`, {
6282
body: {
6383
slug: `${slugResult.id}`
6484
}
6585
});
6686

67-
console.log(release);
68-
87+
logger.info('Deployment Success!');
88+
await remove(`${dir}/app`);
89+
await remove(`${dir}/tmp`);
90+
await remove(`${dir}/slug.tgz`);
6991
}
7092
catch (error) {
7193
logger.error('❌ An error occurred!');
7294
throw error;
7395
}
7496
};
97+
98+
99+
async function download() {
100+
const res = await fetch('https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.gz');
101+
await new Promise((resolve, reject) => {
102+
const fileStream = createWriteStream('./tmp/node-v10.16.3.tar.gz');
103+
res.body.pipe(fileStream);
104+
res.body.on("error", (err) => {
105+
reject(err);
106+
});
107+
fileStream.on("finish", function () {
108+
tar.x({
109+
file: './tmp/node-v10.16.3.tar.gz'
110+
})
111+
resolve();
112+
});
113+
});
114+
}
115+
116+
async function moveNodeJS(src, dest) {
117+
try {
118+
await move(src, dest)
119+
console.log('success!')
120+
} catch (err) {
121+
console.error(err)
122+
}
123+
}

src/package-lock.json

Lines changed: 11 additions & 152 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
"@types/jest": "^24.0.18",
4242
"@types/node": "^12.6.9",
4343
"@types/tar": "^4.0.3",
44-
"copyfiles": "^2.1.1",
4544
"jest": "^24.8.0",
4645
"json-schema-to-typescript": "^7.0.0",
4746
"rimraf": "^2.6.3",

0 commit comments

Comments
 (0)