- Implements Apache APISIX packaging for Cloudron platform. - Includes Dockerfile, CloudronManifest.json, and start.sh. - Configured to use Cloudron's etcd addon. 🤖 Generated with Gemini CLI Co-Authored-By: Gemini <noreply@google.com>
225 lines
6.3 KiB
Bash
Executable File
225 lines
6.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
#
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
# contributor license agreements. See the NOTICE file distributed with
|
|
# this work for additional information regarding copyright ownership.
|
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
# (the "License"); you may not use this file except in compliance with
|
|
# the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
. ./t/cli/common.sh
|
|
|
|
git checkout conf/config.yaml
|
|
|
|
# check restart with old nginx.pid exist
|
|
echo "-1" > logs/nginx.pid
|
|
out=$(./bin/apisix start 2>&1 || true)
|
|
if echo "$out" | grep "the old APISIX is still running"; then
|
|
rm logs/nginx.pid
|
|
echo "failed: should reject bad nginx.pid"
|
|
exit 1
|
|
fi
|
|
|
|
./bin/apisix stop
|
|
sleep 0.5
|
|
rm logs/nginx.pid || true
|
|
|
|
# check no corresponding process
|
|
make run
|
|
oldpid=$(< logs/nginx.pid)
|
|
make stop
|
|
sleep 0.5
|
|
echo $oldpid > logs/nginx.pid
|
|
out=$(make run || true)
|
|
if ! echo "$out" | grep "nginx.pid exists but there's no corresponding process with pid"; then
|
|
echo "failed: should find no corresponding process"
|
|
exit 1
|
|
fi
|
|
make stop
|
|
echo "pass: no corresponding process"
|
|
|
|
# check running when run repeatedly
|
|
out=$(make run; make run || true)
|
|
if ! echo "$out" | grep "the old APISIX is still running"; then
|
|
echo "failed: should find APISIX running"
|
|
exit 1
|
|
fi
|
|
|
|
make stop
|
|
echo "pass: check APISIX running"
|
|
|
|
# check customized config
|
|
|
|
git checkout conf/config.yaml
|
|
|
|
# start with not existed customized config
|
|
make init
|
|
|
|
if ./bin/apisix start -c conf/not_existed_config.yaml; then
|
|
echo "failed: apisix still start with invalid customized config.yaml"
|
|
exit 1
|
|
fi
|
|
|
|
# start with customized config
|
|
echo "
|
|
deployment:
|
|
admin:
|
|
admin_listen:
|
|
port: 9180
|
|
https_admin: true
|
|
admin_api_mtls:
|
|
admin_ssl_cert: '../t/certs/apisix_admin_ssl.crt'
|
|
admin_ssl_cert_key: '../t/certs/apisix_admin_ssl.key'
|
|
admin_key_required: true # Enable Admin API authentication by default for security.
|
|
admin_key:
|
|
-
|
|
name: admin # admin: write access to configurations.
|
|
key: edd1c9f034335f136f87ad84b625c8f1
|
|
role: admin
|
|
" > conf/customized_config.yaml
|
|
|
|
./bin/apisix start -c conf/customized_config.yaml
|
|
|
|
# check if .customized_config_path has been created
|
|
if [ ! -e conf/.customized_config_path ]; then
|
|
rm conf/customized_config.yaml
|
|
echo ".customized_config_path should exits"
|
|
exit 1
|
|
fi
|
|
|
|
# check if the custom config is used
|
|
code=$(curl -k -i -m 20 -o /dev/null -s -w %{http_code} https://127.0.0.1:9180/apisix/admin/routes -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1")
|
|
if [ ! $code -eq 200 ]; then
|
|
rm conf/customized_config.yaml
|
|
echo "failed: customized config.yaml not be used"
|
|
exit 1
|
|
fi
|
|
|
|
make stop
|
|
|
|
# check if .customized_config_path has been removed
|
|
if [ -e conf/.customized_config_path ]; then
|
|
rm conf/customized_config_path.yaml
|
|
echo ".customized_config_path should be removed"
|
|
exit 1
|
|
fi
|
|
|
|
# start with invalied config
|
|
echo "abc" > conf/customized_config.yaml
|
|
|
|
if ./bin/apisix start -c conf/customized_config.yaml ; then
|
|
rm conf/customized_config.yaml
|
|
echo "start should be failed"
|
|
exit 1
|
|
fi
|
|
|
|
# check if apisix can be started use correctly default config. (https://github.com/apache/apisix/issues/9700)
|
|
./bin/apisix start
|
|
sleep 1
|
|
admin_key=$(yq '.deployment.admin.admin_key[0].key' conf/config.yaml | sed 's/"//g')
|
|
echo "look here" $admin_key
|
|
code=$(curl -k -i -m 20 -o /dev/null -s -w %{http_code} http://127.0.0.1:9180/apisix/admin/routes -H "X-API-KEY: $admin_key")
|
|
if [ ! $code -eq 200 ]; then
|
|
rm conf/customized_config.yaml
|
|
echo "failed: should use default config"
|
|
exit 1
|
|
fi
|
|
|
|
make stop
|
|
|
|
# check if apisix can be started after multiple start failures. (https://github.com/apache/apisix/issues/9171)
|
|
echo "
|
|
deployment:
|
|
admin:
|
|
admin_listen:
|
|
port: 9180
|
|
https_admin: true
|
|
admin_api_mtls:
|
|
admin_ssl_cert: '../t/certs/apisix_admin_ssl.crt'
|
|
admin_ssl_cert_key: '../t/certs/apisix_admin_ssl.key'
|
|
etcd:
|
|
host:
|
|
- http://127.0.0.1:22379
|
|
" > conf/customized_config.yaml
|
|
|
|
./bin/apisix start -c conf/customized_config.yaml || true
|
|
./bin/apisix start -c conf/customized_config.yaml || true
|
|
./bin/apisix start -c conf/customized_config.yaml || true
|
|
|
|
echo "
|
|
deployment:
|
|
admin:
|
|
admin_listen:
|
|
port: 9180
|
|
https_admin: true
|
|
admin_api_mtls:
|
|
admin_ssl_cert: '../t/certs/apisix_admin_ssl.crt'
|
|
admin_ssl_cert_key: '../t/certs/apisix_admin_ssl.key'
|
|
admin_key_required: true # Enable Admin API authentication by default for security.
|
|
admin_key:
|
|
-
|
|
name: admin # admin: write access to configurations.
|
|
key: edd1c9f034335f136f87ad84b625c8f1
|
|
role: admin
|
|
" > conf/customized_config.yaml
|
|
|
|
./bin/apisix start -c conf/customized_config.yaml
|
|
|
|
code=$(curl -k -i -m 20 -o /dev/null -s -w %{http_code} https://127.0.0.1:9180/apisix/admin/routes -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1")
|
|
if [ ! $code -eq 200 ]; then
|
|
rm conf/customized_config.yaml
|
|
echo "failed: should use default config"
|
|
exit 1
|
|
fi
|
|
|
|
rm conf/customized_config.yaml
|
|
echo "passed: test customized config successful"
|
|
|
|
# test quit command
|
|
bin/apisix start
|
|
|
|
if ! ps -ef | grep "apisix" | grep "master process" | grep -v "grep"; then
|
|
echo "apisix not started"
|
|
exit 1
|
|
fi
|
|
|
|
bin/apisix quit
|
|
|
|
sleep 2
|
|
|
|
if ps -ef | grep "worker process is shutting down" | grep -v "grep"; then
|
|
echo "all workers should exited"
|
|
exit 1
|
|
fi
|
|
|
|
echo "passed: test quit command successful"
|
|
|
|
# test reload command
|
|
bin/apisix start
|
|
|
|
if ! ps -ef | grep "apisix" | grep "master process" | grep -v "grep"; then
|
|
echo "apisix not started"
|
|
exit 1
|
|
fi
|
|
|
|
bin/apisix reload
|
|
|
|
sleep 3
|
|
|
|
if ps -ef | grep "worker process is shutting down" | grep -v "grep"; then
|
|
echo "old workers should exited"
|
|
exit 1
|
|
fi
|
|
|
|
echo "passed: test reload command successful"
|