From 40ea94c33b42ebbc4563de782881298bd3837c92 Mon Sep 17 00:00:00 2001 From: rohan kumar Date: Sat, 12 Dec 2020 21:04:01 -0800 Subject: [PATCH] CI: use Makefile to lint, build, and deploy Switch from the deploy.sh shell script to a more configurable Makefile. --- .build.yml | 7 ++----- .gitignore | 1 + .hintrc | 9 ++++++--- .rsyncignore | 5 +++++ .stylelintignore | 4 ++++ .stylelintrc.json | 6 ++++++ Makefile | 47 +++++++++++++++++++++++++++++++++++++++++++++++ deploy.sh | 38 -------------------------------------- 8 files changed, 71 insertions(+), 46 deletions(-) create mode 100644 .rsyncignore create mode 100644 .stylelintignore create mode 100644 .stylelintrc.json create mode 100644 Makefile delete mode 100755 deploy.sh diff --git a/.build.yml b/.build.yml index 2c67975..f3dea0a 100644 --- a/.build.yml +++ b/.build.yml @@ -13,10 +13,7 @@ triggers: condition: always to: seirdy@seirdy.one tasks: - - build: | - cd seirdy.one - hugo - - upload: | + - build_deploy: | cd seirdy.one echo "StrictHostKeyChecking=no" >> ~/.ssh/config - sh ./deploy.sh seirdy.one + make build deploy diff --git a/.gitignore b/.gitignore index 1841a5c..95eaf4c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ public/ public_*/ hint-report/ +.hintrc-local diff --git a/.hintrc b/.hintrc index bb01eb8..a8a6e61 100644 --- a/.hintrc +++ b/.hintrc @@ -5,12 +5,15 @@ "connector": { "name": "puppeteer", "options": { - "browser": "Chromium", - "headless": false + "headless": true, + "browser": "Chromium" } }, "browserslist": [ - ">.01%, last 2 versions, not dead" + ">0%", + "last 8 versions", + "not dead", + "dead" ], "hints": { "axe/other": "error", diff --git a/.rsyncignore b/.rsyncignore new file mode 100644 index 0000000..447d421 --- /dev/null +++ b/.rsyncignore @@ -0,0 +1,5 @@ +misc/ +music.txt +music.txt.gz +.well-known +_* diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 0000000..4792b07 --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,4 @@ +public/ +public_*/ +hint-report/ +themes/etch-custom/exampleSite diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 0000000..7fd1f96 --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,6 @@ +{ + "extends": "stylelint-config-standard", + "rules": { + "indentation": "tab" + } +} diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ce0fe8a --- /dev/null +++ b/Makefile @@ -0,0 +1,47 @@ +CSS_DIR = themes/etch-custom/assets/css + +USER = deploy@seirdy.one +WWW_ROOT = /var/www/seirdy.one +GEMINI_ROOT = /srv/gemini/seirdy.one + +WWW_RSYNC_DEST = $(USER):$(WWW_ROOT) +GEMINI_RSYNC_DEST = $(USER):$(GEMINI_ROOT) + +OUTPUT_DIR = public/ + +RSYNCFLAGS += -avzP --zc=zstd + +# .hintrc-local for linting local files +# same as regular .hintrc but with a different connector. +.hintrc-local: .hintrc + jq --tab '.connector .name = "local" | del(.connector .options)' <.hintrc >.hintrc-local + +clean: + rm -rf $(OUTPUT_DIR) .hintrc-local + +lint-css: + stylelint $(CSS_DIR)/main.css $(CSS_DIR)/dark.css $(CSS_DIR)/narrow.css + csslint $(CSS_DIR) + +lint: lint-css build .hintrc-local + hint --config .hintrc-local -f codeframe $(OUTPUT_DIR) + +hugo: + hugo + +build: hugo +ifndef NO_GZIP_STATIC + find $(OUTPUT_DIR) -type f -name '*.html' -o -name '*.css' -o -name '*.xml' -o -name '*.txt' \ + | grep -v gemini \ + | xargs zopfli --i150 --gzip +endif + + +deploy: build + rsync $(RSYNCFLAGS) --exclude 'gemini' --exclude '*.gmi' --exclude-from .rsyncignore public/ $(WWW_RSYNC_DEST) --delete + rsync $(RSYNCFLAGS) --exclude '*.html' --exclude '*.xml' --exclude-from .rsyncignore public/gemini/ public/about public/posts public/publickey.txt $(GEMINI_RSYNC_DEST)/ + rsync $(RSYNCFLAGS) public/posts/gemini.xml $(GEMINI_RSYNC_DEST)/feed.xml + +all: clean lint deploy + +.PHONY: clean lint-css lint build deploy all diff --git a/deploy.sh b/deploy.sh deleted file mode 100755 index be77ce1..0000000 --- a/deploy.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -case "$1" in - seirdy.one) - login='deploy@seirdy.one' # user@host - www_prefix="$login:/var/www/seirdy.one" - gemini_prefix="$login:/srv/gemini/seirdy.one" - ;; - envs.net) - login='seirdy@envs.net' - www_prefix="$login:/home/seirdy/public_html" - gemini_prefix="$login:/home/seirdy/public_gemini" - ;; - localhost) - www_prefix='/tmp/www/seeirdy.one' - gemini_prefix='/tmp/gemini/serve/seirdy.one' - mkdir -p "$www_prefix" "$gemini_prefix" - ;; - *) - echo 'must supply hostname' >&2 - exit 1 - ;; -esac - -# I use gzip_static with nginx -if [ "$1" = 'seirdy.one' ]; then - find public -type f -name '*.html' -o -name '*.css' -o -name '*.xml' -o -name '*.txt' \ - | grep -v gemini \ - | xargs zopfli -fi - -rsync -avzP \ - --exclude 'gemini' --exclude '*.gmi' --exclude 'misc/' --exclude 'music.txt' --exclude '.well-known' \ - public/ "$www_prefix/" --delete -rsync -avzP \ - --exclude '*.html' --exclude 'misc/' --exclude 'music.txt' --exclude '*.xml' \ - public/gemini/ public/about public/posts public/publickey.txt "$gemini_prefix/" --delete -rsync -avzP public/posts/gemini.xml "$gemini_prefix/feed.xml"