-
-
Notifications
You must be signed in to change notification settings - Fork 8.3k
/
config.yml
130 lines (119 loc) · 3.8 KB
/
config.yml
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
aliases:
- &restore-yarn-cache
keys:
- v1-yarn-{{ .Branch }}-{{ checksum "yarn.lock" }}
# Fallback in case checksum fails
- v1-yarn-{{ .Branch }}-
- &save-yarn-cache
paths:
- node_modules
- ~/.cache/yarn
key: v1-yarn-{{ .Branch }}-{{ checksum "yarn.lock" }}
- &filter-only-master
branches:
only:
- master
- &filter-ignore-gh-pages
branches:
ignore: gh-pages
- &yarn
|
yarn install --non-interactive --cache-folder ~/.cache/yarn
defaults: &defaults
working_directory: ~/docusaurus
docker:
- image: circleci/node:6
resource_class: large
version: 2
jobs:
tests:
<<: *defaults
steps:
- checkout
- restore-cache: *restore-yarn-cache
- run: *yarn
- save-cache: *save-yarn-cache
- run:
name: Check Prettier & ESLint
command: yarn ci-check
- run:
name: Run Test Suites
command: yarn test
- run:
name: Test Static Website Builds
command: cd website && yarn run build
# The CIRCLE_ variables are defined during the CircleCI build process
# https://circleci.com/docs/1.0/environment-variables/
deploy-website:
<<: *defaults
steps:
- checkout
- restore-cache: *restore-yarn-cache
- run: *yarn
- save-cache: *save-yarn-cache
- run:
name: Configure GitHub Bot
# Do not do this if we don't have the right org (facebook), or if this is just a pull request
command: |
if [[ $CIRCLE_PROJECT_USERNAME == "facebook" && -z $CI_PULL_REQUEST && -z $CIRCLE_PR_USERNAME ]]; then
git config --global user.email "docusaurus-bot@users.noreply.github.com"
git config --global user.name "Website Deployment Script"
echo "machine github.com login docusaurus-bot password $DOCUSAURUS_PUBLISH_TOKEN" > ~/.netrc
fi
- run:
name: Deploy Website
# Skip the deploy if we don't have the right org (facebook), or if this is just a pull request
command: |
if [[ $CIRCLE_PROJECT_USERNAME == "facebook" && -z $CI_PULL_REQUEST && -z $CIRCLE_PR_USERNAME ]]; then
echo "Deploying website..."
# install Docusaurus and generate file of English strings
yarn && cd website && yarn run write-translations
# install Crowdin
sudo apt-get update
sudo apt-get install default-jre rsync
wget https://artifacts.crowdin.com/repo/deb/crowdin.deb -O crowdin.deb
sudo dpkg -i crowdin.deb
sleep 5
# upload translation strings and download translations
yarn run crowdin-upload
yarn run crowdin-download
# publish
GIT_USER=docusaurus-bot USE_SSH=false yarn run publish-gh-pages
else
echo "Skipping deploy."
fi
publish-npm:
<<: *defaults
steps:
- checkout
- restore-cache: *restore-yarn-cache
- run: *yarn
- save-cache: *save-yarn-cache
- run:
name: Publish Docusaurus Package
command: |
if [ -z "$CIRCLE_PULL_REQUEST" ]; then
echo "//registry.npmjs.org/:_authToken=${CIRCLE_NPM_TOKEN}" > ~/.npmrc
node ./scripts/publish-npm.js
else
echo "Skipping publication."
fi
# Workflows enables us to run multiple jobs in parallel
workflows:
version: 2
website:
jobs:
- tests:
filters: *filter-ignore-gh-pages
- deploy-website:
requires:
- tests
filters: *filter-only-master
deploy:
jobs:
- hold:
type: approval
- publish-npm:
requires:
- hold
filters: *filter-only-master