diff --git a/Makefile b/Makefile index 8e651f0..ffe3baa 100644 --- a/Makefile +++ b/Makefile @@ -5,19 +5,16 @@ PROJECT_NAME ?= provider-azapi PROJECT_REPO ?= github.com/upbound/$(PROJECT_NAME) export TERRAFORM_VERSION ?= 1.5.7 +export TERRAFORM_PROVIDER_VERSION ?= 1.12.1 +export TERRAFORM_PROVIDER_RELEASE := v$(TERRAFORM_PROVIDER_VERSION)-upjet.1 +export TERRAFORM_PROVIDER_SOURCE ?= Azure/azapi +export TERRAFORM_PROVIDER_REPO ?= https://github.com/Azure/terraform-provider-azapi +export TERRAFORM_DOCS_PATH ?= docs/resources # Do not allow a version of terraform greater than 1.5.x, due to versions 1.6+ being # licensed under BSL, which is not permitted. TERRAFORM_VERSION_VALID := $(shell [ "$(TERRAFORM_VERSION)" = "`printf "$(TERRAFORM_VERSION)\n1.6" | sort -V | head -n1`" ] && echo 1 || echo 0) -export TERRAFORM_PROVIDER_SOURCE ?= Azure/azapi -export TERRAFORM_PROVIDER_REPO ?= https://github.com/Azure/terraform-provider-azapi -export TERRAFORM_PROVIDER_VERSION ?= 1.12.1 -export TERRAFORM_PROVIDER_DOWNLOAD_NAME ?= terraform-provider-azapi -export TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX ?= https://github.com/Azure/$(TERRAFORM_PROVIDER_DOWNLOAD_NAME)/releases/download/v$(TERRAFORM_PROVIDER_VERSION) -export TERRAFORM_NATIVE_PROVIDER_BINARY ?= terraform-provider-azapi_v1.12.1 -export TERRAFORM_DOCS_PATH ?= docs/resources - PLATFORMS ?= linux_amd64 linux_arm64 @@ -60,6 +57,8 @@ KIND_VERSION = v0.25.0 UP_VERSION = v0.28.0 UP_CHANNEL = stable UPTEST_VERSION = v1.1.2 +CRDDIFF_VERSION = v0.12.1 + -include build/makelib/k8s_tools.mk # ==================================================================================== @@ -105,6 +104,9 @@ build.init: $(UP) check-terraform-version # Setup Terraform for fetching provider schema TERRAFORM := $(TOOLS_HOST_DIR)/terraform-$(TERRAFORM_VERSION) TERRAFORM_WORKDIR := $(WORK_DIR)/terraform +TERRAFORM_CLI_CONFIG_FILE := $(TERRAFORM_WORKDIR)/.terraformrc-custom +TERRAFORM_FILESYSTEM_MIRROR := $(TOOLS_HOST_DIR)/$(TERRAFORM_PROVIDER_RELEASE) +TERRAFORM_PROVIDER := $(TERRAFORM_FILESYSTEM_MIRROR)/registry.terraform.io/$(TERRAFORM_PROVIDER_SOURCE)/$(TERRAFORM_PROVIDER_VERSION)/$(SAFEHOST_PLATFORM)/terraform-provider-azapi TERRAFORM_PROVIDER_SCHEMA := config/schema.json check-terraform-version: @@ -121,24 +123,32 @@ $(TERRAFORM): check-terraform-version @rm -fr $(TOOLS_HOST_DIR)/tmp-terraform @$(OK) installing terraform $(HOSTOS)-$(HOSTARCH) -$(TERRAFORM_PROVIDER_SCHEMA): $(TERRAFORM) +$(TERRAFORM_PROVIDER): + @$(INFO) installing terraform AzAPI provider for the platform $(SAFEHOST_PLATFORM) + @mkdir -p $(dir $(TERRAFORM_PROVIDER)) + @curl -fsSL https://github.com/upbound/terraform-provider-azapi/releases/download/$(TERRAFORM_PROVIDER_RELEASE)/terraform-provider-azapi_$(TERRAFORM_PROVIDER_RELEASE)_$(SAFEHOST_PLATFORM).zip -o $(TERRAFORM_PROVIDER).zip + @unzip $(TERRAFORM_PROVIDER).zip -d $(dir $(TERRAFORM_PROVIDER)) + @rm -fr $(TERRAFORM_PROVIDER).zip + @$(OK) installing terraform provider $(SAFEHOST_PLATFORM) + +$(TERRAFORM_PROVIDER_SCHEMA): $(TERRAFORM) $(TERRAFORM_PROVIDER) @$(INFO) generating provider schema for $(TERRAFORM_PROVIDER_SOURCE) $(TERRAFORM_PROVIDER_VERSION) + @rm -fr $(TERRAFORM_WORKDIR) @mkdir -p $(TERRAFORM_WORKDIR) @echo '{"terraform":[{"required_providers":[{"provider":{"source":"'"$(TERRAFORM_PROVIDER_SOURCE)"'","version":"'"$(TERRAFORM_PROVIDER_VERSION)"'"}}],"required_version":"'"$(TERRAFORM_VERSION)"'"}]}' > $(TERRAFORM_WORKDIR)/main.tf.json - @$(TERRAFORM) -chdir=$(TERRAFORM_WORKDIR) init > $(TERRAFORM_WORKDIR)/terraform-logs.txt 2>&1 - @$(TERRAFORM) -chdir=$(TERRAFORM_WORKDIR) providers schema -json=true > $(TERRAFORM_PROVIDER_SCHEMA) 2>> $(TERRAFORM_WORKDIR)/terraform-logs.txt + @echo 'provider_installation { filesystem_mirror { path = "'"$(TERRAFORM_FILESYSTEM_MIRROR)"'", include = ["Azure/azapi"] }, direct { exclude = ["Azure/azapi"] } }' > $(TERRAFORM_CLI_CONFIG_FILE) + @TF_CLI_CONFIG_FILE=$(TERRAFORM_CLI_CONFIG_FILE) $(TERRAFORM) -chdir=$(TERRAFORM_WORKDIR) init -upgrade > $(TERRAFORM_WORKDIR)/terraform-logs.txt 2>&1 + @TF_CLI_CONFIG_FILE=$(TERRAFORM_CLI_CONFIG_FILE) $(TERRAFORM) -chdir=$(TERRAFORM_WORKDIR) providers schema -json=true > $(TERRAFORM_PROVIDER_SCHEMA) 2>> $(TERRAFORM_WORKDIR)/terraform-logs.txt @$(OK) generating provider schema for $(TERRAFORM_PROVIDER_SOURCE) $(TERRAFORM_PROVIDER_VERSION) pull-docs: - @if [ ! -d "$(WORK_DIR)/$(TERRAFORM_PROVIDER_SOURCE)" ]; then \ - mkdir -p "$(WORK_DIR)/$(TERRAFORM_PROVIDER_SOURCE)" && \ - git clone -c advice.detachedHead=false --depth 1 --filter=blob:none --branch "v$(TERRAFORM_PROVIDER_VERSION)" --sparse "$(TERRAFORM_PROVIDER_REPO)" "$(WORK_DIR)/$(TERRAFORM_PROVIDER_SOURCE)"; \ - fi - @git -C "$(WORK_DIR)/$(TERRAFORM_PROVIDER_SOURCE)" sparse-checkout set "$(TERRAFORM_DOCS_PATH)" + rm -fR "$(WORK_DIR)/$(notdir $(TERRAFORM_PROVIDER_REPO))" + git clone -c advice.detachedHead=false --depth 1 --filter=blob:none --branch "v$(TERRAFORM_PROVIDER_VERSION)" --sparse "$(TERRAFORM_PROVIDER_REPO)" "$(WORK_DIR)/$(notdir $(TERRAFORM_PROVIDER_REPO))"; + @git -C "$(WORK_DIR)/$(notdir $(TERRAFORM_PROVIDER_REPO))" sparse-checkout set "$(TERRAFORM_DOCS_PATH)" generate.init: $(TERRAFORM_PROVIDER_SCHEMA) pull-docs -.PHONY: $(TERRAFORM_PROVIDER_SCHEMA) pull-docs check-terraform-version +.PHONY: pull-docs # ==================================================================================== # Targets @@ -205,7 +215,7 @@ local-deploy: build controlplane.up local.xpkg.deploy.provider.$(PROJECT_NAME) e2e: local-deploy uptest -crddiff: $(UPTEST) +crddiff: @$(INFO) Checking breaking CRD schema changes @for crd in $${MODIFIED_CRD_LIST}; do \ if ! git cat-file -e "$${GITHUB_BASE_REF}:$${crd}" 2>/dev/null; then \ @@ -213,7 +223,7 @@ crddiff: $(UPTEST) continue ; \ fi ; \ echo "Checking $${crd} for breaking API changes..." ; \ - changes_detected=$$($(UPTEST) crddiff revision <(git cat-file -p "$${GITHUB_BASE_REF}:$${crd}") "$${crd}" 2>&1) ; \ + changes_detected=$$(go run github.com/upbound/uptest/cmd/crddiff@$(CRDDIFF_VERSION) revision --enable-upjet-extensions <(git cat-file -p "$${GITHUB_BASE_REF}:$${crd}") "$${crd}" 2>&1) ; \ if [[ $$? != 0 ]] ; then \ printf "\033[31m"; echo "Breaking change detected!"; printf "\033[0m" ; \ echo "$${changes_detected}" ; \ diff --git a/apis/generate.go b/apis/generate.go index 233d170..00f92a2 100644 --- a/apis/generate.go +++ b/apis/generate.go @@ -19,7 +19,7 @@ Copyright 2021 Upbound Inc. //go:generate rm -rf ../examples-generated // Generate documentation from Terraform docs. -//go:generate go run github.com/crossplane/upjet/cmd/scraper -n ${TERRAFORM_PROVIDER_SOURCE} -r ../.work/${TERRAFORM_PROVIDER_SOURCE}/${TERRAFORM_DOCS_PATH} -o ../config/provider-metadata.yaml +//go:generate go run github.com/crossplane/upjet/cmd/scraper -n Azure/terraform-provider-azapi -r ../.work/terraform-provider-azapi/docs/resources -o ../config/provider-metadata.yaml // Run Upjet generator //go:generate go run ../cmd/generator/main.go .. diff --git a/config/provider-metadata.yaml b/config/provider-metadata.yaml index 68c2699..cda3fc6 100644 --- a/config/provider-metadata.yaml +++ b/config/provider-metadata.yaml @@ -1,4 +1,4 @@ -name: Azure/azapi +name: Azure/terraform-provider-azapi resources: azapi_data_plane_resource: subCategory: ""