Просмотр исходного кода

build(dashboard): get dashboard script support enterprise

zhanghongtong 4 лет назад
Родитель
Сommit
059d9fcaeb
3 измененных файлов с 31 добавлено и 11 удалено
  1. 1 0
      .gitignore
  2. 2 1
      deploy/docker/Dockerfile
  3. 28 10
      scripts/get-dashboard.sh

+ 1 - 0
.gitignore

@@ -44,3 +44,4 @@ elvis
 emqx_dialyzer_*_plt
 */emqx_dashboard/priv/www
 dist.zip
+scripts/git-token

+ 2 - 1
deploy/docker/Dockerfile

@@ -18,7 +18,8 @@ RUN apk add --no-cache \
     bsd-compat-headers \
     libc-dev \
     libstdc++ \
-    bash
+    bash \
+    jq
 
 COPY . /emqx
 

+ 28 - 10
scripts/get-dashboard.sh

@@ -5,18 +5,17 @@ set -euo pipefail
 # ensure dir
 cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")/.."
 
-if [[ "$1" == https://* ]]; then
-    VERSION='*' # alwyas download
-    DOWNLOAD_URL="$1"
-else
-    VERSION="$1"
-    DOWNLOAD_URL="https://github.com/emqx/emqx-dashboard-frontend/releases/download/${VERSION}/emqx-dashboard.zip"
-fi
+VERSION="$1"
+RELEASE_ASSET_FILE="emqx-dashboard.zip"
 
 if [ -f 'EMQX_ENTERPRISE' ]; then
     DASHBOARD_PATH='lib-ee/emqx_dashboard/priv'
+    DASHBOARD_REPO='emqx-enterprise-dashboard-frontend-src'
+    AUTH="Authorization: token $(cat scripts/git-token)"
 else
     DASHBOARD_PATH='lib-ce/emqx_dashboard/priv'
+    DASHBOARD_REPO='emqx-dashboard-frontend'
+    AUTH=""
 fi
 
 case $(uname) in
@@ -32,8 +31,27 @@ if [ -d "$DASHBOARD_PATH/www" ] && [ "$(version)" = "$VERSION" ]; then
     exit 0
 fi
 
-curl -f -L "${DOWNLOAD_URL}" -o ./emqx-dashboard.zip
-unzip -q ./emqx-dashboard.zip -d "$DASHBOARD_PATH"
+get_assets(){
+    # Get the download URL of our desired asset
+    download_url="$(curl --silent --show-error \
+        --header "${AUTH}" \
+        --header "Accept: application/vnd.github.v3+json" \
+        "https://api.github.com/repos/emqx/${DASHBOARD_REPO}/releases/tags/${VERSION}" \
+        | jq --raw-output ".assets[] | select(.name==\"${RELEASE_ASSET_FILE}\").url")"
+    # Get GitHub's S3 redirect URL
+    redirect_url=$(curl --silent --show-error \
+        --header "${AUTH}" \
+        --header "Accept: application/octet-stream" \
+        --write-out "%{redirect_url}" \
+        "$download_url")
+    curl --silent --show-error \
+         --header "Accept: application/octet-stream" \
+         --output "${RELEASE_ASSET_FILE}" \
+         "$redirect_url"
+}
+
+get_assets
+unzip -q "$RELEASE_ASSET_FILE" -d "$DASHBOARD_PATH"
 rm -rf "$DASHBOARD_PATH/www"
 mv "$DASHBOARD_PATH/dist" "$DASHBOARD_PATH/www"
-rm -rf emqx-dashboard.zip
+rm -rf "$RELEASE_ASSET_FILE"