Skip to content
This repository was archived by the owner on Nov 27, 2019. It is now read-only.

Commit 7f35313

Browse files
authored
add PR previews in CI (#111)
* stab 1 * stab 2 * stab 3 * stab 4 * stab 5 * stab 5 cont * stab 6 * stab 7 * add file-saver dep * add file saver to lockfile * add build:ram * use react-docs react deps * remove debug * don't cache node_modules * Try machine executor * specify machine * syntax * install yarn * use npm run * use yarn * env var * try adding to path * please path * plz env * use node 12 * syntax * fix path * fix upload script * undo test * add semantic release * add AWS deploy * install aws cli * please let me use aws cli * please AWS * last try * only deploy on master
1 parent 5f4224e commit 7f35313

File tree

8 files changed

+906
-9275
lines changed

8 files changed

+906
-9275
lines changed

.circleci/config.yml

Lines changed: 59 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -3,148 +3,131 @@ version: 2
33
# Adapted from https://github.com/circleci/circleci-docs/blob/master/.circleci/config.yml
44
# I'd love to find docs on this syntax.
55
references:
6-
js_deps_paths: &js_deps_paths
7-
- node_modules/
8-
- gatsby-theme-patternfly-org/node_modules/
9-
- patternfly-org-demo/node_modules/
10-
- patternfly-org-demo/patternfly-next/node_modules/
11-
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-docs/node_modules/
12-
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-docs/plugins/gatsby-transformer-react-docgen-typescript/node_modules/
13-
build_cache_paths: &build_cache_paths
14-
- patternfly-org-demo/patternfly-react/.cache/
15-
- patternfly-org-demo/patternfly-react/packages/patternfly-3/patternfly-react-extensions/dist/
16-
- patternfly-org-demo/patternfly-react/packages/patternfly-3/patternfly-react-wooden-tree/dist/
17-
- patternfly-org-demo/patternfly-react/packages/patternfly-3/patternfly-react/dist/
18-
- patternfly-org-demo/patternfly-react/packages/patternfly-3/react-console/dist/
19-
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-charts/dist/
20-
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-core/dist/
21-
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-inline-edit-extension/dist/
22-
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-styled-system/dist/
23-
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-styles/css/
24-
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-styles/dist/
25-
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-table/dist/
26-
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-tokens/dist/
27-
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-topology/dist/
28-
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-virtualized-extension/dist/
29-
- patternfly-org-demo/patternfly-react/packages/react-icons/dist/
30-
js_deps_cache_key: &js_deps_cache_key
31-
js-deps-v{{.Environment.CACHE_VERSION}}-{{checksum "yarn.lock"}}
32-
build_cache_key: &build_cache_key
33-
build-cache-v{{.Environment.CACHE_VERSION}}-{{checksum "yarn.lock"}}
346
attach_workspace: &attach_workspace
357
attach_workspace:
368
at: ~/project
37-
389
workflows:
3910
version: 2
4011
install_build_deploy:
4112
jobs:
4213
- install
14+
- build_next:
15+
requires:
16+
- install
4317
- build_react:
4418
requires:
4519
- install
46-
- build_next:
20+
- build_org:
4721
requires:
4822
- install
49-
- upload_docs:
23+
- upload_previews:
5024
requires:
5125
- build_react
5226
- build_next
27+
- build_org
5328
- deploy:
5429
requires:
5530
- build_react
5631
- build_next
32+
- build_org
5733
filters:
5834
branches:
5935
only: master
6036
jobs:
6137
install:
6238
docker:
63-
- image: circleci/node:10
39+
- image: circleci/node:12
6440
steps:
6541
- checkout
6642
- run:
6743
name: Pull Submodules
6844
command: |
6945
git submodule init
7046
git submodule update --remote
47+
- run:
48+
name: Install
49+
command: yarn install
7150
- persist_to_workspace:
7251
root: ~/project
7352
paths:
7453
- "*"
75-
- restore_cache:
76-
keys:
77-
- *js_deps_cache_key
54+
build_next:
55+
docker:
56+
- image: circleci/node:12
57+
steps:
58+
- *attach_workspace
7859
- run:
79-
name: Conditional install
80-
command: if [ ! -d node_modules ]; then yarn install --frozen-lockfile; fi
81-
- save_cache:
82-
paths: *js_deps_paths
83-
key: *js_deps_cache_key
60+
name: Build patternfly-next docs
61+
command: yarn build:next
62+
- persist_to_workspace:
63+
root: ~/project
64+
paths:
65+
- patternfly-org-demo/patternfly-next/public/
8466
build_react:
8567
docker:
86-
- image: circleci/node:10
68+
- image: circleci/node:12
8769
steps:
8870
- *attach_workspace
89-
- restore_cache:
90-
keys:
91-
- *js_deps_cache_key
92-
- restore_cache:
93-
keys:
94-
- *build_cache_key
9571
- run:
96-
name: Incremental Build Dist
72+
name: Build patternfly-react docs
9773
command: yarn build:react
98-
- save_cache:
99-
paths: *build_cache_paths
100-
key: *build_cache_key
101-
- run:
102-
name: Build Docs
103-
command: yarn build:react:docs
10474
- persist_to_workspace:
10575
root: ~/project
10676
paths:
107-
- patternfly-org-demo/patternfly-react/packages/react-docs/public/
108-
build_next:
109-
docker:
110-
- image: circleci/node:10
77+
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-docs/public/
78+
build_org:
79+
machine:
80+
image: circleci/classic:latest
11181
steps:
11282
- *attach_workspace
113-
- restore_cache:
114-
keys:
115-
- *js_deps_cache_key
11683
- run:
117-
name: Build Dist
118-
command: yarn build:next
84+
name: Install node@12 (need right version for `yarn`)
85+
command: |
86+
set +e
87+
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash
88+
export NVM_DIR="/opt/circleci/.nvm"
89+
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
90+
nvm install v12
91+
nvm alias default v12
92+
93+
# Each step uses the same `$BASH_ENV`, so need to modify it
94+
echo 'export NVM_DIR="/opt/circleci/.nvm"' >> $BASH_ENV
95+
echo "[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\"" >> $BASH_ENV
96+
- run:
97+
name: Install yarn
98+
command: curl -o- -L https://yarnpkg.com/install.sh | bash
11999
- run:
120-
name: Build Docs
121-
command: yarn build:next:docs
100+
name: Build patternfly.org docs
101+
command: PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH" yarn build:org
122102
- persist_to_workspace:
123103
root: ~/project
124104
paths:
125-
- patternfly-org-demo/patternfly-next/public/
126-
upload_docs:
105+
- patternfly-org-demo/public/
106+
upload_previews:
127107
docker:
128108
- image: circleci/node:10
129109
steps:
130110
- *attach_workspace
131-
- restore_cache:
132-
keys:
133-
- *js_deps_cache_key
134111
- run:
135112
name: Upload docs
136-
command: ./circleci/upload-docs.sh
113+
command: .circleci/upload-preview.sh
137114
deploy:
138115
docker:
139-
- image: circleci/node:10
116+
- image: circleci/node:12
140117
steps:
141118
- *attach_workspace
142-
- restore_cache:
143-
keys:
144-
- *js_deps_cache_key
119+
- run:
120+
name: Install AWS CLI
121+
command: |
122+
sudo apt-get update
123+
sudo apt-get install -y -qq python-pip libpython-dev
124+
pip install --user awscli
125+
- run:
126+
name: Sync to staging
127+
command: .circleci/upload-staging.sh
145128
- run:
146129
name: Avoid Unknown Host for github.com
147130
command: mkdir ~/.ssh/ && echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config
148131
- run:
149132
name: Deploy to NPM
150-
command: echo "You wish."
133+
command: npx semantic-release

.circleci/upload-docs.sh renamed to .circleci/upload-preview.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,18 @@ fi
2020

2121
DEPLOY_DOMAIN_NEXT="https://${DEPLOY_SUBDOMAIN}-next.surge.sh"
2222
DEPLOY_DOMAIN_REACT="https://${DEPLOY_SUBDOMAIN}-react.surge.sh"
23-
npx surge --project patternfly-org-demo/patternfly-next/public/ --domain $DEPLOY_DOMAIN_NEXT;
24-
npx surge --project patternfly-org-demo/patternfly-react/packages/react-docs/public/ --domain $DEPLOY_DOMAIN_REACT;
23+
DEPLOY_DOMAIN_ORG="https://${DEPLOY_SUBDOMAIN}-org.surge.sh"
24+
npx surge --project patternfly-org-demo/patternfly-next/public/ --domain ${DEPLOY_DOMAIN_NEXT}
25+
npx surge --project patternfly-org-demo/patternfly-react/packages/patternfly-4/react-docs/public/ --domain ${DEPLOY_DOMAIN_REACT}
26+
npx surge --project patternfly-org-demo//public/ --domain ${DEPLOY_DOMAIN_ORG}
2527

2628
if [ -n "${PR_NUM}" ] && [ -z "${ALREADY_DEPLOYED}" ] # Leave a Github comment
2729
then
2830
# Use Issues api instead of PR api because
2931
# PR api requires comments be made on specific files of specific commits
3032
GITHUB_PR_COMMENTS="https://api.github.com/repos/${USERNAME}/${REPONAME}/issues/${PR_NUM}/comments"
3133
echo "Adding github PR comment ${GITHUB_PR_COMMENTS}"
32-
curl -H "Authorization: token ${GH_PR_TOKEN}" --request POST ${GITHUB_PR_COMMENTS} --data '{"body":"Core preview: '${DEPLOY_DOMAIN_NEXT}'React preview: '${DEPLOY_DOMAIN_REACT}'"}'
34+
curl -H "Authorization: token ${GH_PR_TOKEN}" --request POST ${GITHUB_PR_COMMENTS} --data '{"body":"Core preview: '${DEPLOY_DOMAIN_NEXT}'\nReact preview: '${DEPLOY_DOMAIN_REACT}'\nOrg preview: '${DEPLOY_DOMAIN_ORG}'"}'
3335
else
3436
echo "Already deployed ${DEPLOY_DOMAIN_NEXT} and ${DEPLOY_DOMAIN_REACT}"
3537
fi

.circleci/upload-staging.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
aws configure set aws_access_key_id ${AWS_ACCESS_KEY}
2+
aws configure set aws_secret_access_key ${AWS_SECRET_KEY}
3+
aws configure set region ${AWS_REGION}
4+
5+
cd patternfly-org-demo
6+
yarn run gatsby-plugin-s3 deploy --yes
7+
aws s3 rm --recursive s3://patternfly-org-staging/v4
8+
aws s3 sync s3://patternfly-org-preview s3://patternfly-org-staging/v4
9+
aws cloudfront create-invalidation --distribution-id EQE4NPRH0CQXJ --paths "/v4/*"

gatsby-theme-patternfly-org/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"@mdx-js/mdx": "^1.1.5",
1717
"@mdx-js/react": "^1.1.5",
1818
"codesandbox": "^2.1.10",
19+
"file-saver": "^1.3.8",
1920
"gatsby-plugin-mdx": "^1.0.40",
2021
"gatsby-plugin-react-helmet": "^3.1.7",
2122
"handlebars": "^4.2.0",

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"clean:next": "yarn workspace @patternfly/patternfly clean",
1111
"serve:next": "yarn workspace @patternfly/patternfly gatsby serve -p 8001",
1212
"develop:react": "yarn workspace @patternfly/react-docs develop -p 8002",
13-
"build:react": "yarn workspace @patternfly/react-docs gatsby build",
13+
"build:react": "yarn workspace @patternfly/react-docs build:ram",
1414
"clean:react": "yarn workspace @patternfly/react-docs clean",
1515
"serve:react": "yarn workspace @patternfly/react-docs gatsby serve -p 8002",
1616
"develop:org": "yarn workspace patternfly-org-demo develop -p 8003",
@@ -24,8 +24,8 @@
2424
"packages": [
2525
"gatsby-theme-patternfly-org",
2626
"patternfly-org-demo/patternfly-next",
27-
"patternfly-org-demo/patternfly-react",
28-
"patternfly-org-demo/patternfly-react/packages/**",
27+
"patternfly-org-demo/patternfly-react/packages/patternfly-4/react-docs",
28+
"patternfly-org-demo/patternfly-react/packages/patternfly-4/react-docs/plugins/**",
2929
"patternfly-org-demo"
3030
],
3131
"nohoist": [

patternfly-org-demo/package.json

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,28 @@
55
"author": "Red Hat",
66
"license": "MIT",
77
"scripts": {
8-
"build": "yarn build:static && gatsby build",
9-
"build:prefix": "yarn build:static && gatsby build --prefix-paths",
8+
"build": "yarn build:static && yarn build:ram",
9+
"build:prefix": "yarn build:static && yarn build:ram --prefix-paths",
10+
"build:ram": "node --max-old-space-size=8192 ./node_modules/.bin/gatsby build",
1011
"build:static": "node ./copyAssets.js",
1112
"clean": "gatsby clean",
1213
"develop": "yarn build:static && gatsby develop",
1314
"serve": "gatsby serve",
1415
"serve:prefix": "gatsby serve --prefix-paths"
1516
},
1617
"dependencies": {
17-
"@patternfly/patternfly": "latest",
18-
"@patternfly/react-catalog-view-extension": "latest",
19-
"@patternfly/react-charts": "latest",
20-
"@patternfly/react-core": "latest",
21-
"@patternfly/react-icons": "latest",
22-
"@patternfly/react-inline-edit-extension": "latest",
23-
"@patternfly/react-styled-system": "latest",
24-
"@patternfly/react-styles": "latest",
25-
"@patternfly/react-table": "latest",
26-
"@patternfly/react-tokens": "latest",
27-
"@patternfly/react-topology": "latest",
28-
"@patternfly/react-virtualized-extension": "latest",
18+
"@patternfly/patternfly": "*",
19+
"@patternfly/react-catalog-view-extension": "*",
20+
"@patternfly/react-charts": "*",
21+
"@patternfly/react-core": "*",
22+
"@patternfly/react-icons": "*",
23+
"@patternfly/react-inline-edit-extension": "*",
24+
"@patternfly/react-styled-system": "*",
25+
"@patternfly/react-styles": "*",
26+
"@patternfly/react-table": "*",
27+
"@patternfly/react-tokens": "*",
28+
"@patternfly/react-topology": "*",
29+
"@patternfly/react-virtualized-extension": "*",
2930
"eslint-config-react-app": "^5.0.2",
3031
"gatsby": "2.17.10",
3132
"gatsby-cli": "2.8.8",

0 commit comments

Comments
 (0)