Skip to content

Commit

Permalink
replacing Dockefile with Dockerfile (#93)
Browse files Browse the repository at this point in the history
Co-authored-by: cloudpossebot <11232728+cloudpossebot@users.noreply.github.com>
  • Loading branch information
adamenger and cloudpossebot authored Apr 17, 2021
1 parent 4252687 commit f70f215
Show file tree
Hide file tree
Showing 4 changed files with 235 additions and 163 deletions.
82 changes: 69 additions & 13 deletions .build-harness
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,73 @@
# https://github.com/cloudposse/build-harness
#

# templates/Makefile.build-harness includes this Makefile
# and this Makefile includes templates/Makefile.build-harness
# to support different modes of invocation. Use a guard variable
# to prevent infinite recursive includes
ifeq ($(BUILD_HARNESS_TEMPLATES_MAKEFILE_GUARD),)
BUILD_HARNESS_TEMPLATES_MAKEFILE_GUARD := included

export SHELL = /bin/bash
export BUILD_HARNESS_PATH ?= $(shell until [ -d "$(BUILD_HARNESS_PROJECT)" ] || [ "`pwd`" == '/' ]; do cd ..; done; pwd)/$(BUILD_HARNESS_PROJECT)
export PWD = $(shell pwd)
export BUILD_HARNESS_ORG ?= cloudposse
export BUILD_HARNESS_PROJECT ?= build-harness
export BUILD_HARNESS_DOCKER_IMAGE ?= $(BUILD_HARNESS_ORG)/$(BUILD_HARNESS_PROJECT)
export BUILD_HARNESS_BRANCH ?= master
export BUILD_HARNESS_CLONE_URL ?= https://github.com/$(BUILD_HARNESS_ORG)/$(BUILD_HARNESS_PROJECT).git

# Resolves BUILD_HARNESS_PATH to BUILD_HARNESS_PATH_LOCAL when BUILD_HARNESS_PATH does not exist
BUILD_HARNESS_PATH ?= $(shell until [ -d "$(BUILD_HARNESS_PROJECT)" ] || [ "`pwd`" == '/' ]; do cd ..; done; pwd)/$(BUILD_HARNESS_PROJECT)
BUILD_HARNESS_PATH_LOCAL := $(PWD)/$(BUILD_HARNESS_PROJECT)
export BUILD_HARNESS_PATH := $(or $(wildcard $(BUILD_HARNESS_PATH)),$(BUILD_HARNESS_PATH_LOCAL))
# It is kind of expensive to figure out the Docker SHA tag, so we just define the command here, and only call it when needed
# With the ":=" syntax, it stores the current value of BUILD_HARNESS_PATH, so this has to come after that has been set with ":="
export BUILD_HARNESS_DOCKER_SHA_TAG_CMD := git -C "$(BUILD_HARNESS_PATH)" log -n 1 --format=sha-%h 2>/dev/null || echo latest

-include $(BUILD_HARNESS_PATH)/Makefile
# Toggles the auto-init feature
BUILD_HARNESS_AUTO_INIT ?= false

# Macro to clone/install BUILD_HARNESS_PROJECT
define harness_install
curl --retry 5 --fail --silent --retry-delay 1 \
https://raw.githubusercontent.com/$(BUILD_HARNESS_ORG)/$(BUILD_HARNESS_PROJECT)/$(BUILD_HARNESS_BRANCH)/bin/install.sh | \
bash -s "$(BUILD_HARNESS_ORG)" "$(BUILD_HARNESS_PROJECT)" "$(BUILD_HARNESS_BRANCH)"
endef

# Macro to auto-init the BUILD_HARNESS_PROJECT with the `include` directive
# Tests if BUILD_HARNESS_PROJECT does not yet exist, or if it does exist but the
# checkout does not match BUILD_HARNESS_BRANCH
define harness_auto_init
if [[ \
-f "/build-harness/Makefile" || -f "/$(BUILD_HARNESS_PROJECT)/Makefile" \
]]; then \
echo "[.build-harness]: In $(BUILD_HARNESS_PROJECT) docker container, skipping auto-init" ;\
elif [[ \
grep -q docker /proc/1/cgroup 2>/dev/null \
]]; then \
echo "[.build-harness]: In unknown docker container, skipping auto-init" ;\
elif [[ \
"$(BUILD_HARNESS_PATH)" != "$(BUILD_HARNESS_PATH_LOCAL)" && \
-f "$(BUILD_HARNESS_PATH)/Makefile" \
]]; then \
echo "[.build-harness]: Using external $(BUILD_HARNESS_PATH), skipping auto-init" ;\
elif [[ \
"$(BUILD_HARNESS_PATH)" == "$(BUILD_HARNESS_PATH_LOCAL)" && \
-f "$(BUILD_HARNESS_PATH)/Makefile" && \
"$$(git -C '$(BUILD_HARNESS_PATH_LOCAL)' ls-remote '$(BUILD_HARNESS_CLONE_URL)' '$(BUILD_HARNESS_BRANCH)' | cut -f1)" == "$$(git -C '$(BUILD_HARNESS_PATH_LOCAL)' rev-parse HEAD)" \
]]; then \
echo "[.build-harness]: Clone of $(BUILD_HARNESS_PROJECT) is up-to-date, skipping auto-init" ;\
else \
$(harness_install) ;\
fi
endef

-include $(if $(findstring true,$(BUILD_HARNESS_AUTO_INIT)),$(shell $(harness_auto_init) >&2)) $(BUILD_HARNESS_PATH)/Makefile

.PHONY : init
## Init build-harness
init::
@curl --retry 5 --fail --silent --retry-delay 1 https://raw.githubusercontent.com/$(BUILD_HARNESS_ORG)/$(BUILD_HARNESS_PROJECT)/$(BUILD_HARNESS_BRANCH)/bin/install.sh | \
bash -s "$(BUILD_HARNESS_ORG)" "$(BUILD_HARNESS_PROJECT)" "$(BUILD_HARNESS_BRANCH)"
@ $(harness_install)

.PHONY : clean
## Clean build-harness
Expand Down Expand Up @@ -47,17 +98,17 @@ build-harness/shell builder tester: MOUNT_HOME ?= $(shell [ -d "$$HOME" ] && pri
build-harness/shell builder tester: TARGETS ?= $(TARGET)
build-harness/shell builder tester: ARGS := $(if $(TARGETS),$(TARGETS),-l || true)
build-harness/shell builder tester: ENTRYPOINT := $(if $(TARGETS),/usr/bin/make,/bin/bash)
build-harness/shell builder: RUNNER_DOCKER_TAG ?= $(shell $(BUILD_HARNESS_DOCKER_SHA_TAG_CMD))
build-harness/shell builder: RUNNER_DOCKER_IMAGE ?= $(BUILD_HARNESS_DOCKER_IMAGE)
build-harness/shell builder pr/pre-commit: RUNNER_DOCKER_TAG ?= $(shell $(BUILD_HARNESS_DOCKER_SHA_TAG_CMD))
build-harness/shell builder pr/pre-commit: RUNNER_DOCKER_IMAGE ?= $(BUILD_HARNESS_DOCKER_IMAGE)
build-harness/shell builder: build-harness/runner
@exit 0

.PHONY: build-harness/shell-slim builder-slim pr/auto-format pr/auto-format/host tf14-upgrade
.PHONY: build-harness/shell-slim builder-slim pr/auto-format pr/auto-format/host pr/readme pr/readme/host pr/pre-commit tf14-upgrade

build-harness/shell-slim builder-slim pr/auto-format tf14-upgrade: RUNNER_DOCKER_IMAGE ?= $(BUILD_HARNESS_DOCKER_IMAGE)
build-harness/shell-slim builder-slim pr/auto-format pr/readme tf14-upgrade: RUNNER_DOCKER_IMAGE ?= $(BUILD_HARNESS_DOCKER_IMAGE)

build-harness/shell-slim builder-slim tf14-upgrade pr/auto-format: RUNNER_DOCKER_SHA_TAG ?= $(shell $(BUILD_HARNESS_DOCKER_SHA_TAG_CMD))
build-harness/shell-slim builder-slim tf14-upgrade pr/auto-format: RUNNER_DOCKER_TAG ?= \
build-harness/shell-slim builder-slim tf14-upgrade pr/auto-format pr/readme: RUNNER_DOCKER_SHA_TAG ?= $(shell $(BUILD_HARNESS_DOCKER_SHA_TAG_CMD))
build-harness/shell-slim builder-slim tf14-upgrade pr/auto-format pr/readme: RUNNER_DOCKER_TAG ?= \
$(shell docker inspect --type=image $(RUNNER_DOCKER_IMAGE):$(RUNNER_DOCKER_SHA_TAG) >/dev/null 2>&1 && \
echo "$(RUNNER_DOCKER_SHA_TAG) " || echo "slim-$(RUNNER_DOCKER_SHA_TAG)")

Expand All @@ -66,13 +117,17 @@ build-harness/shell-slim builder-slim: ARGS := $(if $(TARGETS),$(TARGETS),-l ||
build-harness/shell-slim builder-slim: ENTRYPOINT := $(if $(TARGETS),/usr/bin/make,/bin/bash)
build-harness/shell-slim builder-slim: build-harness/runner

pr/auto-format tf14-upgrade : ENTRYPOINT := /usr/bin/make
pr/auto-format pr/readme pr/pre-commit tf14-upgrade : ENTRYPOINT := /usr/bin/make

pr/auto-format pr/auto-format/host: ARGS := terraform/fmt readme
pr/auto-format: build-harness/runner
pr/auto-format/host:
pr/readme pr/readme/host: ARGS := readme
pr/auto-format pr/readme: build-harness/runner
pr/auto-format/host pr/readme/host:
$(MAKE) $(ARGS)

pr/pre-commit: ARGS := pre-commit/run
pr/pre-commit: build-harness/runner

tf14-upgrade: export TERRAFORM_FORCE_README := true
tf14-upgrade: ARGS := github/init terraform/v14-rewrite
tf14-upgrade: build-harness/runner
Expand Down Expand Up @@ -111,3 +166,4 @@ reset-owner:
printf "\n* No root-owned files found\n\n" ; \
fi

endif
Loading

0 comments on commit f70f215

Please sign in to comment.