genlegacydoc: &genlegacydoc name: Generate the legacy docs command: | source /env/bin/activate scripts/gendoc.py gendoc: &gendoc name: Generate the docs # Note: Node dependencies are required for the hugo build. # Note: We use a custom config file for circleci due to some specifics with hosting the # site using CircleCI's artifacts platform. See config-circleci.toml for details. command: | apk add nodejs npm git hugo npm i cat config-circleci.toml config.toml > hugo-config.toml hugo --config hugo-config.toml --baseURL "/${CIRCLE_NODE_INDEX}/public" genswagger: &genswagger name: Validate sources and generate swagger json command: | source /env/bin/activate scripts/check-swagger-sources.py scripts/dump-swagger.py buildswaggerui: &buildswaggerui name: Build Swagger UI command: | ls scripts/ mkdir -p api/client-server git clone https://github.com/matrix-org/swagger-ui swagger-ui cp -r swagger-ui/dist/* api/client-server/ mkdir -p api/client-server/json cp scripts/swagger/api-docs.json api/client-server/json/ wget https://raw.githubusercontent.com/matrix-org/matrix.org/master/content/swagger.css -O api/client-server/swagger.css wget https://raw.githubusercontent.com/matrix-org/matrix.org/master/scripts/swagger-ui.patch patch api/client-server/index.html swagger-ui.patch checkexamples: &checkexamples name: Check Event Examples command: | source /env/bin/activate scripts/check-event-schema-examples.py validateapi: &validateapi name: Validate OpenAPI specifications command: | cd scripts npm install node validator.js -s "../data/api/client-server" buildspeculator: &buildspeculator name: Build Speculator command: | cd scripts/speculator go build -v buildcontinuserv: &buildcontinuserv name: Build Continuserv command: | cd scripts/continuserv go build -v version: 2 jobs: validate-docs: docker: - image: node:alpine steps: - checkout - run: *validateapi check-docs: docker: - image: uhoreg/matrix-doc-build steps: - checkout - run: *checkexamples build-legacy-docs: docker: - image: uhoreg/matrix-doc-build steps: - checkout - run: *genlegacydoc - store_artifacts: path: scripts/gen - run: name: "Legacy doc build is available at:" command: DOCS_URL="${CIRCLE_BUILD_URL}/artifacts/${CIRCLE_NODE_INDEX}/${CIRCLE_WORKING_DIRECTORY/#\~/$HOME}/scripts/gen/index.html"; echo $DOCS_URL build-docs: docker: - image: alpine steps: # Note: We install git in the image so we can pull git submodules. The hugo theme in use # is a git submodule, which has its own submodules, and all need to be loaded. - run: apk add git - checkout - run: git submodule update --init --recursive - run: *gendoc - store_artifacts: path: public - run: name: "Doc build is available at:" command: DOCS_URL="${CIRCLE_BUILD_URL}/artifacts/${CIRCLE_NODE_INDEX}/public/index.html"; echo $DOCS_URL build-swagger: docker: - image: uhoreg/matrix-doc-build steps: - checkout - run: *genswagger - run: *buildswaggerui - store_artifacts: path: api/client-server/ - run: name: "Swagger UI is available at:" command: DOCS_URL="${CIRCLE_BUILD_URL}/artifacts/${CIRCLE_NODE_INDEX}/${CIRCLE_WORKING_DIRECTORY/#\~/$HOME}/api/client-server/index.html"; echo $DOCS_URL build-dev-scripts: docker: - image: golang:1.10 steps: - checkout - run: name: Install Dependencies command: | go get -v github.com/hashicorp/golang-lru go get -v gopkg.in/fsnotify/fsnotify.v1 - run: *buildcontinuserv - run: *buildspeculator workflows: version: 2 build-spec: jobs: - build-legacy-docs - build-docs - build-swagger - check-docs - validate-docs - build-dev-scripts notify: webhooks: - url: https://giles.cadair.dev/circleci