SREWorks/build.sh

362 lines
11 KiB
Bash
Raw Normal View History

2022-03-22 01:19:25 +08:00
#!/bin/bash
SW_ROOT=$(cd `dirname $0`; pwd)
set -e
2022-05-30 14:46:58 +08:00
if [ -z ${SW_PYTHON3_IMAGE} ]
then
export SW_PYTHON3_IMAGE="python:3.9.12-alpine"
fi
2022-03-22 01:19:25 +08:00
2022-05-30 14:46:58 +08:00
if [ -z ${APK_REPO_DOMAIN} ]
then
export APK_REPO_DOMAIN="mirrors.tuna.tsinghua.edu.cn"
fi
if [ -z ${PYTHON_PIP} ]
then
export PYTHON_PIP="http://mirrors.aliyun.com/pypi/simple"
fi
export PYTHON_PIP_DOMAIN=$(echo $PYTHON_PIP|awk -F '//' '{print $2}'|awk -F '/' '{print $1}')
if [ -z ${MIGRATE_IMAGE} ]
then
export MIGRATE_IMAGE="migrate/migrate"
fi
2022-03-22 01:19:25 +08:00
if [ -z ${MAVEN_IMAGE} ]
then
export MAVEN_IMAGE="maven:3.8.3-adoptopenjdk-11"
fi
if [ -z ${HELM_BIN_URL} ]
then
export HELM_BIN_URL="https://abm-storage.oss-cn-zhangjiakou.aliyuncs.com/lib/helm"
fi
if [ -z ${KUSTOMIZE_BIN_URL} ]
then
export KUSTOMIZE_BIN_URL="https://abm-storage.oss-cn-zhangjiakou.aliyuncs.com/lib/kustomize"
fi
if [ -z ${MAVEN_SETTINGS_XML} ]
then
export MAVEN_SETTINGS_XML="https://sreworks.oss-cn-beijing.aliyuncs.com/resource/settings.xml"
fi
if [ -z ${GOLANG_IMAGE} ]
then
export GOLANG_IMAGE="golang:alpine"
fi
if [ -z ${GOPROXY} ]
then
export GOPROXY="https://goproxy.cn"
fi
2022-06-04 08:45:26 +08:00
if [ -z ${GOLANG_BUILD_IMAGE} ]
then
export GOLANG_BUILD_IMAGE="golang:1.16"
fi
if [ -z ${DISTROLESS_IMAGE} ]
then
export DISTROLESS_IMAGE="sreworks-registry.cn-beijing.cr.aliyuncs.com/mirror/distroless-static:nonroot"
fi
2022-06-04 16:50:50 +08:00
if [ -z ${MINIO_CLIENT_URL} ]
then
export MINIO_CLIENT_URL="https://sreworks.oss-cn-beijing.aliyuncs.com/bin/mc-linux-amd64"
fi
if [ -z ${SREWORKS_BUILTIN_PACKAGE_URL} ]
then
export SREWORKS_BUILTIN_PACKAGE_URL="https://sreworks.oss-cn-beijing.aliyuncs.com/packages"
fi
2022-03-22 01:19:25 +08:00
target_migrate(){
[ -n "$TAG" ] && tag=$TAG || tag="latest"
if [ -n "$BUILD" ]; then
echo "-- build sw-migrate --" >&2
2022-06-04 09:01:14 +08:00
TMP_DOCKERFILE="/tmp/${RANDOM}.dockerfile"
envsubst < $SW_ROOT/paas/migrate/Dockerfile.tpl > ${TMP_DOCKERFILE}
2023-06-16 17:49:44 +08:00
docker build -t sw-migrate:$tag -f ${TMP_DOCKERFILE} $SW_ROOT/paas/migrate
2022-03-22 01:19:25 +08:00
docker tag sw-migrate:$tag sw-migrate:latest
fi
if [ -n "$PUSH_REPO" ]; then
echo "-- push sw-migrate --" >&2
docker tag sw-migrate:$tag $PUSH_REPO/sw-migrate:$tag
docker push $PUSH_REPO/sw-migrate:$tag
fi
}
2022-06-16 13:40:33 +08:00
target_progress_check(){
[ -n "$TAG" ] && tag=$TAG || tag="latest"
if [ -n "$BUILD" ]; then
echo "-- build sw-progress-check --" >&2
TMP_DOCKERFILE="/tmp/${RANDOM}.dockerfile"
envsubst < $SW_ROOT/paas/progress-check/Dockerfile.tpl > ${TMP_DOCKERFILE}
2023-06-16 17:49:44 +08:00
docker build -t sw-progress-check:$tag -f ${TMP_DOCKERFILE} $SW_ROOT/paas/progress-check
2022-06-16 13:40:33 +08:00
docker tag sw-progress-check:$tag sw-progress-check:latest
fi
if [ -n "$PUSH_REPO" ]; then
echo "-- push sw-progress-check --" >&2
docker tag sw-progress-check:$tag $PUSH_REPO/sw-progress-check:$tag
docker push $PUSH_REPO/sw-progress-check:$tag
fi
}
2022-03-22 01:19:25 +08:00
target_openjdk8(){
[ -n "$TAG" ] && tag=$TAG || tag="latest"
if [ -n "$BUILD" ]; then
echo "-- build sw-openjdk8-jre --" >&2
2023-06-16 17:49:44 +08:00
docker build -t sw-openjdk8-jre:$tag -f $SW_ROOT/paas/openjdk8-jre/Dockerfile $SW_ROOT/paas/openjdk8-jre
2022-03-22 01:19:25 +08:00
docker tag sw-openjdk8-jre:$tag sw-openjdk8-jre:latest
fi
if [ -n "$PUSH_REPO" ]; then
echo "-- push sw-openjdk8-jre --" >&2
docker tag sw-openjdk8-jre:$tag $PUSH_REPO/sw-openjdk8-jre:$tag
docker push $PUSH_REPO/sw-openjdk8-jre:$tag
fi
}
target_postrun(){
[ -n "$TAG" ] && tag=$TAG || tag="latest"
if [ -n "$BUILD" ]; then
echo "-- build sw-postrun --" >&2
2022-05-30 14:46:58 +08:00
TMP_DOCKERFILE="/tmp/${RANDOM}.dockerfile"
envsubst < $SW_ROOT/paas/postrun/Dockerfile.tpl > ${TMP_DOCKERFILE}
2023-06-16 17:49:44 +08:00
docker build -t sw-postrun:$tag -f ${TMP_DOCKERFILE} $SW_ROOT/paas/postrun
2022-03-22 01:19:25 +08:00
docker tag sw-postrun:$tag sw-postrun:latest
fi
if [ -n "$PUSH_REPO" ]; then
echo "-- push sw-postrun --" >&2
docker tag sw-postrun:$tag $PUSH_REPO/sw-postrun:$tag
docker push $PUSH_REPO/sw-postrun:$tag
fi
}
target_appmanager_server(){
[ -n "$TAG" ] && tag=$TAG || tag="develop"
if [ -n "$BUILD" ]; then
echo "-- build appmanager server --" >&2
TMP_DOCKERFILE="/tmp/${RANDOM}.dockerfile"
envsubst < $SW_ROOT/paas/appmanager/Dockerfile_sreworks.tpl > ${TMP_DOCKERFILE}
docker build -t sw-paas-appmanager:$tag -f ${TMP_DOCKERFILE} $SW_ROOT/paas/appmanager
2022-03-22 01:19:25 +08:00
docker tag sw-paas-appmanager:$tag sw-paas-appmanager:latest
fi
if [ -n "$PUSH_REPO" ]; then
echo "-- push appmanager server --" >&2
docker tag sw-paas-appmanager:$tag $PUSH_REPO/sw-paas-appmanager:$tag
docker push $PUSH_REPO/sw-paas-appmanager:$tag
fi
}
target_appmanager_db_migration(){
[ -n "$TAG" ] && tag=$TAG || tag="latest"
if [ -n "$BUILD" ]; then
echo "-- build appmanager db migration --" >&2
docker build -t sw-paas-appmanager-db-migration:$tag -f $SW_ROOT/paas/appmanager/Dockerfile_db_migration $SW_ROOT/paas/appmanager
docker tag sw-paas-appmanager-db-migration:$tag sw-paas-appmanager-db-migration:latest
fi
if [ -n "$PUSH_REPO" ]; then
echo "-- push appmanager db migration --" >&2
docker tag sw-paas-appmanager-db-migration:$tag $PUSH_REPO/sw-paas-appmanager-db-migration:$tag
docker push $PUSH_REPO/sw-paas-appmanager-db-migration:$tag
fi
}
target_appmanager_postrun(){
[ -n "$TAG" ] && tag=$TAG || tag="latest"
if [ -n "$BUILD" ]; then
echo "-- build appmanager postrun --" >&2
TMP_DOCKERFILE="/tmp/${RANDOM}.dockerfile"
envsubst < $SW_ROOT/paas/appmanager/Dockerfile_postrun_sreworks.tpl > ${TMP_DOCKERFILE}
docker build -t sw-paas-appmanager-postrun:$tag -f ${TMP_DOCKERFILE} $SW_ROOT
2022-03-22 01:19:25 +08:00
docker tag sw-paas-appmanager-postrun:$tag sw-paas-appmanager-postrun:latest
fi
if [ -n "$PUSH_REPO" ]; then
echo "-- push appmanager postrun --" >&2
docker tag sw-paas-appmanager-postrun:$tag $PUSH_REPO/sw-paas-appmanager-postrun:$tag
docker push $PUSH_REPO/sw-paas-appmanager-postrun:$tag
fi
}
target_appmanager_cluster_init(){
[ -n "$TAG" ] && tag=$TAG || tag="latest"
if [ -n "$BUILD" ]; then
echo "-- build appmanager cluster init --" >&2
TMP_DOCKERFILE="/tmp/${RANDOM}.dockerfile"
envsubst < $SW_ROOT/paas/appmanager/Dockerfile_cluster_init.tpl > ${TMP_DOCKERFILE}
docker build -t sw-paas-appmanager-cluster-init:$tag -f ${TMP_DOCKERFILE} $SW_ROOT/paas/appmanager
2022-03-22 01:19:25 +08:00
docker tag sw-paas-appmanager-cluster-init:$tag sw-paas-appmanager-cluster-init:latest
fi
if [ -n "$PUSH_REPO" ]; then
echo "-- push appmanager cluster init --" >&2
docker tag sw-paas-appmanager-cluster-init:$tag $PUSH_REPO/sw-paas-appmanager-cluster-init:$tag
docker push $PUSH_REPO/sw-paas-appmanager-cluster-init:$tag
fi
}
target_appmanager_kind_operator(){
[ -n "$TAG" ] && tag=$TAG || tag="develop"
if [ -n "$BUILD" ]; then
echo "-- build appmanager kind operator --" >&2
cd $SW_ROOT/paas/appmanager-kind-operator
2022-06-04 16:50:50 +08:00
TMP_DOCKERFILE="/tmp/${RANDOM}.dockerfile"
envsubst < $SW_ROOT/paas/appmanager-kind-operator/Dockerfile.tpl > ${TMP_DOCKERFILE}
IMG=sw-paas-appmanager-operator:$tag DOCKERFILE=${TMP_DOCKERFILE} GOPROXY=${GOPROXY} make docker-build
2022-03-22 01:19:25 +08:00
docker tag sw-paas-appmanager-operator:$tag sw-paas-appmanager-operator:latest
fi
if [ -n "$PUSH_REPO" ]; then
echo "-- push appmanager kind operator --" >&2
docker tag sw-paas-appmanager-operator:$tag $PUSH_REPO/sw-paas-appmanager-operator:$tag
docker push $PUSH_REPO/sw-paas-appmanager-operator:$tag
fi
}
target_swcli(){
[ -n "$TAG" ] && tag=$TAG || tag="latest"
if [ -n "$BUILD" ]; then
echo "-- build swcli --" >&2
TMP_DOCKERFILE="/tmp/${RANDOM}.dockerfile"
envsubst < $SW_ROOT/paas/swcli/Dockerfile_sreworks.tpl > ${TMP_DOCKERFILE}
docker build -t swcli:$tag -f ${TMP_DOCKERFILE} $SW_ROOT/paas/swcli
2022-03-22 01:19:25 +08:00
docker tag swcli:$tag swcli:latest
fi
if [ -n "$PUSH_REPO" ]; then
docker tag swcli:$tag $PUSH_REPO/swcli:$tag
docker tag swcli:$tag swcli:latest
docker push $PUSH_REPO/swcli:$tag
fi
}
target_swcli_builtin_package(){
[ -n "$TAG" ] && tag=$TAG || tag="latest"
if [ -n "$BUILD" ]; then
echo "-- build swcli builtin package --" >&2
if [ -d $SW_ROOT/paas/swcli/builtin_package ]; then
rm -rf $SW_ROOT/paas/swcli/builtin_package
fi
mkdir $SW_ROOT/paas/swcli/builtin_package
cp -r $SW_ROOT/saas $SW_ROOT/paas/swcli/builtin_package/saas
cp -r $SW_ROOT/chart $SW_ROOT/paas/swcli/builtin_package/chart
2022-11-10 22:24:01 +08:00
cp -r $SW_ROOT/plugins $SW_ROOT/paas/swcli/builtin_package/plugins
2022-06-04 16:50:50 +08:00
TMP_DOCKERFILE="/tmp/${RANDOM}.dockerfile"
envsubst < $SW_ROOT/paas/swcli/Dockerfile_builtin_package.tpl > ${TMP_DOCKERFILE}
docker build -t swcli-builtin-package:$tag -f ${TMP_DOCKERFILE} $SW_ROOT/paas/swcli
2022-03-22 01:19:25 +08:00
docker tag swcli-builtin-package:$tag swcli-builtin-package:latest
fi
if [ -n "$PUSH_REPO" ]; then
docker tag swcli-builtin-package:$tag $PUSH_REPO/swcli-builtin-package:$tag
docker push $PUSH_REPO/swcli-builtin-package:$tag
fi
}
target_base(){
target_migrate
target_openjdk8
target_postrun
2022-06-16 13:40:33 +08:00
target_progress_check
2022-03-22 01:19:25 +08:00
}
2022-04-20 22:49:57 +08:00
target_appmanager_base(){
target_appmanager_db_migration
target_appmanager_postrun
target_appmanager_cluster_init
target_appmanager_kind_operator
target_swcli
target_swcli_builtin_package
}
2022-03-22 01:19:25 +08:00
target_appmanager(){
target_appmanager_server
target_appmanager_db_migration
target_appmanager_postrun
target_appmanager_cluster_init
target_appmanager_kind_operator
target_swcli
target_swcli_builtin_package
}
POSITIONAL=()
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-p|--push)
PUSH_REPO="$2"
shift # past argument
shift # past value
;;
-b|--build)
BUILD="YES"
shift # past argument
#shift # past value
;;
-t|--target)
TARGET="$2"
shift # past argument
shift # past value
;;
--tag)
TAG="$2"
shift # past argument
shift # past value
;;
--default)
DEFAULT=YES
shift # past argument
;;
*) # unknown option
POSITIONAL+=("$1") # save it in an array for later
shift # past argument
;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters
if [ ! -n "$TARGET" ] ;then
echo "" >&2
echo " -p, --push Push docker image to target repository (default no push) " >&2
echo " -b, --build " >&2
echo " -t, --target all, base, appmanager " >&2
echo " --tag image tag" >&2
echo "" >&2
else
echo "SW_ROOT = ${SW_ROOT}" >&2
echo "PUSH_REPO = ${PUSH_REPO}" >&2
echo "BUILD = ${BUILD}" >&2
echo "TARGET = ${TARGET}" >&2
echo "TAG = ${TAG}" >&2
case $TARGET in
all)
target_base
target_appmanager
;;
base)
target_base
;;
appmanager)
target_appmanager
;;
2022-04-20 22:49:57 +08:00
appmanager_base)
target_appmanager_base
;;
2022-03-22 01:19:25 +08:00
*)
eval "target_${TARGET//\-/\_}"
esac
fi