From ff1cedce6373841d50345e536be2243217a44824 Mon Sep 17 00:00:00 2001 From: sd0 Date: Tue, 20 May 2025 08:03:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=20cloudbuild.yaml?= =?UTF-8?q?=EF=BC=8C=E5=B0=87=E6=A9=9F=E5=99=A8=E9=A1=9E=E5=9E=8B=E5=BE=9E?= =?UTF-8?q?=20E2=5FHIGHCPU=5F8=20=E8=AA=BF=E6=95=B4=E7=82=BA=20E2=5FSTANDA?= =?UTF-8?q?RD=5F8=EF=BC=8C=E4=BB=A5=E6=8F=90=E5=8D=87=E8=B3=87=E6=BA=90?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=9A=84=E9=9D=88=E6=B4=BB=E6=80=A7=E8=88=87?= =?UTF-8?q?=E7=A9=A9=E5=AE=9A=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat: 更新 cloudbuild.yaml,移除機器類型設置並刪除不再使用的 cloudbuild-test.yaml 文件,以簡化配置和提升維護性。 feat: 在 GCP 部署配置中新增區域設置,將部署地區指定為 asia-east1,以提升資源的地理適應性。 --- .github/workflows/gcp-deploy-unified.yml | 1 + cloudbuild.yaml | 1 - test-build/cloudbuild-test.yaml | 99 ------------------------ 3 files changed, 1 insertion(+), 100 deletions(-) delete mode 100644 test-build/cloudbuild-test.yaml diff --git a/.github/workflows/gcp-deploy-unified.yml b/.github/workflows/gcp-deploy-unified.yml index ee9b20c..93b9a5d 100644 --- a/.github/workflows/gcp-deploy-unified.yml +++ b/.github/workflows/gcp-deploy-unified.yml @@ -111,6 +111,7 @@ jobs: gcloud builds submit \ --project=${{ env.PROJECT_ID }} \ --config=cloudbuild.yaml \ + --region=asia-east1 \ --substitutions="_IMAGE_PATH=$FULL_IMAGE_PATH,_ENV=$_ENV,_MAX_INSTANCES=$_MAX_INSTANCES,_REGION=$REGION,_GIT_SHA=${{ github.sha }}" # --- 顯示部署 URL ----------------------------------------------------- diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 8db2fc4..3f70b9b 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -7,7 +7,6 @@ substitutions: _GIT_SHA: 'latest' # 預設值,GitHub Action 會覆寫 timeout: '1200s' options: - machineType: 'E2_HIGHCPU_8' # 免費額度同享 logging: 'CLOUD_LOGGING_ONLY' steps: # --- 1) Build multi-arch image ------------------------------------------ diff --git a/test-build/cloudbuild-test.yaml b/test-build/cloudbuild-test.yaml deleted file mode 100644 index 52faa80..0000000 --- a/test-build/cloudbuild-test.yaml +++ /dev/null @@ -1,99 +0,0 @@ -# cloudbuild.yaml ── Build → Deploy -substitutions: - _IMAGE_PATH: '${_REGION}-docker.pkg.dev/$PROJECT_ID/one-key-balance-kit/api' - _ENV: 'staging' # GitHub Action 會覆寫 - _MAX_INSTANCES: '1' - _REGION: 'asia-east1' # 預設值,GitHub Action 會覆寫 -timeout: '1200s' -options: - machineType: 'E2_HIGHCPU_8' # 免費額度同享 -steps: - # --- 1) Build multi-arch image ------------------------------------------ - - id: build-image - name: gcr.io/cloud-builders/docker - entrypoint: bash - args: - - -ceu - - | - docker run --privileged --rm tonistiigi/binfmt --install all - docker buildx create --use - - # 確保 SHORT_SHA 有值,防止空標籤 (在 Bash 中處理) - BUILD_SHA="${SHORT_SHA:-latest}" - - # 使用條件語句決定後綴 (避免 Cloud Build 解析變數) - if [ "${_ENV}" = "production" ]; then - suffix="" - else - suffix="-dev" - fi - - # 組合映像路徑 (注意使用雙引號避免被 Cloud Build 解析) - img_path="${_REGION}-docker.pkg.dev/$PROJECT_ID/one-key-balance-kit/api" - tag_base="$img_path$suffix" - - echo "構建映像: $tag_base:$BUILD_SHA" - - docker buildx build \ - --platform linux/amd64,linux/arm64 \ - -t "$tag_base:$BUILD_SHA" \ - -t "$tag_base:${_ENV}" \ - -t "$tag_base:latest" \ - --build-arg NODE_ENV=$([ "${_ENV}" = "production" ] && echo production || echo development) \ - --push . - - # --- 2) 產生 manifest & 部署 ------------------------------------------- - - id: deploy - name: gcr.io/google.com/cloudsdktool/cloud-sdk - entrypoint: bash - args: - - -ceu - - | - # 確保 SHORT_SHA 有值 (在 Bash 中處理) - BUILD_SHA="${SHORT_SHA:-latest}" - - # 使用條件語句決定後綴 (避免 Cloud Build 解析變數) - if [ "${_ENV}" = "production" ]; then - suffix="" - else - suffix="-dev" - fi - - # 避免使用可能被 Cloud Build 誤解的變數名稱 - export ENV_SUFFIX=$([ "${_ENV}" = "production" ] && echo "" || echo "-dev") - export ENVIRONMENT="${_ENV}" - export MAX_INSTANCES="${_MAX_INSTANCES}" - export REGION="${_REGION}" - export PROJECT_ID="$PROJECT_ID" - # 注意: 避免使用 APP_SUFFIX 變數名稱,使用 suffix 代替 - export IMAGE_TAG="$BUILD_SHA" - export NODE_ENV=$([ "${_ENV}" = "production" ] && echo "production" || echo "development") - export LOG_LEVEL=$([ "${_ENV}" = "production" ] && echo "" || echo "debug") - export API_BASE_URL=$([ "${_ENV}" = "production" ] && echo "https://api-onekeybalance.sd0.tech" || echo "https://staging-api-onekeybalance.sd0.tech") - export CORS_ORIGIN=$([ "${_ENV}" = "production" ] && echo "https://onekeybalance.sd0.tech" || echo '"*"') - export WEBHOOK_URL=$([ "${_ENV}" = "production" ] && echo "https://api-onekeybalance.sd0.tech/v1/api/webhook" || echo "https://staging-api-onekeybalance.sd0.tech/v1/api/webhook") - export SECRET_PREFIX=$([ "${_ENV}" = "production" ] && echo "production" || echo "staging") - - # 構建映像路徑 - img_path="${_REGION}-docker.pkg.dev/$PROJECT_ID/one-key-balance-kit/api" - tag_base="$img_path$suffix" - export IMAGE_PATH="$tag_base" - - # 顯示將用於部署的映像 - echo "部署使用的映像: $IMAGE_PATH:$BUILD_SHA" - - cat cloud-run-service.template.yaml | envsubst > cloud-run-service.generated.yaml - - # 檢查生成的 manifest - echo "生成 manifest 完成,檢查映像路徑:" - grep -A 2 "containers:" cloud-run-service.generated.yaml - - # 部署至 Cloud Run - gcloud run services replace cloud-run-service.generated.yaml \ - --region=${_REGION} --project=$PROJECT_ID - -# Cloud Build 圖像定義 - 不在此處使用 Bash 預設值 -images: - - '${_IMAGE_PATH}:${SHORT_SHA}' - - '${_IMAGE_PATH}:${_ENV}' - - '${_IMAGE_PATH}:latest'