CodePush使用问题:第一次发布更新应用,提示:Error: Deployment “Staging“ does not exist.

在尝试使用`appcentercodepushrelease-react`命令发布React应用到Android的Staging部署时遇到错误。解决方案是首先执行带有`-dstaging`参数的命令,然后使用`appcentercodepushdeploymentlist`检查可用部署。在AppCenter平台上也确认了部署的存在。

执行命令:appcenter codepush release-react -a whenGo/test133-Android
报错:Error: Deployment “Staging” does not exist.

解决办法:

第一次要执行执行命令:appcenter codepush release-react -a whenGo/test133-Android -d staging

--------------------------

然后执行命令:appcenter codepush deployment list -a whenGo/test133-Android,就会看到如下信息了:

 登录到AppCenter上,也看到了如下内容:

 

#!/usr/bin/env bash # # Copyright (c) 2023, TP-Link Corporation Limited. All rights reserved. # set -o errexit -o nounset -o pipefail DIR="$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)" HAWKFIRE_CONFIG="${DIR}/.hawkfire.yaml" PROJECT_NAME=$(yq r "${HAWKFIRE_CONFIG}" metadata.name) MAVEN_PROJECT_VERSION="" MICROSERVICE_K8S_VALUES="" PROG="server.sh" USAGE=" Usage: ${PROG} <command> [action] ${PROG} build # build server ${PROG} docker # actions for docker ${PROG} helm-chart # actions for helm-chart ${PROG} deploy [environment] [region] [version_override] # deploy a microservice ${PROG} --help " DOCKER_USAGE=" Usage: ${PROG} docker make # initialize distribution and artifacts directory ${PROG} docker build [version_override] # build docker container ${PROG} docker release [version_override] # release the docker container to AWS ECR ${PROG} docker --help " HELM_CHART_USAGE=" Usage: ${PROG} helm-chart build [environment] [region] [version_override] # build and package helm chart with default values from specified environment and region ${PROG} helm-chart publish [version_override] # publish the current chart to prd-tplink-nbu chart repository ${PROG} helm-chart delete [version] # deletes the version of the chart from the repository ${PROG} helm-chart --help " function error { echo -e "$1" >&2 exit 1 } function usage-help { case $# in 0) error "${USAGE}";; 1) case $1 in docker) error "${DOCKER_USAGE}";; helm-chart) error "${HELM_CHART_USAGE}";; *) usage-help;; esac ;; esac } function get-three-digit-version-number { OLD_VERSION=$1 IFS_OLD=${IFS} IFS="." VERSION_ARR=(${OLD_VERSION}) IFS=${IFS_OLD} if [[ ${#VERSION_ARR[@]} -eq 3 ]]; then echo ${OLD_VERSION} return fi if [[ ${#VERSION_ARR[@]} -gt 4 ]]; then echo ${OLD_VERSION} return fi VERSION_FIRST=${VERSION_ARR[0]} VERSION_SECOND=${VERSION_ARR[1]} VERSION_THIRD=${VERSION_ARR[2]} VERSION_FOURTH_STR=${VERSION_ARR[3]} VERSION_FORTH_NUMBER_LENGTH=${#VERSION_FOURTH_STR} VERSION_FORTH_WORD="" if [ "$VERSION_FORTH_NUMBER_LENGTH" -gt 3 ];then VERSION_FOURTH="${VERSION_FOURTH_STR%-*}" VERSION_FORTH_WORD="-""${VERSION_FOURTH_STR#*-}" else VERSION_FOURTH=${VERSION_FOURTH_STR} fi VERSION_FORTH_NUMBER_LENGTH=${#VERSION_FOURTH} if [ "$VERSION_FORTH_NUMBER_LENGTH" -eq 1 ];then VERSION_FORTH_NUMBER_NEW="00""${VERSION_FOURTH%-*}" elif [ "$VERSION_FORTH_NUMBER_LENGTH" -eq 2 ];then VERSION_FORTH_NUMBER_NEW="0""${VERSION_FOURTH%-*}" else VERSION_FORTH_NUMBER_NEW="${VERSION_FOURTH%-*}" fi local NEW_VERSION="${VERSION_FIRST}"".""${VERSION_SECOND}"".""${VERSION_THIRD}""${VERSION_FORTH_NUMBER_NEW}""${VERSION_FORTH_WORD}" echo ${NEW_VERSION} } function get-maven-project-version { if [[ -z "${MAVEN_PROJECT_VERSION}" ]]; then MAVEN_PROJECT_VERSION=$(mvn -Psmb-nexus -Pcloud-based-build -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive exec:exec) MAVEN_PROJECT_VERSION_NEW=$(get-three-digit-version-number ${MAVEN_PROJECT_VERSION}) echo "# Maven Project Version NEW: ${MAVEN_PROJECT_VERSION_NEW}" fi } function get-microservice-k8s-values { local K8S_VALUES_REPO=$(printenv SMB_K8S_VALUES_REPO) if [[ -z "${K8S_VALUES_REPO}" ]]; then error "Please configure the environment variable <SMB_K8S_VALUES_REPO>" fi MICROSERVICE_K8S_VALUES="${K8S_VALUES_REPO}/${PROJECT_NAME}" if [[ ! -d "${MICROSERVICE_K8S_VALUES}" ]]; then error "The K8S-Values of Microservice does not exist! <${MICROSERVICE_K8S_VALUES}>" fi } function server-build { echo "# Server Build" mvn -T 64 clean install -Pcloud-based-build -DskipTests=true -e get-maven-project-version docker-make } function docker { local module="docker" local IMAGE_NAME="smb/${PROJECT_NAME}" local DOCKER_REPO="746166756265.dkr.ecr.ap-southeast-1.amazonaws.com/${IMAGE_NAME}" local DOCKER_LOGIN=$(aws ecr get-login --no-include-email --region ap-southeast-1 --profile prd) case $# in 0) usage-help "${module}";; *) get-maven-project-version; case $1 in make) docker-make;; build) shift; docker-build "$@";; release) shift; docker-release "$@";; *) echo "Unknown arguments: $*"; usage-help "${module}";; esac ;; esac } function docker-dev-test { local module="docker" local IMAGE_NAME="smb/${PROJECT_NAME}" local DOCKER_REPO="242777933053.dkr.ecr.ap-southeast-1.amazonaws.com/${IMAGE_NAME}" local DOCKER_LOGIN=$(aws ecr get-login --no-include-email --region ap-southeast-1 --profile dev) local DOCKER_PRD_LOGIN=$(aws ecr get-login --no-include-email --registry-ids 746166756265 --region ap-southeast-1 --profile dev) eval "command ${DOCKER_PRD_LOGIN}" case $# in 0) usage-help "${module}";; *) get-maven-project-version; case $1 in make) docker-make;; build) shift; docker-build "$@";; release) shift; docker-release "$@";; *) echo "Unknown arguments: $*"; usage-help "${module}";; esac ;; esac } function docker-make { local ARTIFACTS_DIR="artifacts" local BUILD_DIR="dist" local PROJECT_VERSION="${MAVEN_PROJECT_VERSION}" echo "# Maven Project Version: ${PROJECT_VERSION}" echo "# Initializing distribution and artifacts directory..." if [[ -d "./${BUILD_DIR}" ]]; then rm -rf "./${BUILD_DIR}" fi if [[ -d "./${ARTIFACTS_DIR}" ]]; then rm -rf "./${ARTIFACTS_DIR}" fi mkdir -p "./${BUILD_DIR}" mkdir -p "./${ARTIFACTS_DIR}" local TARGET_DIR="${BUILD_DIR}" local TARGET_LIB_DIR="${TARGET_DIR}/lib" local DISTRIBUTION_NAME="${PROJECT_NAME}.zip" echo "# Creating distribution ..." if [[ -d "${TARGET_DIR}" ]]; then rm -rf "./${TARGET_DIR}" fi echo "# Copying libraries ..." mkdir -p "${TARGET_LIB_DIR}" cp "./target/${PROJECT_NAME}-${MAVEN_PROJECT_VERSION}.jar" "${TARGET_LIB_DIR}/server.jar" local RUNTIME_SCRIPTS_DIR="./src/main/container/deploy/scripts" if [[ -d "${RUNTIME_SCRIPTS_DIR}" ]]; then echo "# Configuring runtime scripts ..." cp -a "${RUNTIME_SCRIPTS_DIR}" "${TARGET_DIR}" chmod -R +x "./${TARGET_DIR}/scripts" fi echo "# Creating distribution archive" cd "./${BUILD_DIR}" zip -dgqr -X "../${ARTIFACTS_DIR}/${DISTRIBUTION_NAME}" * cd "${DIR}" echo "# Distribution created successfully: ${DISTRIBUTION_NAME}" export DISTRIBUTION_NAME } function docker-build { docker-make local IMAGE_NAME=${IMAGE_NAME} local DOCKER_REPO=${DOCKER_REPO} local DOCKER_LOGIN=${DOCKER_LOGIN} local VERSION_OVERRIDE=false local PROJECT_VERSION=${MAVEN_PROJECT_VERSION_NEW} if [[ "$#" -gt 0 ]] && [[ -n "$1" ]]; then PROJECT_VERSION=$(get-three-digit-version-number $1) VERSION_OVERRIDE=true fi local MULTI_PLATFORM="SINGLE" if [[ "$#" -gt 1 ]] && [[ -n "$2" ]]; then MULTI_PLATFORM=$2 fi echo "# Docker login" eval "command ${DOCKER_LOGIN}" if [[ "${MULTI_PLATFORM}" = "MULTI" ]]; then echo "多平台镜像构建..." # 多平台构建镜像 echo "${IMAGE_NAME}:${PROJECT_VERSION}" command docker buildx build -t="${IMAGE_NAME}:${PROJECT_VERSION}-amd64" -f Dockerfile --platform=linux/amd64 -o type=docker . command docker buildx build -t="${IMAGE_NAME}:${PROJECT_VERSION}-arm64" -f Dockerfile --platform=linux/arm64 -o type=docker . # 给镜像打标签 command docker tag "${IMAGE_NAME}:${PROJECT_VERSION}-amd64" "${DOCKER_REPO}:${PROJECT_VERSION}-amd64" command docker tag "${IMAGE_NAME}:${PROJECT_VERSION}-arm64" "${DOCKER_REPO}:${PROJECT_VERSION}-arm64" else # 单平台构建镜像 echo "${IMAGE_NAME}:${PROJECT_VERSION}" command docker build -t="${IMAGE_NAME}:${PROJECT_VERSION}" . # 给镜像打标签 command docker tag "${IMAGE_NAME}:${PROJECT_VERSION}" "${DOCKER_REPO}:${PROJECT_VERSION}" if [[ "${VERSION_OVERRIDE}" = false ]]; then command docker tag "${IMAGE_NAME}:${PROJECT_VERSION}" "${DOCKER_REPO}:latest" fi fi echo "# Docker Built, Repo: ${DOCKER_REPO}, Version: ${PROJECT_VERSION}" } function docker-release { local DOCKER_REPO=${DOCKER_REPO} local VERSION_OVERRIDE=false local PROJECT_VERSION=${MAVEN_PROJECT_VERSION_NEW} if [[ "$#" -gt 0 ]] && [[ -n "$1" ]]; then PROJECT_VERSION=$(get-three-digit-version-number $1) VERSION_OVERRIDE=true fi local MULTI_PLATFORM="SINGLE" if [[ "$#" -gt 1 ]] && [[ -n "$2" ]]; then MULTI_PLATFORM=$2 fi local LOCAL_IMAGE_EXISTS=$(command docker images | grep "${DOCKER_REPO}.*${PROJECT_VERSION}") if [[ -z "${LOCAL_IMAGE_EXISTS}" ]]; then error "Docker image is not available locally. You may want to build it using > ${PROG} docker build [version_override]" fi if [[ "${MULTI_PLATFORM}" = "MULTI" ]]; then echo "多平台镜像推送..." command docker push "${DOCKER_REPO}:${PROJECT_VERSION}-amd64" command docker push "${DOCKER_REPO}:${PROJECT_VERSION}-arm64" command docker manifest create "${DOCKER_REPO}:${PROJECT_VERSION}" "${DOCKER_REPO}:${PROJECT_VERSION}-amd64" "${DOCKER_REPO}:${PROJECT_VERSION}-arm64" command docker manifest inspect "${DOCKER_REPO}:${PROJECT_VERSION}" command docker manifest push "${DOCKER_REPO}:${PROJECT_VERSION}" else command docker push "${DOCKER_REPO}:${PROJECT_VERSION}" if [[ "${VERSION_OVERRIDE}" = false ]]; then command docker push "${DOCKER_REPO}:latest" fi fi echo "# Docker Released, Repo: ${DOCKER_REPO}, Version: ${PROJECT_VERSION}" } function helm-chart { local module="helm-chart" local AWS_DEFAULT_REGION="ap-southeast-1" local AWS_PROFILE="prd" local CHART_ARCHIVE_DIR="${DIR}/artifacts/helm" local CHART_BUILD_DIR="${DIR}/dist/helm" local CHART_OUTPUT_DIR="${DIR}/dist/generate" case $# in 0) usage-help "${module}";; *) get-maven-project-version; case $1 in build) shift; helm-chart-build "$@";; publish) shift; helm-chart-publish "$@";; delete) shift; helm-chart-delete "$@";; *) echo "Unknown arguments: $*"; usage-help "${module}";; esac ;; esac } function helm-chart-build { local module="${module}" local ENVIRONMENT="local" local REGION="master" local PROJECT_VERSION="${MAVEN_PROJECT_VERSION_NEW}" case $# in 0) ;; 1) PROJECT_VERSION="$1";; 2) ENVIRONMENT="$1"; REGION="$2";; 3) ENVIRONMENT="$1"; REGION="$2"; PROJECT_VERSION="$3";; *) usage-help "${module}";; esac case ${ENVIRONMENT} in local|dev|dev2|pet|uat|uat2|staging|prd) ;; *) error "Unrecognized Environment: ${ENVIRONMENT}"; usage-help "${module}";; esac case ${REGION} in master|us-east-1|eu-west-1|ap-southeast-1) ;; *) error "Unrecognized Region: ${REGION}"; usage-help "${module}";; esac echo "# Environment: ${ENVIRONMENT}, Region: ${REGION}, Version: ${PROJECT_VERSION}" local CHART_ARCHIVE_DIR=${CHART_ARCHIVE_DIR} local CHART_BUILD_DIR=${CHART_BUILD_DIR} local CHART_OUTPUT_DIR=${CHART_OUTPUT_DIR} get-microservice-k8s-values local MICROSERVICE_K8S_VALUES=${MICROSERVICE_K8S_VALUES} echo "# Initializing Helm-Chart distribution and artifacts directory..." if [[ -d "${CHART_ARCHIVE_DIR}" ]]; then rm -rf "${CHART_ARCHIVE_DIR}" fi if [[ -d "${CHART_OUTPUT_DIR}" ]]; then rm -rf "${CHART_OUTPUT_DIR}" fi if [[ -d "${CHART_BUILD_DIR}" ]]; then rm -rf "${CHART_BUILD_DIR}" fi mkdir -p "${CHART_ARCHIVE_DIR}" mkdir -p "${CHART_BUILD_DIR}" mkdir -p "${CHART_OUTPUT_DIR}" echo "# Updating Helm-Chart Version to ${PROJECT_VERSION}" cp -a "${DIR}/helm/." "${CHART_BUILD_DIR}" sed -i "s/\${version}/${PROJECT_VERSION}/g" "${CHART_BUILD_DIR}/${PROJECT_NAME}/values.yaml" sed -i "s/\${version}/${PROJECT_VERSION}/g" "${CHART_BUILD_DIR}/${PROJECT_NAME}/Chart.yaml" if [[ -d "${MICROSERVICE_K8S_VALUES}" ]]; then echo "# Rendering ${ENVIRONMENT} configs to values.yaml..." RENDER_FILE_ARG="" if [[ -d "${MICROSERVICE_K8S_VALUES}/global" ]]; then RENDER_FILE_ARG+="--from-file=${MICROSERVICE_K8S_VALUES}/global " fi if [[ -d "${MICROSERVICE_K8S_VALUES}/${ENVIRONMENT}/common" ]]; then RENDER_FILE_ARG+="--from-file=${MICROSERVICE_K8S_VALUES}/${ENVIRONMENT}/common " fi if [[ -d "${MICROSERVICE_K8S_VALUES}/${ENVIRONMENT}/${REGION}/config" ]]; then RENDER_FILE_ARG+="--from-file=${MICROSERVICE_K8S_VALUES}/${ENVIRONMENT}/${REGION}/config " fi kubectl create configmap "${PROJECT_NAME}-config" \ ${RENDER_FILE_ARG} \ --dry-run -o=yaml \ | yq read - data \ | yq prefix - configMap.data \ > "${CHART_BUILD_DIR}/config-map-data.yaml" yq merge -i -x "${CHART_BUILD_DIR}/${PROJECT_NAME}/values.yaml" "${CHART_BUILD_DIR}/config-map-data.yaml" if [[ -f "${MICROSERVICE_K8S_VALUES}/${ENVIRONMENT}/${REGION}/values.yaml" ]]; then yq merge -i -x "${CHART_BUILD_DIR}/${PROJECT_NAME}/values.yaml" "${MICROSERVICE_K8S_VALUES}/${ENVIRONMENT}/${REGION}/values.yaml" fi else echo "# Container configs do not exist. Skip rendering..." fi echo "# Packaging Helm-Chart ${PROJECT_NAME} ..." helm package "${CHART_BUILD_DIR}/${PROJECT_NAME}" -d "${CHART_ARCHIVE_DIR}" --version "${PROJECT_VERSION}" helm template "${CHART_BUILD_DIR}/${PROJECT_NAME}" --output-dir "${CHART_OUTPUT_DIR}" } function helm-chart-publish { local CHART_ARCHIVE_DIR=${CHART_ARCHIVE_DIR} local AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION} local AWS_PROFILE=${AWS_PROFILE} local NBUCLOUD_REPO=$(helm repo list | grep 'prd-tplink-nbu.*s3://prd-tplinknbu-helm-charts-repository-aps1/charts') echo ${NBUCLOUD_REPO} if [[ -z ${NBUCLOUD_REPO} ]]; then echo "Could not publish chart. 'prd-tplink-nbu' helm repository not found." exit 0 else echo "Found chart repository: ${NBUCLOUD_REPO}" fi helm-chart-build "$@" local LATEST=$(ls -t "${CHART_ARCHIVE_DIR}" | awk '{printf("%s",$0);exit}') echo "# Publishing package ${LATEST} to Chart Repository: prd-tplink-nbu" AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION} AWS_PROFILE=${AWS_PROFILE} helm s3 push "${CHART_ARCHIVE_DIR}/${LATEST}" prd-tplink-nbu echo "# Chart Published." } function helm-chart-delete { local AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION} local AWS_PROFILE=${AWS_PROFILE} local CHART_VERSION=${MAVEN_PROJECT_VERSION_NEW} if [[ "$#" -gt 0 ]] && [[ -n "$1" ]]; then CHART_VERSION=$1 fi echo "# Deleting Chart ${CHART_VERSION} from repository ..." AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION} AWS_PROFILE=${AWS_PROFILE} helm s3 delete "${PROJECT_NAME}" --version "${CHART_VERSION}" prd-tplink-nbu echo "# Chart Deleted." } function deploy { case $# in 2|3) get-maven-project-version;; *) usage-help;; esac local ENVIRONMENT=$1 if [[ -z "${ENVIRONMENT}" ]]; then echo "[environment] is required" exit 0 fi local REGION=$2 if [[ -z "${REGION}" ]]; then echo "[region] is required" exit 0 fi local PROJECT_VERSION=${MAVEN_PROJECT_VERSION_NEW} if [[ "$#" -gt 2 ]] && [[ -n "$3" ]]; then PROJECT_VERSION=$3 fi local KUBECONTEXT="" local EXPECTED_KUBECONTEXT="${ENVIRONMENT}.${REGION}" if [[ "${ENVIRONMENT}" = "dev2" ]]; then EXPECTED_KUBECONTEXT="dev.${REGION}"; fi KUBECONTEXT=$(kubectx -c) if [[ "${KUBECONTEXT}" != "${EXPECTED_KUBECONTEXT}" ]]; then echo "Current KubeContext does not match expected Environment and Region. Expected: ${EXPECTED_KUBECONTEXT}, Current: ${KUBECONTEXT}" exit 0 fi if [[ "${ENVIRONMENT}" = "dev" ]] || [[ "${ENVIRONMENT}" = "dev2" ]] && [[ "${PROJECT_VERSION}" != *-SNAPSHOT ]]; then echo "In DEV test, expected Project Version ends with -SNAPSHOT" exit 0 fi echo "# Server Build" mvn -T 64 clean install -Pcloud-based-build -DskipTests=true -e if [[ "${ENVIRONMENT}" = "dev" ]] || [[ "${ENVIRONMENT}" = "dev2" ]] && [[ "${PROJECT_VERSION}" = *-SNAPSHOT ]]; then docker-dev-test build "${PROJECT_VERSION}" docker-dev-test release "${PROJECT_VERSION}" helm-chart build "${ENVIRONMENT}" "${REGION}" "${PROJECT_VERSION}" local DIR=$(pwd) local NEW_RELEASE_NAME="${PROJECT_NAME}-${PROJECT_VERSION,,}" local DEV_NAMESPACE=default if [[ "${ENVIRONMENT}" = "dev2" ]]; then DEV_NAMESPACE=dev2-omada-common-data-manager; fi local NAMESPACE=$(yq read ${MICROSERVICE_K8S_VALUES}/${ENVIRONMENT}/${REGION}/values.yaml app.namespace) local PREVIOUS_DEPLOYMENT_NAME=$(kubectl get deployment -n ${NAMESPACE} | grep "${PROJECT_NAME}" | cut -d " " -f 1) local PREVIOUS_RELEASE_NAME=$(kubectl get deployment ${PREVIOUS_DEPLOYMENT_NAME} -o yaml -n ${NAMESPACE} | yq read - 'metadata.annotations."meta.helm.sh/release-name"') helm upgrade --install "${NEW_RELEASE_NAME}" "${DIR}/artifacts/helm/${PROJECT_NAME}-${PROJECT_VERSION}.tgz" --reset-values --namespace ${NAMESPACE} \ --set image.repository="242777933053.dkr.ecr.ap-southeast-1.amazonaws.com/smb/${PROJECT_NAME}" else docker build "${PROJECT_VERSION}" docker release "${PROJECT_VERSION}" helm-chart build "${ENVIRONMENT}" "${REGION}" "${PROJECT_VERSION}" local DIR=$(pwd) helm upgrade --install "${PROJECT_NAME}" "${DIR}/artifacts/helm/${PROJECT_NAME}-${PROJECT_VERSION}.tgz" --reset-values fi if [[ -f "${MICROSERVICE_K8S_VALUES}/${ENVIRONMENT}/${REGION}/networking/service.yaml" ]]; then kubectl apply -f "${MICROSERVICE_K8S_VALUES}/${ENVIRONMENT}/${REGION}/networking/service.yaml" else echo "[service.yaml] is required" exit 0 fi if [[ -f "${MICROSERVICE_K8S_VALUES}/${ENVIRONMENT}/${REGION}/networking/istio.yaml" ]]; then kubectl apply -f "${MICROSERVICE_K8S_VALUES}/${ENVIRONMENT}/${REGION}/networking/istio.yaml" else echo "[istio.yaml] is required" exit 0 fi if [[ ! -n "${PREVIOUS_RELEASE_NAME}" ]]; then echo "# No release deployed previously in the namespace" elif [[ "${PREVIOUS_RELEASE_NAME}" != "${NEW_RELEASE_NAME}" ]]; then # Wait until the new Deployment is ready by checking the MinimumReplicasAvailable condition. local READY=$(kubectl get deployment ${NEW_RELEASE_NAME} -o yaml -n ${NAMESPACE} | yq read - 'status.conditions.(reason==MinimumReplicasAvailable).status') while [[ "$READY" != "True" ]]; do READY=$(kubectl get deployment ${NEW_RELEASE_NAME} -o yaml -n ${NAMESPACE} | yq read - 'status.conditions.(reason==MinimumReplicasAvailable).status') sleep 10 done helm uninstall "${PREVIOUS_RELEASE_NAME}" --namespace ${NAMESPACE} echo "# Uninstall previous release: ${PREVIOUS_RELEASE_NAME} successfully" exit 0 fi } case $# in 0) usage-help;; 1) case $1 in build) server-build;; docker | helm-chart | deploy) usage-help "$1";; -h | --help) echo -e "${USAGE}"; exit 0;; *) usage-help;; esac ;; *) case $1 in deploy) shift; deploy "$@";; docker) shift; docker "$@";; helm-chart) shift; helm-chart "$@";; get-version) shift; get-three-digit-version-number "$@";; *) echo "Unknown arguments: $*"; usage-help;; esac ;; esac 这个文件,我执行bash ./server.sh docker build ${SERVER_VERSION} ${MultiPlatform} 的过程是怎么样的
最新发布
10-25
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值