This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-website.git


The following commit(s) were added to refs/heads/master by this push:
     new ee299565224 Add quick-start script for Windows (#690)
ee299565224 is described below

commit ee29956522493f42a19ac04cf5ff7abe90bfa1a3
Author: Superskyyy <supersk...@outlook.com>
AuthorDate: Mon Mar 18 08:30:25 2024 -0400

    Add quick-start script for Windows (#690)
---
 content/quickstart-docker.ps1 | 154 ++++++++++++++++++++++++++++++++++++++++++
 content/quickstart-docker.sh  |   8 ++-
 2 files changed, 159 insertions(+), 3 deletions(-)

diff --git a/content/quickstart-docker.ps1 b/content/quickstart-docker.ps1
new file mode 100644
index 00000000000..89ad3e1f4db
--- /dev/null
+++ b/content/quickstart-docker.ps1
@@ -0,0 +1,154 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Default values for SkyWalking versions
+$SW_VERSION = "9.7.0"
+$SW_BANYANDB_VERSION = "0.5.0"
+
+$COMPOSE_FILE_PATH = ".\docker-compose.yml"
+$env:BANYANDB_IMAGE = "apache/skywalking-banyandb:$SW_BANYANDB_VERSION"
+$env:OAP_IMAGE = "apache/skywalking-oap-server:$SW_VERSION"
+$env:UI_IMAGE = "apache/skywalking-ui:$SW_VERSION"
+
+# Unset the SW_STORAGE environment variable at the start of the script
+Remove-Item Env:\SW_STORAGE -ErrorAction Ignore
+
+# Ensuring script stops on error
+$ErrorActionPreference = "Stop"
+
+$storageOptionProvided = $false
+$foregroundOptionProvided = $false
+# Function to display usage information
+function Show-Usage {
+    Write-Host "Usage: quickstart-docker.ps1 [-h/--help] [-f] [--storage 
<storage_option>]"
+    Write-Host "Options:"
+    Write-Host "  -h/--help           About running the quickstart script 
without interaction"
+    Write-Host "  -f                  Run in foreground mode (docker compose 
up)"
+    Write-Host "  --storage <option>  Set the storage option (elasticsearch or 
banyandb)"
+    exit
+}
+
+# Process command-line arguments
+for ($i = 0; $i -lt $args.Length; $i++) {
+    switch ($args[$i]) {
+        "-h" { Show-Usage; exit }
+        "--help" { Show-Usage; exit }
+        "-f" { $DETACHED = $false; $foregroundOptionProvided = $true; }
+        "--storage" {
+            if ($i -lt $args.Length - 1) {
+                $env:SW_STORAGE = $args[++$i]
+                $storageOptionProvided = $true
+                # Validate storage option if provided
+                if ($storageOptionProvided -and -not ($env:SW_STORAGE -eq 
"elasticsearch" -or $env:SW_STORAGE -eq "banyandb")) {
+                    Write-Host "Invalid storage option: $env:SW_STORAGE. Valid 
options are 'elasticsearch' or 'banyandb'."
+                    exit 1
+                }
+            }
+            else {
+                Write-Host "Error: --storage option requires an argument."
+                exit 1
+            }
+        }
+        default {
+            Write-Host "Invalid option: $($args[$i]), try -h or --help"
+            exit 1
+        }
+    }
+}
+
+
+if (-not (Get-Command "docker" -ErrorAction SilentlyContinue)) {
+    Write-Host "Docker is not found. Please make sure Docker is installed and 
the docker command is available in PATH.`n"
+    exit 1
+}
+Write-Host "Docker is installed, continue...`n"
+
+# In place download, prompt user before overriding
+if (Test-Path -Path $COMPOSE_FILE_PATH) { 
+    Write-Host "A docker-compose.yml already exists in the current 
directory.`n"
+    $reuseFlag = Read-Host "Would you like to override the existing manifest 
(default: False)? [Y/n]: "
+    $DOWNLOAD = $false
+    if ($reuseFlag -eq 'y' -or $reuseFlag -eq 'Y') {
+        $DOWNLOAD = $true
+    }
+}
+
+if ($DOWNLOAD) {
+    Invoke-WebRequest -Uri 
"https://github.com/apache/skywalking/raw/master/docker/docker-compose.yml"; 
-OutFile $COMPOSE_FILE_PATH
+    Write-Host "`nDownloaded SkyWalking Docker Compose manifest to the current 
directory...`n"
+}
+else {
+    Write-Host "`nAttempting to reuse the existing SkyWalking Docker Compose 
manifest from the current directory.`n"
+}
+
+# If SW_STORAGE is not set, prompt the user to select a storage option
+if (-not $storageOptionProvided) {
+    Write-Host "Please select a storage option:"
+    Write-Host "1. Elasticsearch"
+    Write-Host "2. BanyanDB ($SW_BANYANDB_VERSION)"
+    $storage_option = Read-Host "Enter the number of your choice"
+    
+    # Validate and process the input
+    if ($storage_option -eq "1") {
+        $env:SW_STORAGE = "elasticsearch"
+        Write-Host "You have selected: Elasticsearch as the storage option.`n"
+    }
+    elseif ($storage_option -eq "2") {
+        $env:SW_STORAGE = "banyandb"
+        Write-Host "You have selected: BanyanDB as the storage option.`n"
+    }
+    else {
+        Write-Host "Invalid choice. Please enter 1 or 2.`n"
+        exit 1
+    }
+}
+
+if (-not $foregroundOptionProvided) {
+    $detachedFlag = Read-Host "Do you want to run Docker in detached mode 
(default: True)? [Y/n]: "
+
+    $DETACHED = $true
+    if ($detachedFlag -eq 'n' -or $detachedFlag -eq 'N') {
+        $DETACHED = $false
+    }
+}
+
+# Concatenate detached flag here
+$composeCommand = "docker compose -f $COMPOSE_FILE_PATH 
--project-name=skywalking-quickstart --profile=$env:SW_STORAGE up"
+
+# Note the leading blank " --"
+if ($DETACHED) {
+    $composeCommand += " --detach --wait" # --wait implies implicit detached 
mode, just to be safe provide both
+}
+
+# Attempt to start Docker compose
+Write-Host "Starting to set up SkyWalking ($SW_VERSION) with $env:SW_STORAGE 
storage, this might take a while...`n"
+
+Invoke-Expression $composeCommand
+
+# Check if the command was successful, try catch won't work here
+if ($LASTEXITCODE -ne 0) {
+    Write-Host "`nFailed to start SkyWalking. Please check the Docker compose 
logs for more information.`n"
+    exit $LASTEXITCODE
+}
+else {
+    Write-Host "`nSkyWalking is now running. You can send telemetry data to 
localhost:11800 and access the UI at http://localhost:8080.`n";
+    if ($env:SW_STORAGE -eq "banyandb") {
+        Write-Host "You can access BanyanDB web UI at 
http://localhost:17913.`n";
+    }
+    Write-Host "To find SkyWalking Docs, follow the link to our documentation 
site https://skywalking.apache.org/docs/.`n";
+
+    Write-Host "To stop SkyWalking, run 'docker compose 
--project-name=skywalking-quickstart down'.`n"
+}
diff --git a/content/quickstart-docker.sh b/content/quickstart-docker.sh
index e2c6cf6aeb8..0cbc19f0d2d 100644
--- a/content/quickstart-docker.sh
+++ b/content/quickstart-docker.sh
@@ -47,7 +47,7 @@ done
 
 echo "Checking if Docker is installed..."
 if ! [ -x "$(command -v docker)" ]; then
-  echo "Docker is not installed. Please install Docker and try again."
+  echo "Docker is not found. Please make sure Docker is installed and the 
docker command is available in PATH."
   exit 1
 fi
 
@@ -59,7 +59,7 @@ curl -fsSL 
https://github.com/apache/skywalking/raw/master/docker/docker-compose
 if [ -z "$SW_STORAGE" ]; then
   echo "Please select a storage option:"
   echo "1. Elasticsearch"
-  echo "2. BanyanDB"
+  echo "2. BanyanDB ($SW_BANYANDB_VERSION)"
   read -p "Enter the number of your choice: " storage_option
 fi
 
@@ -89,8 +89,10 @@ docker compose -f "$temp_dir/docker-compose.yml" \
   --detach=${DETACHED:-true} \
   --wait
 
-echo "SkyWalking is now running. You can send telemetry data at 
localhost:11800 and access the UI at http://localhost:8080.";
+echo "SkyWalking is now running. You can send telemetry data to 
localhost:11800 and access the UI at http://localhost:8080.";
 if [ "$SW_STORAGE" = "banyandb" ]; then
   echo "You can access BanyanDB web UI at http://localhost:17913.";
 fi
+echo "To find SkyWalking Docs, follow the link to our documentation site 
https://skywalking.apache.org/docs/.";
+
 echo "To stop SkyWalking, run 'docker compose 
--project-name=skywalking-quickstart down'."

Reply via email to