This is an automated email from the ASF dual-hosted git repository.
jin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hugegraph-toolchain.git
The following commit(s) were added to refs/heads/master by this push:
new 39e46922 chore(loader): improve the perf in loader-ci (#724)
39e46922 is described below
commit 39e46922b719e7183eda4d95847d812b680c6cf7
Author: lokidundun <[email protected]>
AuthorDate: Wed Apr 15 14:18:24 2026 +0800
chore(loader): improve the perf in loader-ci (#724)
---
.github/workflows/loader-ci.yml | 21 ++++++++-
hugegraph-loader/assembly/travis/install-hadoop.sh | 55 +++++++++++++++++-----
.../travis/install-hugegraph-from-source.sh | 29 ++++++++----
hugegraph-loader/assembly/travis/install-mysql.sh | 18 +++++--
.../hugegraph/loader/source/jdbc/JDBCVendor.java | 5 ++
.../hugegraph/loader/test/functional/DBUtil.java | 4 +-
6 files changed, 107 insertions(+), 25 deletions(-)
diff --git a/.github/workflows/loader-ci.yml b/.github/workflows/loader-ci.yml
index b3e62b2f..d992117b 100644
--- a/.github/workflows/loader-ci.yml
+++ b/.github/workflows/loader-ci.yml
@@ -35,6 +35,14 @@ jobs:
strategy:
matrix:
JAVA_VERSION: ['11']
+ services:
+ mysql:
+ image: mysql:8.0
+ env:
+ MYSQL_ROOT_PASSWORD: root
+ ports:
+ - 3306:3306
+ options: --health-cmd="mysqladmin ping" --health-interval=10s
--health-timeout=5s --health-retries=3
steps:
- name: Fetch Code
@@ -55,6 +63,18 @@ jobs:
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
+ - name: Cache Hadoop
+ uses: actions/cache@v4
+ with:
+ path: ~/hadoop-3.3.6.tar.gz
+ key: ${{ runner.os }}-hadoop-3.3.6
+
+ - name: Cache HugeGraph Server
+ uses: actions/cache@v4
+ with:
+ path: ~/hugegraph-cache-${{ env.COMMIT_ID }}
+ key: ${{ runner.os }}-hugegraph-server-${{ env.COMMIT_ID }}
+
- name: use staged maven repo settings
if: ${{ env.USE_STAGE == 'true' }}
run: |
@@ -68,7 +88,6 @@ jobs:
- name: Prepare env and service
run: |
$TRAVIS_DIR/install-hadoop.sh
- $TRAVIS_DIR/install-mysql.sh ${{ env.DB_DATABASE }} ${{ env.DB_PASS
}}
$TRAVIS_DIR/install-hugegraph-from-source.sh $COMMIT_ID
- name: Run test
diff --git a/hugegraph-loader/assembly/travis/install-hadoop.sh
b/hugegraph-loader/assembly/travis/install-hadoop.sh
index cae279ae..e439411c 100755
--- a/hugegraph-loader/assembly/travis/install-hadoop.sh
+++ b/hugegraph-loader/assembly/travis/install-hadoop.sh
@@ -17,22 +17,52 @@
#
set -ev
-sudo wget
https://archive.apache.org/dist/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
+# Upgrade stable version to 3.3.6
+HADOOP_VERSION="3.3.6"
+HADOOP_TARBALL="hadoop-${HADOOP_VERSION}.tar.gz"
+HADOOP_HOME="/usr/local/hadoop"
+HADOOP_TARBALL_PATH="${HOME}/${HADOOP_TARBALL}"
-sudo tar -zxf hadoop-2.8.5.tar.gz -C /usr/local
-cd /usr/local
-sudo mv hadoop-2.8.5 hadoop
-#sudo chown -R travis ./hadoop
-cd hadoop
+if [[ ! -d "${HADOOP_HOME}" ]]; then
+ if [[ ! -f "${HADOOP_TARBALL_PATH}" ]]; then
+ echo "Downloading Hadoop ${HADOOP_VERSION}..."
+ wget -O "${HADOOP_TARBALL_PATH}"
"https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/${HADOOP_TARBALL}"
+ else
+ echo "Using cached Hadoop tarball at ${HADOOP_TARBALL_PATH}"
+ fi
+ echo "Extracting Hadoop to ${HADOOP_HOME}..."
+ sudo tar -zxf "${HADOOP_TARBALL_PATH}" -C /usr/local
+ cd /usr/local
+ sudo mv "hadoop-${HADOOP_VERSION}" hadoop
+ sudo chown -R "$(whoami):$(whoami)" "${HADOOP_HOME}"
+else
+ echo "Hadoop already installed at ${HADOOP_HOME}, skipping download and
extraction."
+fi
+
+cd "${HADOOP_HOME}"
pwd
-echo "export HADOOP_HOME=/usr/local/hadoop" >> ~/.bashrc
-echo "export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native" >> ~/.bashrc
-echo "export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin" >> ~/.bashrc
+# Export for GitHub Actions subsequent steps
+if [[ -n "${GITHUB_ENV:-}" ]]; then
+ echo "HADOOP_HOME=${HADOOP_HOME}" >> "${GITHUB_ENV}"
+ echo "HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native" >>
"${GITHUB_ENV}"
+ echo "PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin" >>
"${GITHUB_ENV}"
+fi
+
+if ! grep -qxF "export HADOOP_HOME=${HADOOP_HOME}" ~/.bashrc; then
+ echo "export HADOOP_HOME=${HADOOP_HOME}" >> ~/.bashrc
+fi
+if ! grep -qxF "export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native"
~/.bashrc; then
+ echo "export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native" >>
~/.bashrc
+fi
+if ! grep -qxF "export PATH=\$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin"
~/.bashrc; then
+ echo "export PATH=\$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin" >>
~/.bashrc
+fi
source ~/.bashrc
-tee etc/hadoop/core-site.xml <<EOF
+if [[ ! -f etc/hadoop/core-site.xml ]] || ! grep -q "hdfs://localhost:8020"
etc/hadoop/core-site.xml; then
+ sudo tee etc/hadoop/core-site.xml > /dev/null <<EOF
<configuration>
<property>
<name>fs.defaultFS</name>
@@ -40,8 +70,10 @@ tee etc/hadoop/core-site.xml <<EOF
</property>
</configuration>
EOF
+fi
-tee etc/hadoop/hdfs-site.xml <<EOF
+if [[ ! -f etc/hadoop/hdfs-site.xml ]] || ! grep -q "/opt/hdfs/name"
etc/hadoop/hdfs-site.xml; then
+ sudo tee etc/hadoop/hdfs-site.xml > /dev/null <<EOF
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
@@ -61,6 +93,7 @@ tee etc/hadoop/hdfs-site.xml <<EOF
</property>
</configuration>
EOF
+fi
bin/hdfs namenode -format
sbin/hadoop-daemon.sh start namenode
diff --git a/hugegraph-loader/assembly/travis/install-hugegraph-from-source.sh
b/hugegraph-loader/assembly/travis/install-hugegraph-from-source.sh
index 354acd95..8884c126 100755
--- a/hugegraph-loader/assembly/travis/install-hugegraph-from-source.sh
+++ b/hugegraph-loader/assembly/travis/install-hugegraph-from-source.sh
@@ -23,15 +23,28 @@ fi
COMMIT_ID=$1
HUGEGRAPH_GIT_URL="https://github.com/apache/hugegraph.git"
+CACHE_DIR="${HOME}/hugegraph-cache-${COMMIT_ID}"
+
+mkdir -p "${CACHE_DIR}"
+
+CACHED_TARBALL=$(find "${CACHE_DIR}" -maxdepth 1 -name
"apache-hugegraph-*.tar.gz" -print -quit)
+
+if [[ -f "${CACHED_TARBALL}" ]]; then
+ echo "Found cached HugeGraph server tarball, skipping build."
+ cp "${CACHED_TARBALL}" ./
+else
+ echo "Building HugeGraph server from source (commit ${COMMIT_ID})..."
+ git clone --depth 150 ${HUGEGRAPH_GIT_URL} hugegraph
+ cd hugegraph
+ git checkout "${COMMIT_ID}"
+ mvn package -DskipTests -Dmaven.javadoc.skip=true -ntp
+ cd hugegraph-server
+ mv apache-hugegraph-*.tar.gz ../../
+ cd ../../
+ rm -rf hugegraph
+ cp apache-hugegraph-*.tar.gz "${CACHE_DIR}"/
+fi
-git clone --depth 150 ${HUGEGRAPH_GIT_URL} hugegraph
-cd hugegraph
-git checkout "${COMMIT_ID}"
-mvn package -DskipTests -Dmaven.javadoc.skip=true -ntp
-cd hugegraph-server
-mv apache-hugegraph-*.tar.gz ../../
-cd ../../
-rm -rf hugegraph
tar zxf apache-hugegraph-*.tar.gz
HTTPS_SERVER_DIR="hugegraph_https"
diff --git a/hugegraph-loader/assembly/travis/install-mysql.sh
b/hugegraph-loader/assembly/travis/install-mysql.sh
index de1aef2f..779fb2f0 100755
--- a/hugegraph-loader/assembly/travis/install-mysql.sh
+++ b/hugegraph-loader/assembly/travis/install-mysql.sh
@@ -15,6 +15,10 @@
# License for the specific language governing permissions and limitations
# under the License.
#
+# NOTE: This script is NO LONGER actively used in CI.
+# It has been replaced by the MySQL service container in:
+# .github/workflows/loader-ci.yml
+# Kept temporarily as a backup / for legacy Travis compatibility only.
set -ev
TRAVIS_DIR=$(dirname $0)
@@ -23,12 +27,20 @@ TRAVIS_DIR=$(dirname $0)
CONF=hugegraph-test/src/main/resources/hugegraph.properties
MYSQL_USERNAME=root
-# Set MySQL configurations
+DB_NAME="${1:-mysql}"
+DB_PASS="${2:-root}"
+
+# Skip if MySQL is already running (e.g., provided by GitHub Actions service)
+if (echo >/dev/tcp/localhost/3306) >/dev/null 2>&1; then
+ echo "MySQL is already reachable on port 3306, skipping setup."
+ exit 0
+fi
+# Set MySQL configurations
# Keep for upgrade in future
-docker pull mysql:5.7
-docker run -p 3306:3306 --name "$1" -e MYSQL_ROOT_PASSWORD="$2" -d mysql:5.7
+docker pull mysql:8.0
+docker run -p 3306:3306 --name "${DB_NAME}" -e
MYSQL_ROOT_PASSWORD="${DB_PASS}" -d mysql:8.0
# Old Version
diff --git
a/hugegraph-loader/src/main/java/org/apache/hugegraph/loader/source/jdbc/JDBCVendor.java
b/hugegraph-loader/src/main/java/org/apache/hugegraph/loader/source/jdbc/JDBCVendor.java
index dc5833b6..a9a84eed 100644
---
a/hugegraph-loader/src/main/java/org/apache/hugegraph/loader/source/jdbc/JDBCVendor.java
+++
b/hugegraph-loader/src/main/java/org/apache/hugegraph/loader/source/jdbc/JDBCVendor.java
@@ -53,6 +53,11 @@ public enum JDBCVendor {
return super.checkSchema(source);
}
+ @Override
+ public String buildUrl(JDBCSource source) {
+ return super.buildUrl(source) + "&allowPublicKeyRetrieval=true";
+ }
+
@Override
public String buildGetHeaderSql(JDBCSource source) {
return String.format("SELECT COLUMN_NAME " +
diff --git
a/hugegraph-loader/src/test/java/org/apache/hugegraph/loader/test/functional/DBUtil.java
b/hugegraph-loader/src/test/java/org/apache/hugegraph/loader/test/functional/DBUtil.java
index 49b41db7..67fa0d54 100644
---
a/hugegraph-loader/src/test/java/org/apache/hugegraph/loader/test/functional/DBUtil.java
+++
b/hugegraph-loader/src/test/java/org/apache/hugegraph/loader/test/functional/DBUtil.java
@@ -43,7 +43,7 @@ public class DBUtil {
public void connect(boolean useSSL) {
try {
Class.forName(this.driver);
- String url = String.format("%s?useSSL=%s", this.url, useSSL);
+ String url =
String.format("%s?useSSL=%s&allowPublicKeyRetrieval=true", this.url, useSSL);
this.conn = DriverManager.getConnection(url, this.user, this.pass);
} catch (ClassNotFoundException e) {
throw new LoadException("Invalid driver class '%s'", e,
this.driver);
@@ -54,7 +54,7 @@ public class DBUtil {
public void connect(String database, boolean useSSL) {
this.close();
- String url = String.format("%s/%s?useSSL=%s", this.url, database,
useSSL);
+ String url =
String.format("%s/%s?useSSL=%s&allowPublicKeyRetrieval=true", this.url,
database, useSSL);
try {
Class.forName(this.driver);
this.conn = DriverManager.getConnection(url, this.user, this.pass);