portainer-devtool/build_manager.sh

225 lines
4.9 KiB
Bash
Raw Normal View History

2022-03-16 14:31:06 +11:00
#!/bin/bash
set -eu
WORKDIR=/home/oscarzhou/source/github.com/portainer
2022-03-17 19:28:40 +11:00
GLOBAL_VOLUME=/home/oscarzhou/volumes
2022-03-16 14:31:06 +11:00
TRUE=0;
FALSE=1;
# PORTAINER_FLAGS=
# PORTAINER_FLAGS=--enable-init true
ERROR_COLOR='\033[0;31m';
HIGHLIGHT_COLOR='\033[0;32m';
NO_COLOR='\033[0m';
2022-03-17 19:28:40 +11:00
function choose_repo() {
read -p "Choose the working project EE/(CE)/(k8s):" REPO
2022-03-16 14:31:06 +11:00
if [ -z "$REPO" ]; then
REPO="EE";
fi
if [[ "${REPO}" == "ee" || "${REPO}" == "EE" ]]; then
2022-03-17 19:28:40 +11:00
cd ${WORKDIR}/portainer-ee
2022-03-16 14:31:06 +11:00
elif [[ "${REPO}" == "ce" || "${REPO}" == "CE" ]]; then
2022-03-17 19:28:40 +11:00
cd ${WORKDIR}/portainer
elif [[ "${REPO}" == "k8s" || "${REPO}" == "ks" ]]; then
cd ${WORKDIR}/k8s
2022-03-16 14:31:06 +11:00
fi
}
function is_root() {
if [ "$EUID" -ne 0 ]; then
printf "${HIGHLIGHT_COLOR}Please run as root${NO_COLOR}\n"
exit;
fi
}
function check_branch() {
printf "Your current checkout branch \n$(git branch)\n"
read -p "Continue N/(Y)?" CORRECT_BRANCH
if [ -z "$CORRECT_BRANCH" ]; then
CORRECT_BRANCH="N";
fi
if [[ "${CORRECT_BRANCH}" == "N" || "${CORRECT_BRANCH}" == "n" ]]; then
printf "${ERROR_COLOR}Exit.\n";
return $FALSE;
fi
return $TRUE;
}
2022-03-17 19:28:40 +11:00
function choose_export_volume() {
read -p "Choose the volume EE/CE/Temp-data(TD):" DEST
if [ -z "$DEST" ]; then
DEST="EE";
fi
if [[ "${DEST}" == "ee" || "${DEST}" == "EE" ]]; then
VOLUME=~/volumes/portainer-ee-data
elif [[ "${DEST}" == "ce" || "${DEST}" == "CE" ]]; then
2022-03-16 14:31:06 +11:00
VOLUME=~/volumes/portainer-ce-data
2022-03-17 19:28:40 +11:00
elif [[ "${DEST}" == "td" || "${DEST}" == "TD" ]]; then
VOLUME=~/volumes/temp-data
2022-03-16 14:31:06 +11:00
fi
export PORTAINER_DATA=${VOLUME}
printf "${HIGHLIGHT_COLOR}export PORTAINER_DATA=${PORTAINER_DATA}${NO_COLOR}\n"
}
function cleanup_temporary_volume() {
printf "${HIGHLIGHT_COLOR}Clean temporary data${NO_COLOR}\n"
2022-03-17 19:28:40 +11:00
local VOLUME=~/volumes/temp-data
if [ -d ${VOLUME} ]; then
printf "The current volume is ${VOLUME}. "
2022-03-17 19:28:40 +11:00
read -p "Do you want to clean up the existing data N/(Y)?" CLEAN_DATA
if [[ "${CLEAN_DATA}" == "y" || "${CLEAN_DATA}" == "Y" ]]; then
rm -rvf ${VOLUME}/*
fi
else
mkdir ${VOLUME}
fi
}
2022-03-16 14:31:06 +11:00
function build_portainer_frontend_without_prompt() {
printf "${HIGHLIGHT_COLOR}Build Portainer Frontend${NO_COLOR}\n"
yarn start:client
}
function build_portainer_backend_without_prompt() {
printf "${HIGHLIGHT_COLOR}Build Portainer Backend${NO_COLOR}\n"
if [ -z dist/portainer ]; then
rm dist/portainer;
fi
yarn start:server
}
function build_portainer_frontend() {
2022-03-17 19:28:40 +11:00
choose_repo
2022-03-16 14:31:06 +11:00
if ! check_branch; then
exit;
fi
build_portainer_frontend_without_prompt
}
function build_portainer_backend() {
2022-03-17 19:28:40 +11:00
choose_repo
choose_export_volume
2022-03-16 14:31:06 +11:00
if ! check_branch; then
exit;
fi
build_portainer_backend_without_prompt
}
function build_portainer_all() {
printf "${HIGHLIGHT_COLOR}Build Portainer all${NO_COLOR}\n"
2022-03-17 19:28:40 +11:00
choose_repo
choose_export_volume
2022-03-16 14:31:06 +11:00
if ! check_branch; then
exit;
fi
build_portainer_backend_without_prompt
2022-03-17 06:59:53 +11:00
build_portainer_frontend_without_prompt
2022-03-16 14:31:06 +11:00
}
function run_before_commit() {
printf "${HIGHLIGHT_COLOR}Run before commit${NO_COLOR}\n"
2022-03-17 19:28:40 +11:00
choose_repo
2022-03-16 14:31:06 +11:00
if ! check_branch; then
exit;
fi
printf "${HIGHLIGHT_COLOR}yarn format${NO_COLOR}\n"
yarn format
printf "${HIGHLIGHT_COLOR}yarn lint${NO_COLOR}\n"
yarn lint
}
function run_before_commit_k8s() {
printf "${HIGHLIGHT_COLOR}Run before commit${NO_COLOR}\n"
choose_repo
if ! check_branch; then
exit;
fi
printf "${HIGHLIGHT_COLOR}chart-testing ct lint${NO_COLOR}\n"
docker run --rm -it -w /repo -v `pwd`:/repo quay.io/helmpack/chart-testing ct lint --all --config=.ci/ct-config.yaml
}
2022-03-16 14:31:06 +11:00
function menu() {
PS3='Please select the option: '
OPTIONS=(
'Build Portainer All'
'Build Portainer Frontend'
'Build Portainer Backend'
'Run Before Commit'
'Cleanup Temporary Volume'
'Run Before COmmit (k8s)'
2022-03-16 14:31:06 +11:00
'Quit'
)
select opt in "${OPTIONS[@]}"
do
case $opt in
'Build Portainer All')
build_portainer_all
;;
'Build Portainer Frontend')
build_portainer_frontend
;;
'Build Portainer Backend')
build_portainer_backend
;;
'Run Before Commit')
run_before_commit
;;
'Cleanup Temporary Volume')
cleanup_temporary_volume
;;
'Run Before COmmit (k8s)')
run_before_commit_k8s
2022-03-17 19:28:40 +11:00
;;
2022-03-16 14:31:06 +11:00
'Quit')
break
;;
esac
done
}
# check if the function exists (bash specific)
if [ "$#" -eq 0 ]; then
menu
else
"$@"
fi