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

Commit

Permalink
add PR previews in CI (#111)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
redallen authored Nov 15, 2019
1 parent 5f4224e commit 7f35313
Show file tree
Hide file tree
Showing 8 changed files with 906 additions and 9,275 deletions.
135 changes: 59 additions & 76 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,148 +3,131 @@ version: 2
# Adapted from https://github.com/circleci/circleci-docs/blob/master/.circleci/config.yml
# I'd love to find docs on this syntax.
references:
js_deps_paths: &js_deps_paths
- node_modules/
- gatsby-theme-patternfly-org/node_modules/
- patternfly-org-demo/node_modules/
- patternfly-org-demo/patternfly-next/node_modules/
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-docs/node_modules/
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-docs/plugins/gatsby-transformer-react-docgen-typescript/node_modules/
build_cache_paths: &build_cache_paths
- patternfly-org-demo/patternfly-react/.cache/
- patternfly-org-demo/patternfly-react/packages/patternfly-3/patternfly-react-extensions/dist/
- patternfly-org-demo/patternfly-react/packages/patternfly-3/patternfly-react-wooden-tree/dist/
- patternfly-org-demo/patternfly-react/packages/patternfly-3/patternfly-react/dist/
- patternfly-org-demo/patternfly-react/packages/patternfly-3/react-console/dist/
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-charts/dist/
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-core/dist/
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-inline-edit-extension/dist/
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-styled-system/dist/
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-styles/css/
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-styles/dist/
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-table/dist/
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-tokens/dist/
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-topology/dist/
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-virtualized-extension/dist/
- patternfly-org-demo/patternfly-react/packages/react-icons/dist/
js_deps_cache_key: &js_deps_cache_key
js-deps-v{{.Environment.CACHE_VERSION}}-{{checksum "yarn.lock"}}
build_cache_key: &build_cache_key
build-cache-v{{.Environment.CACHE_VERSION}}-{{checksum "yarn.lock"}}
attach_workspace: &attach_workspace
attach_workspace:
at: ~/project

workflows:
version: 2
install_build_deploy:
jobs:
- install
- build_next:
requires:
- install
- build_react:
requires:
- install
- build_next:
- build_org:
requires:
- install
- upload_docs:
- upload_previews:
requires:
- build_react
- build_next
- build_org
- deploy:
requires:
- build_react
- build_next
- build_org
filters:
branches:
only: master
jobs:
install:
docker:
- image: circleci/node:10
- image: circleci/node:12
steps:
- checkout
- run:
name: Pull Submodules
command: |
git submodule init
git submodule update --remote
- run:
name: Install
command: yarn install
- persist_to_workspace:
root: ~/project
paths:
- "*"
- restore_cache:
keys:
- *js_deps_cache_key
build_next:
docker:
- image: circleci/node:12
steps:
- *attach_workspace
- run:
name: Conditional install
command: if [ ! -d node_modules ]; then yarn install --frozen-lockfile; fi
- save_cache:
paths: *js_deps_paths
key: *js_deps_cache_key
name: Build patternfly-next docs
command: yarn build:next
- persist_to_workspace:
root: ~/project
paths:
- patternfly-org-demo/patternfly-next/public/
build_react:
docker:
- image: circleci/node:10
- image: circleci/node:12
steps:
- *attach_workspace
- restore_cache:
keys:
- *js_deps_cache_key
- restore_cache:
keys:
- *build_cache_key
- run:
name: Incremental Build Dist
name: Build patternfly-react docs
command: yarn build:react
- save_cache:
paths: *build_cache_paths
key: *build_cache_key
- run:
name: Build Docs
command: yarn build:react:docs
- persist_to_workspace:
root: ~/project
paths:
- patternfly-org-demo/patternfly-react/packages/react-docs/public/
build_next:
docker:
- image: circleci/node:10
- patternfly-org-demo/patternfly-react/packages/patternfly-4/react-docs/public/
build_org:
machine:
image: circleci/classic:latest
steps:
- *attach_workspace
- restore_cache:
keys:
- *js_deps_cache_key
- run:
name: Build Dist
command: yarn build:next
name: Install node@12 (need right version for `yarn`)
command: |
set +e
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash
export NVM_DIR="/opt/circleci/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install v12
nvm alias default v12
# Each step uses the same `$BASH_ENV`, so need to modify it
echo 'export NVM_DIR="/opt/circleci/.nvm"' >> $BASH_ENV
echo "[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\"" >> $BASH_ENV
- run:
name: Install yarn
command: curl -o- -L https://yarnpkg.com/install.sh | bash
- run:
name: Build Docs
command: yarn build:next:docs
name: Build patternfly.org docs
command: PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH" yarn build:org
- persist_to_workspace:
root: ~/project
paths:
- patternfly-org-demo/patternfly-next/public/
upload_docs:
- patternfly-org-demo/public/
upload_previews:
docker:
- image: circleci/node:10
steps:
- *attach_workspace
- restore_cache:
keys:
- *js_deps_cache_key
- run:
name: Upload docs
command: ./circleci/upload-docs.sh
command: .circleci/upload-preview.sh
deploy:
docker:
- image: circleci/node:10
- image: circleci/node:12
steps:
- *attach_workspace
- restore_cache:
keys:
- *js_deps_cache_key
- run:
name: Install AWS CLI
command: |
sudo apt-get update
sudo apt-get install -y -qq python-pip libpython-dev
pip install --user awscli
- run:
name: Sync to staging
command: .circleci/upload-staging.sh
- run:
name: Avoid Unknown Host for github.com
command: mkdir ~/.ssh/ && echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config
- run:
name: Deploy to NPM
command: echo "You wish."
command: npx semantic-release
8 changes: 5 additions & 3 deletions .circleci/upload-docs.sh → .circleci/upload-preview.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,18 @@ fi

DEPLOY_DOMAIN_NEXT="https://${DEPLOY_SUBDOMAIN}-next.surge.sh"
DEPLOY_DOMAIN_REACT="https://${DEPLOY_SUBDOMAIN}-react.surge.sh"
npx surge --project patternfly-org-demo/patternfly-next/public/ --domain $DEPLOY_DOMAIN_NEXT;
npx surge --project patternfly-org-demo/patternfly-react/packages/react-docs/public/ --domain $DEPLOY_DOMAIN_REACT;
DEPLOY_DOMAIN_ORG="https://${DEPLOY_SUBDOMAIN}-org.surge.sh"
npx surge --project patternfly-org-demo/patternfly-next/public/ --domain ${DEPLOY_DOMAIN_NEXT}
npx surge --project patternfly-org-demo/patternfly-react/packages/patternfly-4/react-docs/public/ --domain ${DEPLOY_DOMAIN_REACT}
npx surge --project patternfly-org-demo//public/ --domain ${DEPLOY_DOMAIN_ORG}

if [ -n "${PR_NUM}" ] && [ -z "${ALREADY_DEPLOYED}" ] # Leave a Github comment
then
# Use Issues api instead of PR api because
# PR api requires comments be made on specific files of specific commits
GITHUB_PR_COMMENTS="https://api.github.com/repos/${USERNAME}/${REPONAME}/issues/${PR_NUM}/comments"
echo "Adding github PR comment ${GITHUB_PR_COMMENTS}"
curl -H "Authorization: token ${GH_PR_TOKEN}" --request POST ${GITHUB_PR_COMMENTS} --data '{"body":"Core preview: '${DEPLOY_DOMAIN_NEXT}'React preview: '${DEPLOY_DOMAIN_REACT}'"}'
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}'"}'
else
echo "Already deployed ${DEPLOY_DOMAIN_NEXT} and ${DEPLOY_DOMAIN_REACT}"
fi
9 changes: 9 additions & 0 deletions .circleci/upload-staging.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
aws configure set aws_access_key_id ${AWS_ACCESS_KEY}
aws configure set aws_secret_access_key ${AWS_SECRET_KEY}
aws configure set region ${AWS_REGION}

cd patternfly-org-demo
yarn run gatsby-plugin-s3 deploy --yes
aws s3 rm --recursive s3://patternfly-org-staging/v4
aws s3 sync s3://patternfly-org-preview s3://patternfly-org-staging/v4
aws cloudfront create-invalidation --distribution-id EQE4NPRH0CQXJ --paths "/v4/*"
1 change: 1 addition & 0 deletions gatsby-theme-patternfly-org/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"@mdx-js/mdx": "^1.1.5",
"@mdx-js/react": "^1.1.5",
"codesandbox": "^2.1.10",
"file-saver": "^1.3.8",
"gatsby-plugin-mdx": "^1.0.40",
"gatsby-plugin-react-helmet": "^3.1.7",
"handlebars": "^4.2.0",
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"clean:next": "yarn workspace @patternfly/patternfly clean",
"serve:next": "yarn workspace @patternfly/patternfly gatsby serve -p 8001",
"develop:react": "yarn workspace @patternfly/react-docs develop -p 8002",
"build:react": "yarn workspace @patternfly/react-docs gatsby build",
"build:react": "yarn workspace @patternfly/react-docs build:ram",
"clean:react": "yarn workspace @patternfly/react-docs clean",
"serve:react": "yarn workspace @patternfly/react-docs gatsby serve -p 8002",
"develop:org": "yarn workspace patternfly-org-demo develop -p 8003",
Expand All @@ -24,8 +24,8 @@
"packages": [
"gatsby-theme-patternfly-org",
"patternfly-org-demo/patternfly-next",
"patternfly-org-demo/patternfly-react",
"patternfly-org-demo/patternfly-react/packages/**",
"patternfly-org-demo/patternfly-react/packages/patternfly-4/react-docs",
"patternfly-org-demo/patternfly-react/packages/patternfly-4/react-docs/plugins/**",
"patternfly-org-demo"
],
"nohoist": [
Expand Down
29 changes: 15 additions & 14 deletions patternfly-org-demo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,28 @@
"author": "Red Hat",
"license": "MIT",
"scripts": {
"build": "yarn build:static && gatsby build",
"build:prefix": "yarn build:static && gatsby build --prefix-paths",
"build": "yarn build:static && yarn build:ram",
"build:prefix": "yarn build:static && yarn build:ram --prefix-paths",
"build:ram": "node --max-old-space-size=8192 ./node_modules/.bin/gatsby build",
"build:static": "node ./copyAssets.js",
"clean": "gatsby clean",
"develop": "yarn build:static && gatsby develop",
"serve": "gatsby serve",
"serve:prefix": "gatsby serve --prefix-paths"
},
"dependencies": {
"@patternfly/patternfly": "latest",
"@patternfly/react-catalog-view-extension": "latest",
"@patternfly/react-charts": "latest",
"@patternfly/react-core": "latest",
"@patternfly/react-icons": "latest",
"@patternfly/react-inline-edit-extension": "latest",
"@patternfly/react-styled-system": "latest",
"@patternfly/react-styles": "latest",
"@patternfly/react-table": "latest",
"@patternfly/react-tokens": "latest",
"@patternfly/react-topology": "latest",
"@patternfly/react-virtualized-extension": "latest",
"@patternfly/patternfly": "*",
"@patternfly/react-catalog-view-extension": "*",
"@patternfly/react-charts": "*",
"@patternfly/react-core": "*",
"@patternfly/react-icons": "*",
"@patternfly/react-inline-edit-extension": "*",
"@patternfly/react-styled-system": "*",
"@patternfly/react-styles": "*",
"@patternfly/react-table": "*",
"@patternfly/react-tokens": "*",
"@patternfly/react-topology": "*",
"@patternfly/react-virtualized-extension": "*",
"eslint-config-react-app": "^5.0.2",
"gatsby": "2.17.10",
"gatsby-cli": "2.8.8",
Expand Down
2 changes: 1 addition & 1 deletion patternfly-org-demo/patternfly-react
Loading

0 comments on commit 7f35313

Please sign in to comment.