Builder manager bugfixes (#367)
This contains a few different builder manager fixes: * Update the zip file structure to avoid an extra subdirectory * Annotate packages with what functions are using them * Only trigger builds when there is no deployment archive * Python environment loadpath bugfixes * Other bugfixes
This commit is contained in:
committed by
Soam Vasani
parent
380b7d1bcd
commit
a63b8b372f
@@ -9,8 +9,8 @@ set -euo pipefail
|
||||
# 2. package watcher triggers the build if any changes to packages
|
||||
|
||||
ROOT=$(dirname $0)/../..
|
||||
PYTHON_RUNTIME_IMAGE=gcr.io/fission-ci/python-env:test
|
||||
PYTHON_BUILDER_IMAGE=gcr.io/fission-ci/python-env-builder:test
|
||||
PYTHON_RUNTIME_IMAGE=gcr.io/fission-ci/python3-env:test
|
||||
PYTHON_BUILDER_IMAGE=gcr.io/fission-ci/python3-env-builder:test
|
||||
|
||||
fn=python-srcbuild-$(date +%s)
|
||||
|
||||
@@ -23,21 +23,47 @@ checkFunctionResponse() {
|
||||
echo $response | grep -i "a: 1 b: {c: 3, d: 4}"
|
||||
}
|
||||
|
||||
waitBuild() {
|
||||
echo "Waiting for builder manager to finish the build"
|
||||
|
||||
while true; do
|
||||
kubectl --namespace default get packages $1 -o jsonpath='{.status.buildstatus}'|grep succeeded
|
||||
if [[ $? -eq 0 ]]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
export -f waitBuild
|
||||
|
||||
waitEnvBuilder() {
|
||||
echo "Waiting for env builder to catch up"
|
||||
|
||||
while true; do
|
||||
kubectl --namespace fission-builder get pod|grep python|grep Running
|
||||
if [[ $? -eq 0 ]]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
sleep 10
|
||||
}
|
||||
export -f waitEnvBuilder
|
||||
|
||||
echo "Pre-test cleanup"
|
||||
fission env delete --name python || true
|
||||
kubectl --namespace default get packages|grep -v NAME|awk '{print $1}'|xargs -I@ bash -c 'kubectl --namespace default delete packages @' || true
|
||||
|
||||
echo "Creating python env"
|
||||
fission env create --name python --image $PYTHON_RUNTIME_IMAGE --builder $PYTHON_BUILDER_IMAGE
|
||||
trap "fission env delete --name python" EXIT
|
||||
|
||||
echo "Waiting for env builder to catch up"
|
||||
sleep 30
|
||||
timeout 180s bash -c waitEnvBuilder
|
||||
|
||||
echo "Creating source pacakage"
|
||||
zip -jr demo-src-pkg.zip $ROOT/examples/python/sourcepkg/
|
||||
|
||||
echo "Creating function " $fn
|
||||
fission fn create --name $fn --env python --src demo-src-pkg.zip --entrypoint "main" --buildcmd "./build.sh"
|
||||
fission fn create --name $fn --env python --src demo-src-pkg.zip --entrypoint "user.main" --buildcmd "./build.sh"
|
||||
trap "fission fn delete --name $fn" EXIT
|
||||
|
||||
echo "Creating route"
|
||||
@@ -46,15 +72,10 @@ fission route create --function $fn --url /$fn --method GET
|
||||
echo "Waiting for router to catch up"
|
||||
sleep 3
|
||||
|
||||
echo "Doing an HTTP POST on the builder manager's route to start a build"
|
||||
pkg=$(kubectl --namespace default get functions $fn -o jsonpath='{.spec.package.packageref.name}')
|
||||
echo $pkg
|
||||
response=$(curl -X POST $FISSION_URL/proxy/buildermgr/v1/build \
|
||||
-H 'content-type: application/json' \
|
||||
-d "{\"package\": {\"namespace\": \"default\",\"name\": \"$pkg\"}}")
|
||||
|
||||
echo "Waiting for builder manager to finish the build triggered by http request"
|
||||
sleep 30
|
||||
# wait for build to finish at most 60s
|
||||
timeout 60s bash -c "waitBuild $pkg"
|
||||
|
||||
checkFunctionResponse $fn
|
||||
|
||||
@@ -62,8 +83,10 @@ echo "Updating function " $fn
|
||||
fission fn update --name $fn --src demo-src-pkg.zip
|
||||
trap "fission fn delete --name $fn" EXIT
|
||||
|
||||
echo "Waiting for builder manager to finish the build triggered by packageWatcher"
|
||||
sleep 30
|
||||
pkg=$(kubectl --namespace default get functions $fn -o jsonpath='{.spec.package.packageref.name}')
|
||||
|
||||
# wait for build to finish at most 60s
|
||||
timeout 60s bash -c "waitBuild $pkg"
|
||||
|
||||
checkFunctionResponse $fn
|
||||
|
||||
|
||||
Reference in New Issue
Block a user