-
Notifications
You must be signed in to change notification settings - Fork 56
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(version) added Kong open source version 2.8.4 artifacts
- Loading branch information
Showing
196 changed files
with
42,155 additions
and
0 deletions.
There are no files selected for viewing
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,230 @@ | ||
OS := $(shell uname | awk '{print tolower($$0)}') | ||
MACHINE := $(shell uname -m) | ||
|
||
DEV_ROCKS = "busted 2.0.0" "busted-htest 1.0.0" "luacheck 0.25.0" "lua-llthreads2 0.1.6" "http 0.4" "ldoc 1.4.6" | ||
WIN_SCRIPTS = "bin/busted" "bin/kong" | ||
BUSTED_ARGS ?= -v | ||
TEST_CMD ?= bin/busted $(BUSTED_ARGS) | ||
|
||
ifeq ($(OS), darwin) | ||
OPENSSL_DIR ?= /usr/local/opt/openssl | ||
GRPCURL_OS ?= osx | ||
else | ||
OPENSSL_DIR ?= /usr | ||
GRPCURL_OS ?= $(OS) | ||
endif | ||
|
||
ifeq ($(MACHINE), aarch64) | ||
GRPCURL_MACHINE ?= arm64 | ||
else | ||
GRPCURL_MACHINE ?= $(MACHINE) | ||
endif | ||
|
||
.PHONY: install dependencies dev remove grpcurl \ | ||
setup-ci setup-kong-build-tools \ | ||
lint test test-integration test-plugins test-all \ | ||
pdk-phase-check functional-tests \ | ||
fix-windows release | ||
|
||
ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) | ||
KONG_SOURCE_LOCATION ?= $(ROOT_DIR) | ||
KONG_BUILD_TOOLS_LOCATION ?= $(KONG_SOURCE_LOCATION)/../kong-build-tools | ||
RESTY_VERSION ?= `grep RESTY_VERSION $(KONG_SOURCE_LOCATION)/.requirements | awk -F"=" '{print $$2}'` | ||
RESTY_LUAROCKS_VERSION ?= `grep RESTY_LUAROCKS_VERSION $(KONG_SOURCE_LOCATION)/.requirements | awk -F"=" '{print $$2}'` | ||
RESTY_OPENSSL_VERSION ?= `grep RESTY_OPENSSL_VERSION $(KONG_SOURCE_LOCATION)/.requirements | awk -F"=" '{print $$2}'` | ||
RESTY_PCRE_VERSION ?= `grep RESTY_PCRE_VERSION $(KONG_SOURCE_LOCATION)/.requirements | awk -F"=" '{print $$2}'` | ||
KONG_BUILD_TOOLS ?= `grep KONG_BUILD_TOOLS_VERSION $(KONG_SOURCE_LOCATION)/.requirements | awk -F"=" '{print $$2}'` | ||
GRPCURL_VERSION ?= 1.8.5 | ||
OPENRESTY_PATCHES_BRANCH ?= master | ||
KONG_NGINX_MODULE_BRANCH ?= master | ||
|
||
PACKAGE_TYPE ?= deb | ||
REPOSITORY_NAME ?= kong-${PACKAGE_TYPE} | ||
REPOSITORY_OS_NAME ?= ${RESTY_IMAGE_BASE} | ||
KONG_PACKAGE_NAME ?= kong | ||
# This logic should mirror the kong-build-tools equivalent | ||
KONG_VERSION ?= `echo $(KONG_SOURCE_LOCATION)/kong-*.rockspec | sed 's,.*/,,' | cut -d- -f2` | ||
|
||
TAG := $(shell git describe --exact-match HEAD || true) | ||
|
||
ifneq ($(TAG),) | ||
# We're building a tag | ||
ISTAG = true | ||
POSSIBLE_PRERELEASE_NAME = $(shell git describe --tags --abbrev=0 | awk -F"-" '{print $$2}') | ||
ifneq ($(POSSIBLE_PRERELEASE_NAME),) | ||
# We're building a pre-release tag | ||
OFFICIAL_RELEASE = false | ||
REPOSITORY_NAME = kong-prerelease | ||
else | ||
# We're building a semver release tag | ||
OFFICIAL_RELEASE = true | ||
KONG_VERSION ?= `cat $(KONG_SOURCE_LOCATION)/kong-*.rockspec | grep -m1 tag | awk '{print $$3}' | sed 's/"//g'` | ||
ifeq ($(PACKAGE_TYPE),apk) | ||
REPOSITORY_NAME = kong-alpine-tar | ||
endif | ||
endif | ||
else | ||
OFFICIAL_RELEASE = false | ||
ISTAG = false | ||
BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD) | ||
REPOSITORY_NAME = kong-${BRANCH} | ||
REPOSITORY_OS_NAME = ${BRANCH} | ||
KONG_PACKAGE_NAME ?= kong-${BRANCH} | ||
KONG_VERSION ?= `date +%Y-%m-%d` | ||
endif | ||
|
||
release-docker-images: | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
$(MAKE) \ | ||
KONG_SOURCE_LOCATION=${KONG_SOURCE_LOCATION} \ | ||
package-kong && \ | ||
$(MAKE) \ | ||
KONG_SOURCE_LOCATION=${KONG_SOURCE_LOCATION} \ | ||
release-kong-docker-images | ||
|
||
release: | ||
ifeq ($(ISTAG),false) | ||
sed -i -e '/return string\.format/,/\"\")/c\return "$(KONG_VERSION)\"' kong/meta.lua | ||
endif | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
$(MAKE) \ | ||
KONG_VERSION=${KONG_VERSION} \ | ||
KONG_PACKAGE_NAME=${KONG_PACKAGE_NAME} \ | ||
package-kong && \ | ||
$(MAKE) \ | ||
KONG_VERSION=${KONG_VERSION} \ | ||
KONG_PACKAGE_NAME=${KONG_PACKAGE_NAME} \ | ||
REPOSITORY_NAME=${REPOSITORY_NAME} \ | ||
REPOSITORY_OS_NAME=${REPOSITORY_OS_NAME} \ | ||
KONG_PACKAGE_NAME=${KONG_PACKAGE_NAME} \ | ||
KONG_VERSION=${KONG_VERSION} \ | ||
OFFICIAL_RELEASE=$(OFFICIAL_RELEASE) \ | ||
release-kong | ||
|
||
setup-ci: | ||
OPENRESTY=$(RESTY_VERSION) \ | ||
LUAROCKS=$(RESTY_LUAROCKS_VERSION) \ | ||
OPENSSL=$(RESTY_OPENSSL_VERSION) \ | ||
OPENRESTY_PATCHES_BRANCH=$(OPENRESTY_PATCHES_BRANCH) \ | ||
KONG_NGINX_MODULE_BRANCH=$(KONG_NGINX_MODULE_BRANCH) \ | ||
.ci/setup_env.sh | ||
|
||
package/deb: setup-kong-build-tools | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
PACKAGE_TYPE=deb RESTY_IMAGE_BASE=ubuntu RESTY_IMAGE_TAG=22.04 $(MAKE) package-kong && \ | ||
cp $(KONG_BUILD_TOOLS_LOCATION)/output/*.deb . | ||
|
||
package/apk: setup-kong-build-tools | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
PACKAGE_TYPE=apk RESTY_IMAGE_BASE=alpine RESTY_IMAGE_TAG=3 $(MAKE) package-kong && \ | ||
cp $(KONG_BUILD_TOOLS_LOCATION)/output/*.apk.* . | ||
|
||
package/rpm: setup-kong-build-tools | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
PACKAGE_TYPE=rpm RESTY_IMAGE_BASE=rhel RESTY_IMAGE_TAG=8.6 $(MAKE) package-kong && \ | ||
cp $(KONG_BUILD_TOOLS_LOCATION)/output/*.rpm . | ||
|
||
package/test/deb: package/deb | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
PACKAGE_TYPE=deb RESTY_IMAGE_BASE=ubuntu RESTY_IMAGE_TAG=22.04 $(MAKE) test | ||
|
||
package/test/apk: package/apk | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
PACKAGE_TYPE=apk RESTY_IMAGE_BASE=alpine RESTY_IMAGE_TAG=3 $(MAKE) test | ||
|
||
package/test/rpm: package/rpm | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
PACKAGE_TYPE=rpm RESTY_IMAGE_BASE=rhel RESTY_IMAGE_TAG=8.6 $(MAKE) test | ||
|
||
package/docker/deb: package/deb | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
PACKAGE_TYPE=deb RESTY_IMAGE_BASE=ubuntu RESTY_IMAGE_TAG=22.04 $(MAKE) build-test-container | ||
|
||
package/docker/apk: package/apk | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
PACKAGE_TYPE=apk RESTY_IMAGE_BASE=alpine RESTY_IMAGE_TAG=3 $(MAKE) build-test-container | ||
|
||
package/docker/rpm: package/rpm | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
PACKAGE_TYPE=rpm RESTY_IMAGE_BASE=rhel RESTY_IMAGE_TAG=8.6 $(MAKE) build-test-container | ||
|
||
release/docker/deb: package/docker/deb | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
PACKAGE_TYPE=deb RESTY_IMAGE_BASE=ubuntu RESTY_IMAGE_TAG=22.04 $(MAKE) release-kong-docker-images | ||
|
||
release/docker/apk: package/docker/apk | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
PACKAGE_TYPE=apk RESTY_IMAGE_BASE=alpine RESTY_IMAGE_TAG=3 $(MAKE) release-kong-docker-images | ||
|
||
release/docker/rpm: package/docker/rpm | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
PACKAGE_TYPE=rpm RESTY_IMAGE_BASE=rhel RESTY_IMAGE_TAG=8.6 $(MAKE) release-kong-docker-images | ||
|
||
setup-kong-build-tools: | ||
-rm -rf $(KONG_BUILD_TOOLS_LOCATION) | ||
-git clone https://github.com/Kong/kong-build-tools.git --recursive $(KONG_BUILD_TOOLS_LOCATION) | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
git reset --hard && git checkout $(KONG_BUILD_TOOLS); \ | ||
|
||
functional-tests: setup-kong-build-tools | ||
cd $(KONG_BUILD_TOOLS_LOCATION); \ | ||
$(MAKE) setup-build && \ | ||
$(MAKE) build-kong && \ | ||
$(MAKE) test | ||
|
||
install: | ||
@luarocks make OPENSSL_DIR=$(OPENSSL_DIR) CRYPTO_DIR=$(OPENSSL_DIR) | ||
|
||
remove: | ||
-@luarocks remove kong | ||
|
||
dependencies: bin/grpcurl | ||
@for rock in $(DEV_ROCKS) ; do \ | ||
if luarocks list --porcelain $$rock | grep -q "installed" ; then \ | ||
echo $$rock already installed, skipping ; \ | ||
else \ | ||
echo $$rock not found, installing via luarocks... ; \ | ||
luarocks install $$rock OPENSSL_DIR=$(OPENSSL_DIR) CRYPTO_DIR=$(OPENSSL_DIR) || exit 1; \ | ||
fi \ | ||
done; | ||
|
||
bin/grpcurl: | ||
@curl -s -S -L \ | ||
https://github.com/fullstorydev/grpcurl/releases/download/v$(GRPCURL_VERSION)/grpcurl_$(GRPCURL_VERSION)_$(GRPCURL_OS)_$(GRPCURL_MACHINE).tar.gz | tar xz -C bin; | ||
@rm bin/LICENSE | ||
|
||
dev: remove install dependencies | ||
|
||
lint: | ||
@luacheck -q . | ||
@!(grep -R -E -I -n -w '#only|#o' spec && echo "#only or #o tag detected") >&2 | ||
@!(grep -R -E -I -n -- '---\s+ONLY' t && echo "--- ONLY block detected") >&2 | ||
|
||
test: | ||
@$(TEST_CMD) spec/01-unit | ||
|
||
test-integration: | ||
@$(TEST_CMD) spec/02-integration | ||
|
||
test-plugins: | ||
@$(TEST_CMD) spec/03-plugins | ||
|
||
test-all: | ||
@$(TEST_CMD) spec/ | ||
|
||
pdk-phase-checks: | ||
rm -f t/phase_checks.stats | ||
rm -f t/phase_checks.report | ||
PDK_PHASE_CHECKS_LUACOV=1 prove -I. t/01*/*/00-phase*.t | ||
luacov -c t/phase_checks.luacov | ||
grep "ngx\\." t/phase_checks.report | ||
grep "check_" t/phase_checks.report | ||
|
||
fix-windows: | ||
@for script in $(WIN_SCRIPTS) ; do \ | ||
echo Converting Windows file $$script ; \ | ||
mv $$script $$script.win ; \ | ||
tr -d '\015' <$$script.win >$$script ; \ | ||
rm $$script.win ; \ | ||
chmod 0755 $$script ; \ | ||
done; |
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,58 @@ | ||
#!/usr/bin/env resty | ||
|
||
local DEFAULT_RESTY_FLAGS="-c 4096" | ||
|
||
if not os.getenv("KONG_BUSTED_RESPAWNED") then | ||
-- initial run, so go update the environment | ||
local script = {} | ||
for line in io.popen("set"):lines() do | ||
local ktvar, val = line:match("^KONG_TEST_([^=]*)=(.*)") | ||
if ktvar then | ||
-- reinserted KONG_TEST_xxx as KONG_xxx; append | ||
table.insert(script, "export KONG_" .. ktvar .. "=" ..val) | ||
end | ||
|
||
local var = line:match("^(KONG_[^=]*)") | ||
local var_for_spec = line:match("^(KONG_SPEC_[^=]*)") | ||
if var and not var_for_spec then | ||
-- remove existing KONG_xxx and KONG_TEST_xxx variables; prepend | ||
table.insert(script, 1, "unset " .. var) | ||
end | ||
end | ||
-- add cli recursion detection | ||
table.insert(script, "export KONG_BUSTED_RESPAWNED=1") | ||
|
||
-- rebuild the invoked commandline, while inserting extra resty-flags | ||
local resty_flags = DEFAULT_RESTY_FLAGS | ||
local cmd = { "exec" } | ||
for i = -1, #arg do | ||
if arg[i]:sub(1, 12) == "RESTY_FLAGS=" then | ||
resty_flags = arg[i]:sub(13, -1) | ||
|
||
else | ||
table.insert(cmd, "'" .. arg[i] .. "'") | ||
end | ||
end | ||
|
||
if resty_flags then | ||
table.insert(cmd, 3, resty_flags) | ||
end | ||
|
||
table.insert(script, table.concat(cmd, " ")) | ||
|
||
-- recurse cli command, with proper variables (un)set for clean testing | ||
local _, _, rc = os.execute(table.concat(script, "; ")) | ||
os.exit(rc) | ||
end | ||
|
||
setmetatable(_G, nil) | ||
|
||
pcall(require, "luarocks.loader") | ||
|
||
require("kong.globalpatches")({ | ||
cli = true, | ||
rbusted = true | ||
}) | ||
|
||
-- Busted command-line runner | ||
require 'busted.runner'({ standalone = false }) |
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,9 @@ | ||
#!/usr/bin/env resty | ||
|
||
setmetatable(_G, nil) | ||
|
||
pcall(require, "luarocks.loader") | ||
|
||
package.path = (os.getenv("KONG_LUA_PATH_OVERRIDE") or "") .. "./?.lua;./?/init.lua;" .. package.path | ||
|
||
require("kong.cmd.init")(arg) |
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,31 @@ | ||
Test helpers for Kong (integration) tests | ||
========================================= | ||
|
||
To generate the documentation run the following command in the Kong source tree: | ||
|
||
``` | ||
# install ldoc using LuaRocks | ||
luarocks install ldoc | ||
# generate and open the docs | ||
cd spec && ldoc . && open docs/index.html && cd .. | ||
``` | ||
|
||
## Environment variables | ||
|
||
When testing, Kong will ignore the `KONG_xxx` environment variables that are | ||
usually used to configure it. This is to make sure that the tests run deterministically. | ||
If this behaviour needs to be overridden, the `KONG_TEST_xxx` | ||
version of the variable can be used, which will be respected by the Kong test | ||
instance. | ||
|
||
To prevent the test helpers from cleaning the Kong working directory, the | ||
variable `KONG_TEST_DONT_CLEAN` can be set. | ||
This comes in handy when inspecting the logs after the tests complete. | ||
|
||
When testing with Redis, the environment variable `KONG_SPEC_REDIS_HOST` can be | ||
used to specify where the Redis server can be found. If not specified, it will default | ||
to `127.0.0.1`. This setting is available to tests via `helpers.redis_host`. | ||
|
||
The configuration file to be used can be set with `KONG_SPEC_TEST_CONF_PATH`. It can be | ||
accessed via helpers as `helpers.test_conf_path`. |
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,11 @@ | ||
project='Kong test helpers' | ||
title='Kong test framework' | ||
description='Test helper functions for Kong (integration) testing' | ||
format='markdown' | ||
file='./helpers.lua' | ||
dir='docs' | ||
readme='README.md' | ||
sort=true | ||
sort_modules=true | ||
style='./' | ||
no_space_before_args=true |
Oops, something went wrong.