diff options
| author | Richard Mortier <mort@cantab.net> | 2019-03-26 11:59:26 +0000 |
|---|---|---|
| committer | Richard Mortier <mort@cantab.net> | 2019-03-26 11:59:26 +0000 |
| commit | 5516721cc61695dcd3b427e4db546e9281d6c9fe (patch) | |
| tree | 5e254492111eac0e897499492fa94ddd214a0835 | |
| parent | 199fdef7fd084d3e9ca98e570b5e0120a67dab34 (diff) | |
| download | docker-abuild-5516721cc61695dcd3b427e4db546e9281d6c9fe.tar.bz2 docker-abuild-5516721cc61695dcd3b427e4db546e9281d6c9fe.tar.xz | |
abuild: support cross-invocation caching using named volumes
Signed-off-by: Richard Mortier <mort@cantab.net>
| -rw-r--r-- | Makefile | 13 | ||||
| -rwxr-xr-x | abuild | 28 |
2 files changed, 25 insertions, 16 deletions
@@ -1,23 +1,32 @@ .DEFAULT: build +IMG = mor1/abuild +VOLS = bin etc lib sbin usr var TAGS := $(shell \ curl -s https://registry.hub.docker.com/v1/repositories/alpine/tags \ | jq -r '.[].name' \ ) +TAGS = edge .PHONY: build build: $(patsubst %, build-%, $(TAGS)) + sed 's/%%ALPINE_VOLUMES%%/$(VOLS)/' abuild.in >| abuild .PHONY: build-% build-%: sed 's/%%ALPINE_TAG%%/$*/' Dockerfile.in >| Dockerfile - DOCKER_BUILDKIT=1 docker build $$DOCKER_FLAGS -t mor1/abuild:$* . + for v in $(VOLS) ; do docker volume create alpine-$*-$$v ; done + DOCKER_BUILDKIT=1 docker build $$DOCKER_FLAGS -t $(IMG):$* . $(RM) Dockerfile .PHONY: push push: build - docker push $(DOCKER_FLAGS) mor1/abuild + docker push $(DOCKER_FLAGS) $(IMG) .PHONY: clean clean: $(RM) Dockerfile + +.PHONY: distclean +distclean: clean + docker rmi -f $$(docker images -q $(IMG)) @@ -16,30 +16,30 @@ fi # use branch to figure out most appropriate alpine version if [ -z "$DOCKER_ABUILD_VERSION" ]; then - _ABUILD_BRANCH=$(git status | head -1) - _ABUILD_BRANCH="${_ABUILD_BRANCH##*[ /]}" - _ABUILD_BRANCH="${_ABUILD_BRANCH%-stable}" + ABUILD_BRANCH=$(git status | head -1) + ABUILD_BRANCH="${ABUILD_BRANCH##*[ /]}" + ABUILD_BRANCH="${ABUILD_BRANCH%-stable}" - case $_ABUILD_BRANCH in + case $ABUILD_BRANCH in [[:digit:]].[[:digit:]] ) - _ALPINE_VERSION=$_ABUILD_BRANCH + ALPINE_VERSION=$ABUILD_BRANCH ;; * ) - _ALPINE_VERSION=edge + ALPINE_VERSION=edge ;; esac else - _ALPINE_VERSION=$DOCKER_ABUILD_VERSION + ALPINE_VERSION=$DOCKER_ABUILD_VERSION fi -_ABUILD_DIR=${HOME}/.abuild/${_ALPINE_VERSION} -_ABUILD_VOLUMES=" +ABUILD_VOLUMES=" -v ${HOME}/.abuild:/home/builder/.abuild - -v ${_ABUILD_DIR}/.cache:/var/cache/apk - -v ${_ABUILD_DIR}/.distfiles:/var/cache/distfiles -v ${PWD%/aports*}/aports:/home/builder/aports - -v ${PWD%/aports*}/packages/${_ALPINE_VERSION}:/home/builder/packages " +for v in %%ALPINE_VOLUMES%%; do + ABUILD_VOLUMES="$ABUILD_VOLUMES -v alpine-$ALPINE_VERSION-$v:/$v" +done -DOCKER="docker run -ti $_ABUILD_VOLUMES -e DOCKER_ABUILD_DEBUG $_ABUILD_ARGS" -$DOCKER --workdir /home/builder/aports/${PWD#*/aports} mor1/abuild:$_ALPINE_VERSION "$@" +ABUILD_WORKDIR=/home/builder/aports${PWD#*/aports} +DOCKER="docker run -ti $ABUILD_VOLUMES -e DOCKER_ABUILD_DEBUG $DOCKER_ABUILD_ARGS" +$DOCKER --workdir $ABUILD_WORKDIR mor1/abuild:$ALPINE_VERSION "$@" |
