forked from jestjs/jest
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpublish-gh-pages.js
executable file
·66 lines (51 loc) · 1.77 KB
/
publish-gh-pages.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/* eslint-disable */
'use strict';
require(`shelljs/global`);
const GIT_USER = process.env.GIT_USER;
const CIRCLE_BRANCH = process.env.CIRCLE_BRANCH;
const CIRCLE_PROJECT_USERNAME = process.env.CIRCLE_PROJECT_USERNAME;
const CIRCLE_PROJECT_REPONAME = process.env.CIRCLE_PROJECT_REPONAME;
const CI_PULL_REQUEST = process.env.CI_PULL_REQUEST;
const remoteBranch = `https://${GIT_USER}@github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}.git`;
if (!which(`git`)) {
echo(`Sorry, this script requires git`);
exit(1);
}
if (CI_PULL_REQUEST || CIRCLE_BRANCH !== `master` || CIRCLE_PROJECT_USERNAME !== `facebook`) {
echo(`Skipping deploy`);
exit(0);
}
echo(`Building branch ${CIRCLE_BRANCH}, preparing to push to gh-pages`);
// Clear out existing build folder
rm(`-rf`, `build`);
mkdir(`-p`, `build`);
// Build site here
cd(`build`);
if (exec(`git clone ${remoteBranch} ${CIRCLE_PROJECT_REPONAME}-gh-pages`).code !== 0) {
echo(`Error: Git clone failed`);
exit(1);
}
cd(`${CIRCLE_PROJECT_REPONAME}-gh-pages`);
if (exec(`git checkout origin/gh-pages`).code +
exec(`git checkout -b gh-pages`).code +
exec(`git branch --set-upstream-to=origin/gh-pages`).code !== 0
) {
echo(`Error: Git checkout gh-pages failed`);
exit(1);
}
cd(`../..`);
if (exec(`node server/generate.js`).code) {
echo(`Error: Generating HTML failed`);
exit(1);
}
cp(`-R`, `build/${CIRCLE_PROJECT_REPONAME}/*`, `build/${CIRCLE_PROJECT_REPONAME}-gh-pages/`);
cd(`build/${CIRCLE_PROJECT_REPONAME}-gh-pages`);
exec(`git add --all`);
exec(`git commit -m "update website"`);
if (exec(`git push origin gh-pages`).code !== 0) {
echo(`Error: Git push failed`);
exit(1);
} else {
echo(`Website is live at: https://${CIRCLE_PROJECT_USERNAME}.github.io/${CIRCLE_PROJECT_REPONAME}/`);
exit(0);
}