ci: handle no-tty mode
This commit is contained in:
parent
ef5b288261
commit
27e203a3ac
4 changed files with 96 additions and 12 deletions
24
.github/workflows/build-and-publish.yml
vendored
24
.github/workflows/build-and-publish.yml
vendored
|
@ -79,16 +79,32 @@ jobs:
|
||||||
docker image ls -a
|
docker image ls -a
|
||||||
|
|
||||||
- name: Build HTML for docs
|
- name: Build HTML for docs
|
||||||
run: ./scripts/gx-teaching . build-docs-html
|
run: |
|
||||||
|
./scripts/gx-teaching \
|
||||||
|
--no-tty \
|
||||||
|
--data-dir . \
|
||||||
|
--action build-docs-html
|
||||||
|
|
||||||
- name: Build PDF for docs
|
- name: Build PDF for docs
|
||||||
run: ./scripts/gx-teaching . build-slides-pdf
|
run: |
|
||||||
|
./scripts/gx-teaching \
|
||||||
|
--no-tty \
|
||||||
|
--data-dir . \
|
||||||
|
--action build-slides-pdf
|
||||||
|
|
||||||
- name: Build HTML for slides
|
- name: Build HTML for slides
|
||||||
run: ./scripts/gx-teaching . build-slides-html
|
run: |
|
||||||
|
./scripts/gx-teaching \
|
||||||
|
--no-tty \
|
||||||
|
--data-dir . \
|
||||||
|
--action build-slides-html
|
||||||
|
|
||||||
- name: Build PDF for slides
|
- name: Build PDF for slides
|
||||||
run: ./scripts/gx-teaching . build-slides-pdf
|
run: |
|
||||||
|
./scripts/gx-teaching \
|
||||||
|
--no-tty \
|
||||||
|
--data-dir . \
|
||||||
|
--action build-slides-pdf
|
||||||
|
|
||||||
push-docker-image:
|
push-docker-image:
|
||||||
name: "Push docker image to registry"
|
name: "Push docker image to registry"
|
||||||
|
|
22
Makefile
22
Makefile
|
@ -174,13 +174,29 @@ $(BUILD_SLIDES_DIR):
|
||||||
## docs => static web site
|
## docs => static web site
|
||||||
##
|
##
|
||||||
|
|
||||||
build: build-docs build-slides ## build all documents
|
build: build-pdf build-html ## build all documents as PDF and HTML files
|
||||||
|
|
||||||
build-slides: $(SLIDES_PDF_ALL) $(SLIDES_MD_ALL) ## build PDF slides only
|
build-pdf: build-docs-pdf build-slides-pdf ## build all documents as PDF files
|
||||||
|
|
||||||
|
build-html: build-docs-html build-slides-html ## build all documents as HTML files
|
||||||
|
|
||||||
|
|
||||||
|
build-slides-pdf: $(SLIDES_PDF_ALL) $(SLIDES_MD_ALL) ## build PDF slides only
|
||||||
|
|
||||||
merge-slides: $(SLIDES_MDPP_MD) $(SLIDES_MD_ALL)
|
merge-slides: $(SLIDES_MDPP_MD) $(SLIDES_MD_ALL)
|
||||||
|
|
||||||
build-docs: ## build static docs site only
|
build-docs-pdf:
|
||||||
|
mkdir -p $(BUILD_DOCS_DIR)
|
||||||
|
rm -f $(BUILD_DOCS_DIR)/combined.pdf
|
||||||
|
PYTHONUTF8=1 \
|
||||||
|
ENABLE_PDF_EXPORT=1 \
|
||||||
|
pipenv run mkdocs build \
|
||||||
|
--site-dir $(BUILD_DOCS_DIR)
|
||||||
|
pdftk \
|
||||||
|
$$(find $(BUILD_DOCS_DIR) -name *.pdf -not -name index.pdf |sort ) \
|
||||||
|
cat output $(BUILD_DOCS_DIR)/combined.pdf
|
||||||
|
|
||||||
|
build-docs-html: ## build static docs site only
|
||||||
mkdir -p $(BUILD_DOCS_DIR)
|
mkdir -p $(BUILD_DOCS_DIR)
|
||||||
pipenv run mkdocs build \
|
pipenv run mkdocs build \
|
||||||
--site-dir $(BUILD_DOCS_DIR)
|
--site-dir $(BUILD_DOCS_DIR)
|
||||||
|
|
|
@ -9,6 +9,11 @@ echo "Arguments: $ARGS"
|
||||||
EXT_UID=${EXT_UID:-999}
|
EXT_UID=${EXT_UID:-999}
|
||||||
EXT_GID=${EXT_GID:-999}
|
EXT_GID=${EXT_GID:-999}
|
||||||
|
|
||||||
|
# Create missing directories
|
||||||
|
mkdir -p _cache
|
||||||
|
mkdir -p _build
|
||||||
|
mkdir -p .marp
|
||||||
|
|
||||||
# Create user with given ID if needed
|
# Create user with given ID if needed
|
||||||
if ! grep -q "^[^:]*:[^:]*:$EXT_UID:" /etc/group ; then
|
if ! grep -q "^[^:]*:[^:]*:$EXT_UID:" /etc/group ; then
|
||||||
groupadd -g "$EXT_GID" appuser
|
groupadd -g "$EXT_GID" appuser
|
||||||
|
@ -20,6 +25,7 @@ if ! grep -q "^[^:]*:[^:]*:$EXT_UID:" /etc/passwd ; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "_build" ]; then
|
if [ -d "_build" ]; then
|
||||||
|
chown -R "$EXT_UID:$EXT_GID" _cache
|
||||||
chown -R "$EXT_UID:$EXT_GID" _build
|
chown -R "$EXT_UID:$EXT_GID" _build
|
||||||
chown -R "$EXT_UID:$EXT_GID" .marp
|
chown -R "$EXT_UID:$EXT_GID" .marp
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,12 +1,58 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# vim: set ft=sh:
|
# vim: set ft=sh:
|
||||||
|
|
||||||
BASEDIR="${1:-.}"
|
BASEDIR="."
|
||||||
BASEDIR="$(cd "$BASEDIR" && pwd)"
|
ACTION="watch"
|
||||||
|
|
||||||
ACTION="${2:-watch}"
|
|
||||||
|
|
||||||
DOCKER_IMAGE=glenux/teaching-boilerplate:latest
|
DOCKER_IMAGE=glenux/teaching-boilerplate:latest
|
||||||
|
DOCKER_OPT_TTY="-t"
|
||||||
|
|
||||||
|
# Parse arguments
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
ARG="${1:-}"
|
||||||
|
OPT="${2:-}"
|
||||||
|
shift
|
||||||
|
|
||||||
|
echo "ARG=$ARG OPT=$OPT"
|
||||||
|
|
||||||
|
case "$ARG" in
|
||||||
|
-d|--data-dir)
|
||||||
|
shift # argument requires a parameter
|
||||||
|
if [ -z "$OPT" ]; then
|
||||||
|
>&2 echo "ERROR: missing argument for --data-dir"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -d "$OPT" ]; then
|
||||||
|
>&2 echo "ERROR: argument for --data-dir must be a directory"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
BASEDIR="$(cd "$OPT" && pwd)"
|
||||||
|
;;
|
||||||
|
-a|--action)
|
||||||
|
shift # argument requires a parameter
|
||||||
|
if [ -z "$OPT" ]; then
|
||||||
|
>&2 echo "ERROR: missing argument for --action"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
ACTION="$OPT"
|
||||||
|
;;
|
||||||
|
-T|--no-tty)
|
||||||
|
DOCKER_OPT_TTY=""
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
echo "Usage: $0 [options]"
|
||||||
|
echo ""
|
||||||
|
echo "-d, --data-dir DIR Content directory"
|
||||||
|
echo "-a, --action ACTION Action (watch, build, shell, etc.)"
|
||||||
|
echo "-t, --tty Enable TTY mode (needed for shell)"
|
||||||
|
echo "-h, --help Show this help"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
>&2 echo "ERROR: unknown option '$ARG'"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
echo "basedir = $BASEDIR"
|
echo "basedir = $BASEDIR"
|
||||||
echo "docker_image = $DOCKER_IMAGE"
|
echo "docker_image = $DOCKER_IMAGE"
|
||||||
|
@ -34,7 +80,7 @@ if [ -d "$BASEDIR/docs" ]; then
|
||||||
DOCKER_OPT_MKDOCS_PORT="-p 5100:5100"
|
DOCKER_OPT_MKDOCS_PORT="-p 5100:5100"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker run -it \
|
docker run -i $DOCKER_OPT_TTY \
|
||||||
--shm-size=1gb \
|
--shm-size=1gb \
|
||||||
-e "EXT_UID=$(id -u)" \
|
-e "EXT_UID=$(id -u)" \
|
||||||
-e "EXT_GID=$(id -g)" \
|
-e "EXT_GID=$(id -g)" \
|
||||||
|
|
Loading…
Reference in a new issue