create a new shell with repository proned option

This commit is contained in:
oscar 2022-08-24 14:01:07 +12:00
parent b24dcfa9d9
commit f3c725b792
2 changed files with 179 additions and 0 deletions

168
run.sh Executable file
View File

@ -0,0 +1,168 @@
#!/bin/bash
set -eu
source ./utils/common.sh
WORKDIR=/home/oscarzhou/source/github.com/portainer
GLOBAL_VOLUME=/home/oscarzhou/volumes
TRUE=0;
FALSE=1;
REPO_DIR=
REPO_VOLUME=
function debug_portainer_client() {
print_highlight "[debug portainer client]"
yarn
yarn start:client
}
function generate_portainer_jwt_token() {
print_highlight "[generate portainer jwt token]"
read -p "Username(admin):" username
if [ -z "$username" ]; then
username="admin";
fi
read -p "Password(****):" password
read -p "Address(http://127.0.0.1:9000):" address
if [ -z "$address" ]; then
address="http://127.0.0.1:9000";
fi
payload="{\"username\":\"${username}\",\"password\":\"${password}\"}"
curl -d ${payload} -H 'Content-Type: application/json' "${address}/api/auth"
}
function list_portainer_ee_menu() {
print_highlight "Your current working directory is ${WORKDIR}/portainer-ee"
if ! prompt_continue; then
exit;
fi
REPO_DIR=${WORKDIR}/portainer-ee
print_highlight "Your current volume is ${VOLUME}/portainer-ee-data"
if ! prompt_continue; then
exit;
fi
REPO_VOLUME=${VOLUME}/portainer-ee-data
PS3='Please select the action: '
OPTIONS=(
'Debug Client'
'Lint Client'
'Run Unit Test for Client'
'Before Commit'
'Build Client'
'Build Server'
'Run Unit Test for Server'
'Get Portainer CE API Reference'
'Quit'
)
select opt in "${OPTIONS[@]}"
do
case $opt in
'Debug Client')
debug_portainer_client
;;
'PortainerCE')
build_portainer_frontend
;;
'Build Portainer EE/CE Backend')
build_portainer_backend
;;
'Generate Portainer EE/CE JWT')
generate_portainer_jwt
;;
'Run Before Commit [Portainer EE/CE]')
run_before_commit
;;
'Get Portainer CE API Reference')
get_portainer_ce_api_reference
;;
'Quit')
break
;;
esac
done
}
function code_security_scan_summary() {
echo "
1. Scan client with snyk: $(print_highlight "snyk test")
2. Scan server with snyk: $(print_highlight "cd api && snyk test")
3. If snyk is not authenticated: $(print_highlight "snyk auth")
4. Specify the severity threshold: $(print_highlight "snyk test --severity-threshold=<low|medium|high|critical>")
5. Other commands with snyk: $(print_highlight "snyk --help")
"
echo "
Steps to scan portainer image with Trivy:
1. Build the local image: $(print_highlight "docker build -t oscarzhou/portainer:dev-ee -f build/linux/Dockfile .")
2. Scan with trivy: $(print_highlight 'docker run --rm -v "/var/run/docker.sock":"/var/run/docker.sock" aquasec/trivy:latest image oscarzhou/portainer:dev-ee')
3. Other commands with trivy: $(print_highlight 'docker run --rm -v "/var/run/docker.sock":"/var/run/docker.sock" aquasec/trivy:latest --help')
"
}
function menu() {
PS3='Please select the action/repository: '
OPTIONS=(
'PortainerEE'
'PortainerCE'
'Build Portainer EE/CE Backend'
'Generate Portainer JWT Token'
'Run Before Commit [Portainer EE/CE]'
'Get Portainer CE API Reference'
'Run Before Commit [k8s]'
'Code Security Scan'
'Cleanup Temporary Volume'
'Quit'
)
select opt in "${OPTIONS[@]}"
do
case $opt in
'PortainerEE')
list_portainer_ee_menu
;;
'PortainerCE')
build_portainer_frontend
;;
'Build Portainer EE/CE Backend')
build_portainer_backend
;;
'Generate Portainer JWT Token')
generate_portainer_jwt
;;
'Run Before Commit [Portainer EE/CE]')
run_before_commit
;;
'Get Portainer CE API Reference')
get_portainer_ce_api_reference
;;
'Run Before Commit [k8s]')
run_before_commit_k8s
;;
'Code Security Scan')
code_security_scan_summary
;;
'Cleanup Temporary Volume')
cleanup_temporary_volume
;;
'Quit')
break
;;
esac
done
}
# check if the function exists (bash specific)
if [ "$#" -eq 0 ]; then
menu
else
"$@"
fi

View File

@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
TRUE=0;
FALSE=1;
ERROR_COLOR='\033[0;31m'; ERROR_COLOR='\033[0;31m';
HIGHLIGHT_COLOR='\033[0;32m'; HIGHLIGHT_COLOR='\033[0;32m';
@ -18,3 +20,12 @@ function print_error() {
function input() { function input() {
read -p "$(echo -e ${INPUT_COLOR}$1 ${NO_COLOR})" $2 read -p "$(echo -e ${INPUT_COLOR}$1 ${NO_COLOR})" $2
} }
function prompt_continue() {
read -p "Continue N/(Y)?" is_continue
if [[ "${is_continue}" == "N" || "${is_continue}" == "n" ]]; then
return $FALSE;
fi
return $TRUE;
}