1- .PHONY : lint lint-check actionlint shell-lint runtime-config-contract application-env-contract compose-runtime-contract backup-contract overlay-contract filesystem-prep-contract key-rotation-contract vault-runtime-contract managed-artifact-contract config-management-input-contract systemd-contract sitectl-version-contract template-version-contract rollout-parity-contract rootfs-package-contract host-runtime-security cos-jq-portability-contract source-trust-contract cloud-smoke-cleanup-contract hosted-cleanup-retry-contract gcp-upgrade-smoke-contract artifact-install-contract config-management-smoke
1+ .PHONY : lint lint-check actionlint shell-lint runtime-config-contract application-env-contract compose-runtime-contract backup-contract overlay-contract filesystem-prep-contract key-rotation-contract vault-runtime-contract managed-artifact-contract config-management-input-contract systemd-contract sitectl-version-contract go-fmt-check go-vet go-contracts template-version-contract rollout-parity-contract rootfs-package-contract host-runtime-security cos-jq-portability-contract source-trust-contract cloud-smoke-cleanup-contract hosted-cleanup-retry-contract gcp-upgrade-smoke-contract artifact-install-contract config-management-smoke cloud-compose-ci
22.PHONY : terraform-fmt terraform-fmt-check terraform-validate terraform-validate-contract terraform-lint-check terraform-docs terraform-docs-check
33.PHONY : config-management-cloud-smoke config-management-cloud-smoke-ansible-drupal config-management-cloud-smoke-salt-drupal
44.PHONY : destroy-config-management-cloud-smoke destroy-config-management-cloud-smoke-ansible-drupal destroy-config-management-cloud-smoke-salt-drupal
@@ -11,6 +11,10 @@ DOCS_PORT ?= 8888
1111DOCS_DOCKER_USER ?= $(shell id -u) :$(shell id -g)
1212ACTIONLINT_VERSION ?= v1.7.12
1313TERRAFORM_DOCS_VERSION ?= v0.21.0
14+ CLOUD_COMPOSE_CI_BIN ?= $(CURDIR ) /.bin/cloud-compose-ci
15+ export CLOUD_COMPOSE_CI_BIN
16+ GO_MODULE_FILES := $(wildcard go.mod go.sum)
17+ GO_SOURCES := $(shell find cmd internal -type f -name '* .go')
1418
1519lint : terraform-fmt actionlint shell-lint host-runtime-security cos-jq-portability-contract application-env-contract compose-runtime-contract backup-contract overlay-contract filesystem-prep-contract key-rotation-contract vault-runtime-contract managed-artifact-contract config-management-input-contract systemd-contract source-trust-contract cloud-smoke-cleanup-contract hosted-cleanup-retry-contract gcp-upgrade-smoke-contract sitectl-version-contract template-version-contract rollout-parity-contract rootfs-package-contract artifact-install-contract terraform-validate terraform-docs-check
1620
@@ -75,11 +79,16 @@ systemd-contract:
7579sitectl-version-contract :
7680 bash ci/sitectl-version-contract.sh
7781
78- template-version-contract :
79- bash ci/template-version-contract.sh
82+ go-fmt-check :
83+ @files= " $$ (gofmt -l .) " ; test -z " $$ files " || { echo " Go files require formatting: " ; printf ' %s\n ' " $$ files " ; exit 1 ; }
8084
81- rollout-parity-contract :
82- bash ci/rollout-parity-contract.sh
85+ go-vet :
86+ go vet ./...
87+
88+ go-contracts : go-fmt-check go-vet
89+ go test -count=1 ./...
90+
91+ template-version-contract rollout-parity-contract : go-contracts
8392
8493rootfs-package-contract :
8594 bash ci/rootfs-package-contract.sh
@@ -93,8 +102,13 @@ cos-jq-portability-contract:
93102source-trust-contract :
94103 bash ci/source-trust-contract.sh
95104
96- cloud-smoke-cleanup-contract :
97- bash ci/cloud-smoke-cleanup-contract.sh
105+ cloud-smoke-cleanup-contract : go-contracts
106+
107+ cloud-compose-ci : $(CLOUD_COMPOSE_CI_BIN )
108+
109+ $(CLOUD_COMPOSE_CI_BIN ) : $(GO_MODULE_FILES ) $(GO_SOURCES )
110+ @mkdir -p " $( dir $( CLOUD_COMPOSE_CI_BIN) ) "
111+ go build -trimpath -o " $( CLOUD_COMPOSE_CI_BIN) " ./cmd/cloud-compose-ci
98112
99113gcp-upgrade-smoke-contract :
100114 bash ci/gcp-upgrade-smoke-contract.sh
@@ -135,12 +149,13 @@ terraform-docs:
135149terraform-docs-check :
136150 go run github.com/terraform-docs/terraform-docs@$(TERRAFORM_DOCS_VERSION ) markdown table --sort-by required --output-file README.md --output-check .
137151
138- smoke-test-clouds :
152+ smoke-test-clouds : cloud-compose-ci
139153 ci/cloud-smoke.sh all
140154
141155smoke-test :
142156 @test -n " $( PROVIDER) " || { echo " PROVIDER is required" ; exit 2; }
143157 @test -n " $( TEMPLATE) " || { echo " TEMPLATE is required" ; exit 2; }
158+ @if [ " $( PROVIDER) " = " gcp" ]; then $(MAKE ) --no-print-directory cloud-compose-ci; fi
144159 ci/cloud-smoke.sh $(PROVIDER ) -$(TEMPLATE )
145160
146161smoke-test-digitalocean-isle :
@@ -155,6 +170,7 @@ smoke-test-gcp-wp:
155170destroy-smoke :
156171 @test -n " $( PROVIDER) " || { echo " PROVIDER is required" ; exit 2; }
157172 @test -n " $( TEMPLATE) " || { echo " TEMPLATE is required" ; exit 2; }
173+ @if [ " $( PROVIDER) " = " gcp" ]; then $(MAKE ) --no-print-directory cloud-compose-ci; fi
158174 ci/cloud-smoke.sh destroy-$(PROVIDER ) -$(TEMPLATE )
159175
160176destroy-smoke-digitalocean-isle :
0 commit comments