From 083b39ef179b9a29e946ade06b94b3fe19d42e78 Mon Sep 17 00:00:00 2001 From: Willy Kloucek Date: Thu, 25 Feb 2021 14:37:34 +0100 Subject: [PATCH] introduce hot reload for docs --- .bingo/Variables.mk | 6 ++++++ .bingo/mutagen.mod | 5 +++++ .bingo/variables.env | 2 ++ .drone.star | 31 +++++++++++++-------------- .make/changelog.mk | 3 --- .make/docs.mk | 2 +- .make/go.mk | 4 ++++ .make/release.mk | 2 +- Makefile | 16 ++++++++------ docs/.gitignore | 3 ++- docs/Makefile | 51 +++++++++++++++++++++++++++----------------- docs/mutagen.yml | 14 ++++++++++++ store/reflex.conf | 3 +++ 13 files changed, 95 insertions(+), 47 deletions(-) create mode 100644 .bingo/mutagen.mod delete mode 100644 .make/changelog.mk create mode 100644 docs/mutagen.yml create mode 100644 store/reflex.conf diff --git a/.bingo/Variables.mk b/.bingo/Variables.mk index 4f45ce4db1..f28bbfd2fb 100644 --- a/.bingo/Variables.mk +++ b/.bingo/Variables.mk @@ -77,6 +77,12 @@ $(HUGO): $(BINGO_DIR)/hugo.mod @echo "(re)installing $(GOBIN)/hugo-v0.80.0" @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=hugo.mod -o=$(GOBIN)/hugo-v0.80.0 "github.com/gohugoio/hugo" +MUTAGEN := $(GOBIN)/mutagen-v0.11.8 +$(MUTAGEN): $(BINGO_DIR)/mutagen.mod + @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. + @echo "(re)installing $(GOBIN)/mutagen-v0.11.8" + @cd $(BINGO_DIR) && $(GO) build -mod=mod -modfile=mutagen.mod -o=$(GOBIN)/mutagen-v0.11.8 "github.com/mutagen-io/mutagen/cmd/mutagen" + PROTOC_GEN_DOC := $(GOBIN)/protoc-gen-doc-v1.4.1 $(PROTOC_GEN_DOC): $(BINGO_DIR)/protoc-gen-doc.mod @# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies. diff --git a/.bingo/mutagen.mod b/.bingo/mutagen.mod new file mode 100644 index 0000000000..76fdc78d56 --- /dev/null +++ b/.bingo/mutagen.mod @@ -0,0 +1,5 @@ +module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT + +go 1.15 + +require github.com/mutagen-io/mutagen v0.11.8 // cmd/mutagen diff --git a/.bingo/variables.env b/.bingo/variables.env index 2b51685cbd..d5a5711b4b 100644 --- a/.bingo/variables.env +++ b/.bingo/variables.env @@ -28,6 +28,8 @@ GOX="${GOBIN}/gox-v1.0.1" HUGO="${GOBIN}/hugo-v0.80.0" +MUTAGEN="${GOBIN}/mutagen-v0.11.8" + PROTOC_GEN_DOC="${GOBIN}/protoc-gen-doc-v1.4.1" PROTOC_GEN_GO="${GOBIN}/protoc-gen-go-v1.25.0" diff --git a/.drone.star b/.drone.star index 16d46b59c1..7d8264d512 100644 --- a/.drone.star +++ b/.drone.star @@ -302,7 +302,7 @@ def testOcisModule(ctx, module): }, { 'name': 'coverage-cache', - 'image': 'plugins/s3', + 'image': 'plugins/s3:1', 'settings': { 'endpoint': { 'from_secret': 'cache_s3_endpoint' @@ -411,7 +411,7 @@ def uploadCoverage(ctx): }, { 'name': 'sonarcloud', - 'image': 'sonarsource/sonar-scanner-cli', + 'image': 'sonarsource/sonar-scanner-cli:latest', 'pull': 'always', 'environment': sonar_env, }, @@ -713,7 +713,7 @@ def dockerRelease(ctx, arch): build() + [ { 'name': 'dryrun', - 'image': 'plugins/docker:18.09', + 'image': 'plugins/docker:latest', 'pull': 'always', 'settings': { 'dry_run': True, @@ -733,7 +733,7 @@ def dockerRelease(ctx, arch): }, { 'name': 'docker', - 'image': 'plugins/docker:18.09', + 'image': 'plugins/docker:latest', 'pull': 'always', 'settings': { 'username': { @@ -783,7 +783,7 @@ def dockerEos(ctx): build() + [ { 'name': 'dryrun-eos-ocis', - 'image': 'plugins/docker:18.09', + 'image': 'plugins/docker:latest', 'pull': 'always', 'settings': { 'dry_run': True, @@ -802,7 +802,7 @@ def dockerEos(ctx): }, { 'name': 'docker-eos-ocis', - 'image': 'plugins/docker:18.09', + 'image': 'plugins/docker:latest', 'pull': 'always', 'settings': { 'username': { @@ -915,10 +915,10 @@ def binaryRelease(ctx, name): }, { 'name': 'changelog', - 'image': 'toolhippie/calens:latest', + 'image': 'webhippie/golang:1.15', 'pull': 'always', 'commands': [ - 'calens --version %s -o ocis/dist/CHANGELOG.md' % ctx.build.ref.replace("refs/tags/v", "").split("-")[0], + 'make changelog CHANGELOG_VERSION=%s' % ctx.build.ref.replace("refs/tags/v", "").split("-")[0], ], 'when': { 'ref': [ @@ -1195,17 +1195,16 @@ def docs(ctx): }, { 'name': 'prepare', - 'image': 'owncloudci/alpine:latest', + 'image': 'webhippie/golang:1.15', 'commands': [ 'make -C docs docs-copy' ], }, { 'name': 'test', - 'image': 'owncloudci/hugo:0.71.0', + 'image': 'webhippie/golang:1.15', 'commands': [ - 'cd docs/hugo', - 'hugo', + 'make -C docs test' ], }, { @@ -1234,13 +1233,13 @@ def docs(ctx): 'name': 'list and remove temporary files', 'image': 'owncloudci/alpine:latest', 'commands': [ - 'tree hugo/public', + 'tree docs/hugo/public', 'rm -rf docs/hugo', ], }, { 'name': 'downstream', - 'image': 'plugins/downstream', + 'image': 'plugins/downstream:latest', 'settings': { 'server': 'https://drone.owncloud.com/', 'token': { @@ -1480,7 +1479,7 @@ def deploy(ctx, config, rebuild): 'steps': [ { 'name': 'clone continuous deployment playbook', - 'image': 'alpine/git', + 'image': 'alpine/git:latest', 'commands': [ 'cd deployments/continuous-deployment-config', 'git clone https://github.com/owncloud-devops/continuous-deployment.git', @@ -1488,7 +1487,7 @@ def deploy(ctx, config, rebuild): }, { 'name': 'deploy', - 'image': 'owncloudci/drone-ansible', + 'image': 'owncloudci/drone-ansible:latest', 'failure': 'ignore', 'environment': { 'CONTINUOUS_DEPLOY_SERVERS_CONFIG': '../%s' % (config), diff --git a/.make/changelog.mk b/.make/changelog.mk deleted file mode 100644 index fc7939b34f..0000000000 --- a/.make/changelog.mk +++ /dev/null @@ -1,3 +0,0 @@ -.PHONY: changelog -changelog: $(CALENS) - $(CALENS) >| CHANGELOG.md \ No newline at end of file diff --git a/.make/docs.mk b/.make/docs.mk index ea3f7182cc..4c8b720451 100644 --- a/.make/docs.mk +++ b/.make/docs.mk @@ -4,4 +4,4 @@ config-docs-generate: $(FLAEX) @$(FLAEX) >| ../docs/extensions/$(NAME)/configuration.md .PHONY: grpc-docs-generate -grpc-docs-generate: ../docs/extensions/${NAME}/grpc.md \ No newline at end of file +grpc-docs-generate: ../docs/extensions/${NAME}/grpc.md diff --git a/.make/go.mk b/.make/go.mk index abde2be972..7b2cd85197 100644 --- a/.make/go.mk +++ b/.make/go.mk @@ -106,3 +106,7 @@ $(BIN)/$(EXECUTABLE): $(SOURCES) $(BIN)/$(EXECUTABLE)-debug: $(SOURCES) $(GOBUILD) -v -tags '$(TAGS)' -ldflags '$(DEBUG_LDFLAGS)' -gcflags '$(GCFLAGS)' -o $@ ./cmd/$(NAME) + +.PHONY: watch +watch: $(REFLEX) + $(REFLEX) -c reflex.conf diff --git a/.make/release.mk b/.make/release.mk index 7b2b05fb79..28874aeeaa 100644 --- a/.make/release.mk +++ b/.make/release.mk @@ -30,4 +30,4 @@ release-check: cd $(DIST)/release; $(foreach file,$(wildcard $(DIST)/release/$(EXECUTABLE)-*),sha256sum $(notdir $(file)) > $(notdir $(file)).sha256;) .PHONY: release-finish -release-finish: release-copy release-check \ No newline at end of file +release-finish: release-copy release-check diff --git a/Makefile b/Makefile index 08ce51c73f..2c7e456443 100644 --- a/Makefile +++ b/Makefile @@ -108,12 +108,6 @@ docs-generate: $(MAKE) --no-print-directory -C $$mod docs-generate; \ done -.PHONY: config-docs-generate -config-docs-generate: - @for mod in $(OCIS_MODULES); do \ - $(MAKE) --no-print-directory -C $$mod config-docs-generate; \ - done - .PHONY: ci-go-generate ci-go-generate: @for mod in $(OCIS_MODULES); do \ @@ -145,5 +139,15 @@ go-coverage: echo -n "% coverage $$mod: "; $(MAKE) --no-print-directory -C $$mod go-coverage; \ done +.PHONY: bingo-update bingo-update: $(BINGO) $(BINGO) get -u + +CHANGELOG_VERSION = + +.PHONY: changelog +changelog: $(CALENS) +ifndef CHANGELOG_VERSION + $(error CHANGELOG_VERSION is undefined) +endif + $(CALENS) --version $(CHANGELOG_VERSION) -o ocis/dist/CHANGELOG.md diff --git a/docs/.gitignore b/docs/.gitignore index 1bffed552e..0ad8bbf7ee 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1 +1,2 @@ -hugo/ \ No newline at end of file +hugo/ +mutagen.yml.lock diff --git a/docs/Makefile b/docs/Makefile index e2c5c52fb1..fb099039bf 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -10,29 +10,42 @@ help: docs-generate: ## run docs-generate for all oCIS extensions @$(MAKE) --no-print-directory -C ../ docs-generate -.PHONY: config-docs-generate -config-docs-generate: ## run config-docs-generate for all oCIS extensions - @$(MAKE) --no-print-directory -C ../ config-docs-generate - -.PHONY: docs-copy -docs-copy: ## copy docs to hugo +.PHONY: docs-init +docs-init: @mkdir -p hugo/content/ - @cd hugo; \ - git init; \ - git config advice.detachedHead false; \ - git remote rm origin; \ - git remote add origin https://github.com/owncloud/owncloud.github.io; \ - git fetch --depth=1; \ - git checkout origin/source -f; \ - rsync -ax --delete --exclude hugo/ --exclude Makefile --exclude .gitignore --exclude README.md ../. content/; \ + @cd hugo && git init + @cd hugo && git config advice.detachedHead false + @cd hugo && git remote rm origin || true + @cd hugo && git remote add origin https://github.com/owncloud/owncloud.github.io + @cd hugo && git fetch --depth=1 + @cd hugo && git checkout origin/source -f .PHONY: docs-serve -docs-serve: $(HUGO) docs-generate docs-copy ## serve docs with hugo - cd hugo && $(HUGO) server +docs-serve: docs-init docs-generate docs-copy ## serve docs with hugo + @bash -c "trap 'trap - SIGINT SIGTERM ERR; $(MAKE) --no-print-directory docs-sync-stop; exit 0' SIGINT SIGTERM ERR; $(MAKE) --no-print-directory docs-sync-start && $(MAKE) --no-print-directory hugo-serve" + +.PHONY: test +test: $(HUGO) + @cd hugo && $(HUGO) -.PHONY: docs-serve-simple -docs-serve-simple: $(HUGO) config-docs-generate docs-copy ## serve docs with hugo without protobuf generation - cd hugo && $(HUGO) server +.PHONY: hugo-serve +hugo-serve: $(HUGO) + @cd hugo && $(HUGO) server + +.PHONY: docs-copy +docs-copy: docs-init docs-sync-start docs-sync-stop + +.PHONY: docs-sync-start +docs-sync-start: $(MUTAGEN) + @$(MUTAGEN) project terminate || true + @$(MUTAGEN) daemon stop || true + @$(MUTAGEN) project start + @$(MUTAGEN) project flush + +.PHONY: docs-sync-stop +docs-sync-stop: $(MUTAGEN) + @$(MUTAGEN) project terminate + @$(MUTAGEN) daemon stop .PHONY: clean clean: ## clean up docs build artifacts diff --git a/docs/mutagen.yml b/docs/mutagen.yml new file mode 100644 index 0000000000..09c2d9b885 --- /dev/null +++ b/docs/mutagen.yml @@ -0,0 +1,14 @@ +sync: + docs: + mode: one-way-replica + alpha: . + beta: ./hugo/content + flushOnCreate: true + ignore: + paths: + - .gitignore + - mutagen.yml + - mutagen.yml.lock + - hugo + - README.md + - Makefile diff --git a/store/reflex.conf b/store/reflex.conf new file mode 100644 index 0000000000..eecf7cc27c --- /dev/null +++ b/store/reflex.conf @@ -0,0 +1,3 @@ +# backend +-r '^(cmd|pkg)/.*\.go$' -R '^node_modules/' -s -- sh -c 'make bin/ocis-store-debug && bin/ocis-store-debug --log-level debug server --debug-pprof --debug-zpages' +'