diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5f0bce726..b5b3092c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -93,6 +93,8 @@ jobs: npm i -g markdownlint-cli@0.32.2 # NOTE: update in Dockerfile when updating - name: Run docs lint + env: + CORSO_USE_DOCKER: -1 # prevent using docker inside makefile run: | cd docs && make -o genclidocs check diff --git a/docs/Makefile b/docs/Makefile index 0848b5a6b..8cb92e3b1 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,69 +1,60 @@ -.PHONY: buildimage build dev shell check genclidocs +.PHONY: buildimage build dev shell check genclidocs _validatemdgen +# Specify `CORSO_USE_DOCKER=-1` to skip using Docker for builds CORSO_BUILD_DIR := /tmp/.corsobuild CORSO_BUILD_CACHE := ${CORSO_BUILD_DIR}/cache CORSO_BUILD_MOD := ${CORSO_BUILD_DIR}/mod CORSO_BUILD_BIN := ${CORSO_BUILD_DIR}/bin +CORSO_REPO := /go/src/github.com/alcionai/corso +CORSO_LOCAL_PATH := $(shell git rev-parse --show-toplevel) +DOCSC := docker run --rm -it -p 3000:3000 -v ${PWD}:/usr/src/docs alcion/docs +DOCSE := ${DOCSC} # for enforcing docker container as environment +GOC := docker run --rm -it \ + -v ${CORSO_LOCAL_PATH}:${CORSO_REPO} -v ${CORSO_BUILD_DIR}:${CORSO_BUILD_DIR} \ + --env GOCACHE=${CORSO_BUILD_CACHE} --env GOMODCACHE=${CORSO_BUILD_MOD} --env GOTMPDIR=${CORSO_BUILD_DIR} \ + --workdir ${CORSO_REPO}/src \ + golang:1.18 +ifeq (${CORSO_USE_DOCKER},-1) + DOCSC := + GOC := cd ${CORSO_LOCAL_PATH}/src && + CORSO_REPO := ${CORSO_LOCAL_PATH} +endif -CORSO_REPO := ${PWD}/.. -CORSO_REPO_CONTAINER := /go/src/github.com/alcionai/corso - -MDGEN_SRC_CONTAINER := ${CORSO_REPO_CONTAINER}/src/cmd/mdgen/mdgen.go +MDGEN_SRC := ${CORSO_REPO}/src/cmd/mdgen/mdgen.go MDGEN_BINARY := ${CORSO_BUILD_BIN}/mdgen -CLI_DOCS_CONTAINER := ${CORSO_REPO_CONTAINER}/docs/docs/cli +CLI_DOCS := ${CORSO_REPO}/docs/docs/cli buildimage: docker build -t "alcion/docs:latest" . dev: genclidocs - docker run --rm -it \ - -p 3000:3000 \ - -v ${PWD}:/usr/src/docs alcion/docs + $(DOCSC) npm start -- --host 0.0.0.0 VALE_TARGET ?= docs README.md -dockercheck: genclidocs - docker run --rm \ - -v ${PWD}:/usr/src/docs alcion/docs vale $(VALE_TARGET) - docker run --rm \ - -v ${PWD}:/usr/src/docs alcion/docs markdownlint '**/*.md' --ignore styles/ --ignore src/ --ignore node_modules/ - check: genclidocs - vale $(VALE_TARGET) - markdownlint '**/*.md' --ignore styles/ --ignore src/ --ignore node_modules/ + $(DOCSC) vale $(VALE_TARGET) + $(DOCSC) markdownlint '**/*.md' --ignore styles/ --ignore src/ --ignore node_modules/ -shell: - docker run --rm -it \ - -p 3000:3000 \ - -v ${PWD}:/usr/src/docs alcion/docs /bin/bash +dockershell: + $(DOCSE) /bin/bash build: genclidocs - docker run --rm \ - -v ${PWD}:/usr/src/docs alcion/docs npm run build + $(DOCSC) npm run build genclidocs: ${MDGEN_BINARY} @echo 'Auto-generating Corso CLI docs...' - rm -rf docs/cli - docker run --rm -it \ - -v ${CORSO_REPO}:${CORSO_REPO_CONTAINER} -v ${CORSO_BUILD_DIR}:${CORSO_BUILD_DIR} \ - --workdir ${CORSO_REPO_CONTAINER}/src \ - --entrypoint ${MDGEN_BINARY} \ - golang:1.18 \ - --cli-folder ${CLI_DOCS_CONTAINER} + $(DOCSC) rm -rf docs/cli + $(GOC) ${MDGEN_BINARY} --cli-folder ${CLI_DOCS} -${MDGEN_BINARY}: $(shell find ../src -type f -name *.go) $(shell find ../src -type d ) +_validatemdgen: # in case we have a different architecture + ${MDGEN_BINARY} --help >/dev/null || rm -rf ${MDGEN_BINARY} + +${MDGEN_BINARY}: $(shell find ${CORSO_LOCAL_PATH}/src -type f -name *.go) $(shell find ${CORSO_LOCAL_PATH}/src -type d ) _validatemdgen @echo 'Re-building Corso CLI docs auto-gen tooling...' - docker run --rm -it \ - -v ${CORSO_REPO}:${CORSO_REPO_CONTAINER} -v ${CORSO_BUILD_DIR}:${CORSO_BUILD_DIR} \ - --env GOCACHE=${CORSO_BUILD_CACHE} --env GOMODCACHE=${CORSO_BUILD_MOD} --env GOTMPDIR=${CORSO_BUILD_DIR} \ - --workdir ${CORSO_REPO_CONTAINER}/src \ - --entrypoint /usr/local/go/bin/go \ - golang:1.18 \ - mod download - docker run --rm -it \ - -v ${CORSO_REPO}:${CORSO_REPO_CONTAINER} -v ${CORSO_BUILD_DIR}:${CORSO_BUILD_DIR} \ - --env GOCACHE=${CORSO_BUILD_CACHE} --env GOMODCACHE=${CORSO_BUILD_MOD} --env GOTMPDIR=${CORSO_BUILD_DIR} \ - --workdir ${CORSO_REPO_CONTAINER}/src \ - --entrypoint /usr/local/go/bin/go \ - golang:1.18 \ - build -o ${MDGEN_BINARY} ${MDGEN_SRC_CONTAINER} + $(GOC) go mod download + $(GOC) go build -o ${MDGEN_BINARY} ${MDGEN_SRC} + +clean: + $(DOCSC) rm -rf docs/cli + $(DOCSC) rm -rf ${CORSO_BUILD_DIR} \ No newline at end of file diff --git a/website/Dockerfile b/website/Dockerfile index 142d63fd0..8d00f95bd 100644 --- a/website/Dockerfile +++ b/website/Dockerfile @@ -25,5 +25,6 @@ RUN yarn install \ && yarn cache clean \ && rm -f package.json yarn.lock ENV PATH /usr/src/node_modules/.bin:$PATH +ENV NODE_MODULES_PATH ../ WORKDIR /usr/src/website diff --git a/website/Makefile b/website/Makefile index 80d21449b..31a94fa1a 100644 --- a/website/Makefile +++ b/website/Makefile @@ -1,19 +1,22 @@ .PHONY: buildimage dev shell build publish sync +WEBC := docker run --rm -it --init -p 5050:3000 -p 5051:3001 \ + -v ${PWD}:/usr/src/website corso/website +ifeq (${CORSO_USE_DOCKER},-1) + WEBC := +endif + buildimage: docker build -t "corso/website:latest" . dev: - docker run --rm -it --init -p 5050:3000 -p 5051:3001 \ - -v ${PWD}:/usr/src/website corso/website gulp + $(WEBC) gulp shell: - docker run --rm -it -p 5050:3000 -p 5051:3001 \ - -v ${PWD}:/usr/src/website corso/website /bin/bash + $(WEBC) /bin/bash build: - docker run --rm -it --init \ - -v ${PWD}:/usr/src/website corso/website gulp build + $(WEBC) gulp build publish: build docker run -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY \ diff --git a/website/gulpfile.js b/website/gulpfile.js index 8a5aa25cc..eb3e0886c 100644 --- a/website/gulpfile.js +++ b/website/gulpfile.js @@ -213,7 +213,7 @@ gulp.task('copy:all', function () { gulp.task('copy:libs', function () { return gulp - .src(npmdist({ nodeModulesPath: '../' }), { base: paths.base.node.dir }) + .src(npmdist({ nodeModulesPath: process.env.NODE_MODULES_PATH || './' }), { base: paths.base.node.dir }) .pipe(rename(function (path) { path.dirname = path.dirname.replace(/\/dist/, '').replace(/\\dist/, ''); }))