diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9afddb1cc1ee1f4f60baa154ad9f58b9fd109f42..f8cc942eab5dbc72b474dd2cb2d169d65633f7d1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,10 +5,8 @@ default: entrypoint: [""] build: - script: + before_script: - apk --no-cache add make git - - sh --version; git --version; pandoc --version - - git branch --verbose; git branch --verbose --remote - - make prepare wipe - - make + - git --version; pandoc --version + script: - make publish diff --git a/Makefile b/Makefile index 6fceec979b5cc525425151f0e3494e3514ee20a6..66863eb9a3a489ee405f52284b1cc5c975fc4109 100644 --- a/Makefile +++ b/Makefile @@ -9,36 +9,39 @@ OUT_MARKUP := $(SRC_MARKUP:$(SRC)/%.md=$(OUT)/%.php) OUT_OTHERS := $(SRC_OTHERS:$(SRC)/%=$(OUT)/%) OUT_DIRS := $(SRC_DIRS:$(SRC)/%=$(OUT)/%) -.PHONY: all prepare wipe publish clean +.PHONY: prepare build publish clean +.DEFAULT_GOAL := build -all : $(OUT_MARKUP) $(OUT_OTHERS) +prepare : $(OUT)/.git -prepare : $(OUT) - git fetch origin public - git worktree add $(OUT) public - if [ -n "$${DEPLOY_TOKEN}" ]; then \ - git config user.name '${GITLAB_USER_NAME}'; \ - git config user.email '${GITLAB_USER_EMAIL}'; \ - git remote set-url origin "https://cicd:$${DEPLOY_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git"; \ - fi +build : $(OUT_MARKUP) $(OUT_OTHERS) -wipe : - find $(OUT) -mindepth 1 -not -name '.git' -delete - -publish : - git -C $(OUT) add . - git -C $(OUT) commit --message 'Publish from $(shell git rev-parse HEAD)' - git -C $(OUT) push --push-option ci.skip origin 'HEAD:public' +publish : | prepare build + if [ -n "$$(git -C $(OUT) status --porcelain)" ]; then \ + cd $(OUT) ;\ + git add . ;\ + git commit --message 'Publish from $(shell git rev-parse HEAD)' ;\ + git push --push-option ci.skip origin 'HEAD:public' ;\ + fi clean : rm -fr $(OUT) git worktree prune +$(OUT)/.git : + git fetch origin public + git worktree add --no-checkout $(OUT) public + if [ "$$CI" == 'true' -a -n "$$DEPLOY_TOKEN" ]; then \ + git config user.name "$$GITLAB_USER_NAME" ;\ + git config user.email "$$GITLAB_USER_EMAIL" ;\ + git remote set-url origin "https://cicd:$${DEPLOY_TOKEN}@$${CI_SERVER_HOST}/$${CI_PROJECT_PATH}.git" ;\ + fi + $(OUT) : mkdir $(OUT) $(OUT_DIRS) : $(OUT) - mkdir -p $@ + @mkdir -p $@ .SECONDEXPANSION: # oooh, magic *_*