This is an automated email from the ASF dual-hosted git repository.
chanholee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/master by this push:
new 25ec6ed966 [ZEPPELIN-6353] Migrate Windows build CI from AppVeyor to
GitHub Actions
25ec6ed966 is described below
commit 25ec6ed966db56ea04d995d16b77fb553665dd26
Author: ChanHo Lee <[email protected]>
AuthorDate: Thu Oct 2 19:34:17 2025 +0900
[ZEPPELIN-6353] Migrate Windows build CI from AppVeyor to GitHub Actions
### What is this PR for?
#### Background
- Windows build/test currently runs on AppVeyor.
#### Problem
- AppVeyor jobs are hard for individual contributors to reproduce and debug.
- Hard to debug failing Windows build test.
- Maintaining a separate CI provider increases overhead.
#### Proposal
- Port the Windows build/test job to GitHub Actions with feature parity.
#### Benefits
- Single CI platform, easier contributor workflows, simpler maintenance.
#### Definition of Done
All Windows checks run on GitHub Actions and pass consistently.
AppVeyor is removed from required checks and configuration.
### What type of PR is it?
CI
### Todos
- [x] Add a Windows workflow on GitHub Actions (build).
- [x] Ensure caching/artifacts.
- [ ] Disable AppVeyor from repository settings after GA workflow is green
and stable.
### What is the Jira issue?
[[ZEPPELIN-6353]](https://issues.apache.org/jira/browse/ZEPPELIN-6353)
### How should this be tested?
- Check `windows-build` job in `core`
### Questions:
* Does the license files need to update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? No
Closes #5091 from tbonelee/migrate-windows-build.
Signed-off-by: Chan Lee <[email protected]>
---
.appveyor.yml | 49 ------------
.github/workflows/core.yml | 32 ++++++++
zeppelin-web-angular/package-lock.json | 142 +++++++++++++++++++++++++++++++++
zeppelin-web-angular/package.json | 5 +-
4 files changed, 177 insertions(+), 51 deletions(-)
diff --git a/.appveyor.yml b/.appveyor.yml
deleted file mode 100644
index 1ef145a226..0000000000
--- a/.appveyor.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# 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.
-#
-
-version: '0.12.0.{build}'
-
-shallow_clone: true
-
-branches:
- except:
- - /dependabot/
-
-platform:
- - x64
-
-build: Script
-
-os:
- - Visual Studio 2019
-
-environment:
- APPVEYOR_SAVE_CACHE_ON_ERROR: True
-
-cache:
- - '%USERPROFILE%/.m2'
-
-build_script:
- - cmd: set JAVA_HOME=C:\Program Files\Java\jdk11
- - cmd: >-
- ./mvnw.cmd clean package -DskipTests ^
-
-Dorg.slf4j.simpleLogger.log.org.apache.maven.plugins.shade.mojo.ShadeMojo=warn
^
-
-Dorg.slf4j.simpleLogger.log.com.googlecode.download.maven.plugin.internal.WGet=warn
^
-
-Dorg.slf4j.simpleLogger.log.org.apache.maven.plugins.dependency.fromDependencies.CopyDependenciesMojo=warn
^
- --no-transfer-progress
diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml
index 8d4ae1e3cb..55a84f9b1e 100644
--- a/.github/workflows/core.yml
+++ b/.github/workflows/core.yml
@@ -482,3 +482,35 @@ jobs:
${{ runner.os }}-zeppelin-
- name: build without any profiles
run: ./mvnw clean verify -DskipTests ${MAVEN_ARGS}
+
+ windows-build:
+ runs-on: windows-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ java: [ 11 ]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Set up JDK ${{ matrix.java }}
+ uses: actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: ${{ matrix.java }}
+ - name: Cache local Maven repository
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~\.m2\repository
+ !~\.m2\repository\org\apache\zeppelin\
+ key: ${{ runner.os }}-zeppelin-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-zeppelin-
+ - name: Build on Windows
+ run: |
+ .\mvnw.cmd clean package -DskipTests ^
+
-Dorg.slf4j.simpleLogger.log.org.apache.maven.plugins.shade.mojo.ShadeMojo=warn
^
+
-Dorg.slf4j.simpleLogger.log.com.googlecode.download.maven.plugin.internal.WGet=warn
^
+
-Dorg.slf4j.simpleLogger.log.org.apache.maven.plugins.dependency.fromDependencies.CopyDependenciesMojo=warn
^
+ --no-transfer-progress
+ shell: cmd
diff --git a/zeppelin-web-angular/package-lock.json
b/zeppelin-web-angular/package-lock.json
index ed0a2b4a9b..e0aef784f7 100644
--- a/zeppelin-web-angular/package-lock.json
+++ b/zeppelin-web-angular/package-lock.json
@@ -59,6 +59,7 @@
"@types/parse5": "^5.0.2",
"@types/webpack-env": "^1.18.8",
"codelyzer": "^5.0.0",
+ "cross-env": "^10.1.0",
"dotenv": "^8.0.0",
"https-proxy-agent": "^2.2.1",
"husky": "9.1.7",
@@ -1953,6 +1954,12 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@epic-web/invariant": {
+ "version": "1.0.0",
+ "resolved":
"https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz",
+ "integrity":
"sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==",
+ "dev": true
+ },
"node_modules/@gar/promisify": {
"version": "1.1.3",
"dev": true,
@@ -4964,6 +4971,82 @@
"sha.js": "^2.4.8"
}
},
+ "node_modules/cross-env": {
+ "version": "10.1.0",
+ "resolved":
"https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz",
+ "integrity":
"sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==",
+ "dev": true,
+ "dependencies": {
+ "@epic-web/invariant": "^1.0.0",
+ "cross-spawn": "^7.0.6"
+ },
+ "bin": {
+ "cross-env": "dist/bin/cross-env.js",
+ "cross-env-shell": "dist/bin/cross-env-shell.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/cross-env/node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved":
"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity":
"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cross-env/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity":
"sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cross-env/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved":
"https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity":
"sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cross-env/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity":
"sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cross-env/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity":
"sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/cross-spawn": {
"version": "6.0.6",
"dev": true,
@@ -20615,6 +20698,12 @@
"@babel/helper-validator-identifier": "^7.27.1"
}
},
+ "@epic-web/invariant": {
+ "version": "1.0.0",
+ "resolved":
"https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz",
+ "integrity":
"sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==",
+ "dev": true
+ },
"@gar/promisify": {
"version": "1.1.3",
"dev": true
@@ -22671,6 +22760,59 @@
"sha.js": "^2.4.8"
}
},
+ "cross-env": {
+ "version": "10.1.0",
+ "resolved":
"https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz",
+ "integrity":
"sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==",
+ "dev": true,
+ "requires": {
+ "@epic-web/invariant": "^1.0.0",
+ "cross-spawn": "^7.0.6"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "7.0.6",
+ "resolved":
"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity":
"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved":
"https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity":
"sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved":
"https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity":
"sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved":
"https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity":
"sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity":
"sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
"cross-spawn": {
"version": "6.0.6",
"dev": true,
diff --git a/zeppelin-web-angular/package.json
b/zeppelin-web-angular/package.json
index ebb5e9d84e..eef8b768ee 100644
--- a/zeppelin-web-angular/package.json
+++ b/zeppelin-web-angular/package.json
@@ -5,8 +5,8 @@
"prepare": "cd .. && husky",
"postinstall": "npm run build:projects && npm run build:tslint-rules",
"ng": "./node_modules/.bin/ng",
- "start": "NODE_OPTIONS='--openssl-legacy-provider' ng serve --proxy-config
proxy.conf.js --extra-webpack-config webpack.partial.js",
- "build": "NODE_OPTIONS='--openssl-legacy-provider' ng build --prod
--extra-webpack-config webpack.partial.js",
+ "start": "cross-env NODE_OPTIONS=--openssl-legacy-provider ng serve
--proxy-config proxy.conf.js --extra-webpack-config webpack.partial.js",
+ "build": "cross-env NODE_OPTIONS=--openssl-legacy-provider ng build --prod
--extra-webpack-config webpack.partial.js",
"build:tslint-rules": "tsc -p tslint-rules/tsconfig.json",
"build:projects": "npm run build-project:sdk && npm run build-project:vis
&& npm run build-project:helium",
"build-helium-vis-example": " ng build --project helium-vis-example",
@@ -79,6 +79,7 @@
"@types/parse5": "^5.0.2",
"@types/webpack-env": "^1.18.8",
"codelyzer": "^5.0.0",
+ "cross-env": "^10.1.0",
"dotenv": "^8.0.0",
"https-proxy-agent": "^2.2.1",
"husky": "9.1.7",