-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #51 from upbound/repo-sync/sa-up/default
π synced file(s) with upbound/sa-up
- Loading branch information
Showing
6 changed files
with
246 additions
and
60 deletions.
There are no files selected for viewing
Validating CODEOWNERS rules β¦
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
* @upbound/team-customer-success |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,81 +1,244 @@ | ||
# Project Setup | ||
PROJECT_NAME := configuration-aws-database | ||
PROJECT_REPO := github.com/upbound/$(PROJECT_NAME) | ||
# ==================================================================================== | ||
# Crossplane Configuration Package Makefile | ||
# ==================================================================================== | ||
|
||
# NOTE(hasheddan): the platform is insignificant here as Configuration package | ||
# images are not architecture-specific. We constrain to one platform to avoid | ||
# needlessly pushing a multi-arch image. | ||
PLATFORMS ?= linux_amd64 | ||
-include build/makelib/common.mk | ||
# USAGE DOCUMENTATION | ||
# ==================================================================================== | ||
# | ||
# This is a generic Makefile to be used across repositories building Crossplane | ||
# configuration packages. It provides a comprehensive set of targets for development, | ||
# testing, and deployment. | ||
# | ||
# PROJECT CONFIGURATION | ||
# ------------------- | ||
# Create a project.mk file in your repository to configure project-specific settings. | ||
# Required variables: | ||
# - PROJECT_NAME: Name of your Crossplane configuration package | ||
# | ||
# Example project.mk: | ||
# PROJECT_NAME = custom-config | ||
# UPTEST_DEFAULT_TIMEOUT = 3600s | ||
# UPTEST_SKIP_IMPORT = true | ||
# | ||
# PRIMARY TARGETS | ||
# -------------- | ||
# | ||
# Development Tools: | ||
# ----------------- | ||
# - `yamllint` | ||
# Runs yamllint recursively on all files in the `api` folder to ensure YAML | ||
# quality and consistency | ||
# | ||
# - `check-examples` | ||
# Validates consistency between example configurations and dependencies: | ||
# - Compares Function package versions in examples/ against crossplane.yaml | ||
# - Ensures all Function versions in examples match dependency declarations | ||
# - Helps prevent version mismatches that could cause deployment issues | ||
# Example errors: | ||
# - Example using function-foo:v1.2.0 while crossplane.yaml specifies v1.1.0 | ||
# - Missing Function dependencies in crossplane.yaml that are used in examples | ||
# Usage: Run before committing changes to ensure example validity | ||
# | ||
# Rendering and Validation: | ||
# ----------------- | ||
# - `render` | ||
# Renders the composition output for rapid feedback during template development. | ||
# Requirements: | ||
# - Claims must have these annotations: | ||
# render.crossplane.io/composition-path: apis/pat/composition.yaml | ||
# render.crossplane.io/function-path: examples/functions.yaml | ||
# Note: This only populates the cache. Use `render.show` to view output. | ||
# | ||
# - `render.show` | ||
# Displays the rendered YAML output. Useful for: | ||
# - Manual validation | ||
# - Piping to validation tools, e.g.: | ||
# make render.show | crossplane beta validate crossplane.yaml - | ||
# | ||
# Testing: | ||
# ----------------- | ||
# - `render.test` | ||
# Executes kcl-unit tests on rendered manifests. Tests should be: | ||
# - Located in the `test` folder | ||
# - Written as standard kcl-tests | ||
# This ensures the rendered output meets expected specifications. | ||
# | ||
# - `e2e` | ||
# Comprehensive end-to-end testing, including: | ||
# - Cluster creation | ||
# - Configuration setup | ||
# - Testing create, import, and delete operations | ||
# | ||
# Cloud Provider Requirements: | ||
# For configurations creating cloud provider resources, set: | ||
# UPTEST_CLOUD_CREDENTIALS - Provider-specific credentials: | ||
# - AWS: export UPTEST_CLOUD_CREDENTIALS=$(cat ~/.aws/credentials) | ||
# - GCP: export UPTEST_CLOUD_CREDENTIALS=$(cat gcp-sa.json) | ||
# - Azure: export UPTEST_CLOUD_CREDENTIALS=$(cat azure.json) | ||
# | ||
# Configuration Options: | ||
# - UPTEST_SKIP_DELETE (default: false) | ||
# Skip deletion testing of created resources | ||
# - UPTEST_SKIP_UPDATE (default: false) | ||
# Skip testing of claim updates | ||
# - UPTEST_SKIP_IMPORT (default: false) | ||
# Skip testing of resource imports | ||
# | ||
# Example Usage: | ||
# make e2e UPTEST_SKIP_DELETE=true | ||
# | ||
# LANGUAGE-SPECIFIC OPTIONS | ||
# ------------------------ | ||
# | ||
# KCL Support: | ||
# - KCL_COMPOSITION_PATH | ||
# Path to the KCL file generating composition.yaml | ||
# Default: apis/kcl/generate.k | ||
# | ||
# NOTE: The platform setting is constrained to linux_amd64 as Configuration package | ||
# images are not architecture-specific. This avoids unnecessary multi-arch image | ||
# generation. | ||
|
||
# ==================================================================================== | ||
# Setup Kubernetes tools | ||
# Project Configuration | ||
# ==================================================================================== | ||
|
||
# Include project.mk for project specific settings | ||
include project.mk | ||
|
||
UP_VERSION = v0.28.0 | ||
ifndef PROJECT_NAME | ||
$(error PROJECT_NAME is not set. Please create `project.mk` and set it there.) | ||
endif | ||
|
||
# Project Configuration | ||
# ------------------ | ||
PROJECT_REPO := github.com/upbound/$(PROJECT_NAME) | ||
PLATFORMS ?= linux_amd64 | ||
|
||
# Tool Versions | ||
# ------------------ | ||
UP_VERSION = v0.34.0 | ||
UP_CHANNEL = stable | ||
UPTEST_VERSION = v0.11.1 | ||
CROSSPLANE_CLI_VERSION = v1.17.1 | ||
CROSSPLANE_VERSION = v1.17.1-up.1 | ||
UPTEST_VERSION = v1.1.2 | ||
|
||
# Crossplane Configuration | ||
# ------------------ | ||
CROSSPLANE_CHART_REPO = https://charts.upbound.io/stable | ||
CROSSPLANE_CHART_NAME = universal-crossplane | ||
CROSSPLANE_NAMESPACE = upbound-system | ||
CROSSPLANE_ARGS = "--enable-usages" | ||
KIND_CLUSTER_NAME ?= uptest-$(PROJECT_NAME) | ||
|
||
-include build/makelib/k8s_tools.mk | ||
# ==================================================================================== | ||
# Setup XPKG | ||
# XPKG Configuration | ||
# ------------------ | ||
XPKG_DIR = $(shell pwd) | ||
XPKG_IGNORE = .github/workflows/*.yaml,.github/workflows/*.yml,examples/*.yaml,.work/uptest-datasource.yaml | ||
XPKG_IGNORE = .github/workflows/*.yaml,.github/workflows/*.yml,examples/*.yaml,.work/uptest-datasource.yaml,.cache/render/* | ||
XPKG_REG_ORGS ?= xpkg.upbound.io/upbound | ||
# NOTE(hasheddan): skip promoting on xpkg.upbound.io as channel tags are | ||
# inferred. | ||
# NOTE: Skip promoting on xpkg.upbound.io as channel tags are inferred | ||
XPKG_REG_ORGS_NO_PROMOTE ?= xpkg.upbound.io/upbound | ||
XPKGS = $(PROJECT_NAME) | ||
-include build/makelib/xpkg.mk | ||
|
||
CROSSPLANE_NAMESPACE = upbound-system | ||
#CROSSPLANE_ARGS = "--enable-usages" | ||
# Testing Configuration | ||
# ------------------ | ||
UPTEST_LOCAL_DEPLOY_TARGET = local.xpkg.deploy.configuration.$(PROJECT_NAME) | ||
UPTEST_DEFAULT_TIMEOUT ?= 2400s | ||
|
||
# KCL Configuration | ||
# ------------------ | ||
KCL_COMPOSITION_PATH ?= apis/kcl/generate.k | ||
LANG_KCL := $(shell find ./apis -type f -name '*.k') | ||
|
||
# Include makelib files | ||
# ------------------ | ||
-include build/makelib/common.mk | ||
-include build/makelib/k8s_tools.mk | ||
-include build/makelib/xpkg.mk | ||
-include build/makelib/local.xpkg.mk | ||
-include build/makelib/controlplane.mk | ||
-include build/makelib/uptest.mk | ||
|
||
# ==================================================================================== | ||
# Targets | ||
# ==================================================================================== | ||
|
||
# run `make help` to see the targets and options | ||
|
||
# Initial Setup | ||
# ------------------ | ||
# We want submodules to be set up the first time `make` is run. | ||
# We manage the build/ folder and its Makefiles as a submodule. | ||
# The first time `make` is run, the includes of build/*.mk files will | ||
# all fail, and this target will be run. The next time, the default as defined | ||
# by the includes will be run instead. | ||
fallthrough: submodules | ||
fallthrough: submodules ## Initial setup and submodule initialization | ||
@echo Initial setup complete. Running make again . . . | ||
@make | ||
|
||
# Update the submodules, such as the common build scripts. | ||
submodules: | ||
submodules: ## Update the submodules, including common build scripts | ||
@git submodule sync | ||
@git submodule update --init --recursive | ||
|
||
# We must ensure up is installed in tool cache prior to build as including the k8s_tools machinery prior to the xpkg | ||
# machinery sets UP to point to tool cache. | ||
build.init: $(UP) | ||
|
||
# ==================================================================================== | ||
# End to End Testing | ||
|
||
# This target requires the following environment variables to be set: | ||
# - UPTEST_CLOUD_CREDENTIALS, cloud credentials for the provider being tested, e.g. export UPTEST_CLOUD_CREDENTIALS=$(cat ~/.aws/credentials) | ||
# - UPTEST_DATASOURCE_PATH (optional), see https://github.com/upbound/uptest#injecting-dynamic-values-and-datasource | ||
uptest: $(UPTEST) $(KUBECTL) $(KUTTL) | ||
@$(INFO) running automated tests | ||
@KUBECTL=$(KUBECTL) KUTTL=$(KUTTL) CROSSPLANE_NAMESPACE=$(CROSSPLANE_NAMESPACE) $(UPTEST) e2e examples/mariadb-claim.yaml,examples/postgres-claim.yaml,examples/network.yaml --data-source="${UPTEST_DATASOURCE_PATH}" --setup-script=test/setup.sh --default-timeout=2400 || $(FAIL) | ||
@$(OK) running automated tests | ||
|
||
# This target requires the following environment variables to be set: | ||
# - UPTEST_CLOUD_CREDENTIALS, cloud credentials for the provider being tested, e.g. export UPTEST_CLOUD_CREDENTIALS=$(cat ~/.aws/credentials) | ||
e2e: build controlplane.up local.xpkg.deploy.configuration.$(PROJECT_NAME) uptest | ||
|
||
render: | ||
crossplane beta render examples/mariadb-claim.yaml apis/composition.yaml examples/functions.yaml -r | ||
|
||
yamllint: | ||
@$(INFO) running yamllint | ||
@yamllint ./apis || $(FAIL) | ||
@$(OK) running yamllint | ||
|
||
.PHONY: uptest e2e render yamllint | ||
# Build Targets | ||
# ------------------ | ||
# We must ensure up is installed in tool cache prior to build as including the k8s_tools | ||
# machinery prior to the xpkg machinery sets UP to point to tool cache. | ||
build.init: $(UP) ## Initialize build requirements | ||
|
||
# KCL Targets | ||
# ------------------ | ||
ifdef LANG_KCL | ||
kcl: $(KCL) ## Generate KCL-based Composition | ||
@$(INFO) Generating kcl composition | ||
@$(KCL) $(KCL_COMPOSITION_PATH) 1>/dev/null | ||
@$(OK) Generated kcl composition | ||
|
||
render: kcl ## Render the composition output | ||
build.init: kcl | ||
.PHONY: kcl | ||
endif | ||
|
||
# Testing Targets | ||
# ------------------ | ||
render.test: $(CROSSPLANE_CLI) $(KCL) render ## Test rendered compositions | ||
@for RENDERED_COMPOSITION in $$(find .cache/render -maxdepth 1 -type f -name '*.yaml'); do \ | ||
$(INFO) "Testing $${RENDERED_COMPOSITION}"; \ | ||
export RENDERED_COMPOSITION; \ | ||
$(KCL) test test/ && \ | ||
$(OK) "Success testing \"$${RENDERED_COMPOSITION}\"!" || \ | ||
($(ERR) "Failure testing \"$${RENDERED_COMPOSITION}\"!" && exit 1); \ | ||
done | ||
|
||
check-examples: ## Validate package versions in examples match dependencies | ||
@$(INFO) Checking if package versions in dependencies match examples | ||
@FN_EXAMPLES=$$( \ | ||
find examples -type f -name "*.yaml" | \ | ||
xargs $(YQ) -r -o=json 'select(.kind == "Function" and (.apiVersion | test("^pkg.crossplane.io/"))) | .spec.package' | \ | ||
sort -u); \ | ||
FN_DEPS=$$( \ | ||
$(YQ) '.spec.dependsOn[] | select(.function != null) | (.function + ":" + .version)' crossplane.yaml | \ | ||
sort -u \ | ||
); \ | ||
if [ "$$FN_EXAMPLES" != "$$FN_DEPS" ]; then \ | ||
echo "Function package versions in examples and in crossplane.yaml don't match!"; \ | ||
echo "" ; \ | ||
echo "Versions in dependencies:"; \ | ||
echo "---" ; \ | ||
echo "$$FN_DEPS"; \ | ||
echo "" ; \ | ||
echo "Versions in examples:"; \ | ||
echo "---" ; \ | ||
echo "$$FN_EXAMPLES"; \ | ||
exit 1; \ | ||
fi; | ||
@$(OK) Package versions are sane | ||
|
||
# Help Targets | ||
# ------------------ | ||
help: help.local ## Display this help message | ||
|
||
help.local: | ||
@echo "Available targets:" | ||
@echo | ||
@grep -E '^[a-zA-Z_-]+.*:.*?## .*$$' Makefile | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' | ||
|
||
.PHONY: uptest e2e render yamllint help help.local check-examples render.test |
Submodule build
updated
29 files
+0 β11 | CODEOWNERS | |
+19 β16 | README.md | |
+0 β91 | common.sh | |
+0 β102 | cross/Dockerfile | |
+0 β36 | cross/Makefile | |
+0 β51 | cross/rsyncd.sh | |
+0 β34 | cross/run.sh | |
+0 β29 | cross/xvfb-chrome | |
+15 β7 | makelib/controlplane.mk | |
+0 β74 | makelib/docs.mk | |
+23 β148 | makelib/golang.mk | |
+0 β301 | makelib/image.mk | |
+3 β3 | makelib/imagelight.mk | |
+70 β25 | makelib/k8s_tools.mk | |
+0 β185 | makelib/local.mk | |
+6 β3 | makelib/local.xpkg.mk | |
+0 β94 | makelib/nodejs.mk | |
+5 β0 | makelib/output.mk | |
+116 β0 | makelib/uptest.mk | |
+19 β4 | makelib/xpkg.mk | |
+0 β76 | makelib/yarnjs.mk | |
+0 β30 | reset | |
+0 β175 | run | |
+0 β46 | scripts/load-configs.sh | |
+0 β165 | scripts/localdev-deploy-component.sh | |
+0 β135 | scripts/localdev-prepare.sh | |
+0 β36 | scripts/localdev-remove-component.sh | |
+0 β87 | scripts/localdev-scaffold.sh | |
+0 β61 | scripts/utils.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
PROJECT_NAME := configuration-aws-database | ||
UPTEST_INPUT_MANIFESTS := examples/mariadb-claim.yaml,examples/postgres-claim.yaml,examples/network.yaml | ||
UPTEST_SKIP_UPDATE := true |