Skip to content
This repository has been archived by the owner on Oct 11, 2024. It is now read-only.

Commit

Permalink
Option to not use docker for Makefile in docs/website (#1087)
Browse files Browse the repository at this point in the history
## Description

This makes it so that we have an option to locally run all Makefile targets without having to go through Docker. That said, it retains Docker as the default way to run it, but now we can set an evn variable `CORSO_USE_DOCKER=-1` to skip running through docker. I understand if this looks a bit hacky and don't want to add it in, but thought I wold propose this anyways. While not major, I was able to get a good amount of decrease in build times.

## Type of change

<!--- Please check the type of change your PR introduces: --->
- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Test
- [x] 💻 CI/Deployment
- [ ] 🐹 Trivial/Minor

## Issue(s)

<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
* #<issue>

## Test Plan

<!-- How will this be tested prior to merging.-->
- [x] 💪 Manual
- [ ] ⚡ Unit test
- [ ] 💚 E2E
  • Loading branch information
meain authored Oct 14, 2022
1 parent 29015df commit 4b94c4f
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 53 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ jobs:
npm i -g [email protected] # 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
Expand Down
83 changes: 37 additions & 46 deletions docs/Makefile
Original file line number Diff line number Diff line change
@@ -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 := ${PWD}/..
CORSO_REPO_CONTAINER := /go/src/github.com/alcionai/corso

MDGEN_SRC_CONTAINER := ${CORSO_REPO_CONTAINER}/src/cmd/mdgen/mdgen.go
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

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}
1 change: 1 addition & 0 deletions website/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
15 changes: 9 additions & 6 deletions website/Makefile
Original file line number Diff line number Diff line change
@@ -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 \
Expand Down
2 changes: 1 addition & 1 deletion website/gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -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/, '');
}))
Expand Down

0 comments on commit 4b94c4f

Please sign in to comment.