Skip to content

Commit

Permalink
Merge branch 'master' into f-canary-meta
Browse files Browse the repository at this point in the history
  • Loading branch information
nickethier committed Jan 9, 2020
2 parents 20bae53 + 56937bf commit 358367c
Show file tree
Hide file tree
Showing 1,826 changed files with 567,987 additions and 48,738 deletions.
1 change: 1 addition & 0 deletions .circleci/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/config.yml linguist-generated
1 change: 1 addition & 0 deletions .circleci/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.tmp/
80 changes: 80 additions & 0 deletions .circleci/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Set SHELL to 'strict mode' without using .SHELLFLAGS for max compatibility.
# See https://fieldnotes.tech/how-to-shell-for-compatible-makefiles/
SHELL := /usr/bin/env bash -euo pipefail -c

CIRCLECI := circleci --skip-update-check

# Set up some documentation/help message variables.
# We do not attempt to install the CircleCI CLI from this Makefile.
CCI_INSTALL_LINK := https://circleci.com/docs/2.0/local-cli/\#installation
CCI_INSTALL_MSG := Please install CircleCI CLI. See $(CCI_INSTALL_LINK)
CCI_VERSION := $(shell $(CIRCLECI) version 2> /dev/null)
ifeq ($(CCI_VERSION),)
# Attempting to use the CLI fails with installation instructions.
CIRCLECI := echo '$(CCI_INSTALL_MSG)'; exit 1; \#
endif

SOURCE_DIR := config
SOURCE_YML := $(shell [ ! -d $(SOURCE_DIR) ] || find $(SOURCE_DIR) -name '*.yml')
CONFIG_SOURCE := Makefile $(SOURCE_YML) | $(SOURCE_DIR)
OUT := config.yml
TMP := .tmp/config-processed
CONFIG_PACKED := .tmp/config-packed

default: help

help:
@echo "Usage:"
@echo " make ci-config: recompile config.yml from $(SOURCE_DIR)/"
@echo " make ci-verify: verify that config.yml is a true mapping from $(SOURCE_DIR)/"
@echo
@echo "Diagnostics:"
@[ -z "$(CCI_VERSION)" ] || echo " circleci-cli version $(CCI_VERSION)"
@[ -n "$(CCI_VERSION)" ] || echo " $(CCI_INSTALL_MSG)"

$(SOURCE_DIR):
@echo No source directory $(SOURCE_DIR) found.; exit 1

# Make sure our .tmp dir exists.
$(shell [ -d .tmp ] || mkdir .tmp)

.PHONY: ci-config
ci-config: $(OUT)

.PHONY: ci-verify
ci-verify: config-up-to-date
@$(CIRCLECI) config validate $(OUT)

define GENERATED_FILE_HEADER
### ***
### WARNING: DO NOT manually EDIT or MERGE this file, it is generated by 'make ci-config'.
### INSTEAD: Edit or merge the source in $(SOURCE_DIR)/ then run 'make ci-config'.
### ***
endef
export GENERATED_FILE_HEADER

# GEN_CONFIG writes the config to a temporary file. If the whole process succeeds,
# it then moves that file to $@. This makes is an atomic operation, so if it fails
# make doesn't consider a half-baked file up to date.
define GEN_CONFIG
@$(CIRCLECI) config pack $(SOURCE_DIR) > $(CONFIG_PACKED)
@echo "$$GENERATED_FILE_HEADER" > $@.tmp || { rm -f $@; exit 1; }
@$(CIRCLECI) config process $(CONFIG_PACKED) >> $@.tmp || { rm -f $@.tmp; exit 1; }
@mv -f $@.tmp $@
endef

$(OUT): $(CONFIG_SOURCE)
$(GEN_CONFIG)
@echo "$@ updated"

$(TMP): $(CONFIG_SOURCE)
$(GEN_CONFIG)

.PHONY: config-up-to-date
config-up-to-date: $(TMP) # Note this must not depend on $(OUT)!
@if diff config.yml $<; then \
echo "Generated $(OUT) is up to date!"; \
else \
echo "Generated $(OUT) is out of date, run make $(CONFIG) to update."; \
exit 1; \
fi
3 changes: 3 additions & 0 deletions .circleci/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# How to use CircleCI multi-file config

Refer to https://github.com/hashicorp/vault/blob/master/.circleci/README.md .
Loading

0 comments on commit 358367c

Please sign in to comment.