This is an automated email from the ASF dual-hosted git repository.
yiconghuang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/texera.git
The following commit(s) were added to refs/heads/main by this push:
new da679689c4 chore(ci): add CI with new names (#3941)
da679689c4 is described below
commit da679689c4571dd61986c7e6a4f5da8d83114530
Author: Yicong Huang <[email protected]>
AuthorDate: Sat Oct 18 18:49:16 2025 -0700
chore(ci): add CI with new names (#3941)
### What changes were proposed in this PR?
This PR adds the following CI with new names:
- `core` -> `scala`, currently contains all scala tests for multiple
packages/services, we could do more separation and renaming later.
- `gui` -> `frontend`, that is consistent to our repo directory rename.
- `python_udf` -> `python`, to simplify and re-purpose, because it
contains tests for entire python engine (although a main part is to
support UDF).
Note that we will remove the old CIs in another PR.
### Any related issues, documentation, discussions?
work related to #3939
### How was this PR tested?
Manually tested with #3937.
### Was this PR authored or co-authored using generative AI tooling?
No.
---
.asf.yaml | 16 ++--
.github/workflows/github-action-build.yml | 126 ++++++++++++++++++++++++++++++
2 files changed, 134 insertions(+), 8 deletions(-)
diff --git a/.asf.yaml b/.asf.yaml
index 9e3d404f8a..21abc706b5 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -67,14 +67,14 @@ github:
strict: true
# contexts are the names of checks that must pass
contexts:
- - gui (ubuntu-latest, 18)
- - gui (windows-latest, 18)
- - gui (macos-latest, 18)
- - core (ubuntu-22.04, 11)
- - python_udf (ubuntu-latest, 3.9)
- - python_udf (ubuntu-latest, 3.10)
- - python_udf (ubuntu-latest, 3.11)
- - python_udf (ubuntu-latest, 3.12)
+ - frontend (ubuntu-latest, 18)
+ - frontend (windows-latest, 18)
+ - frontend (macos-latest, 18)
+ - scala (ubuntu-22.04, 11)
+ - python (ubuntu-latest, 3.9)
+ - python (ubuntu-latest, 3.10)
+ - python (ubuntu-latest, 3.11)
+ - python (ubuntu-latest, 3.12)
- Check License Headers
- Validate PR title
required_pull_request_reviews:
diff --git a/.github/workflows/github-action-build.yml
b/.github/workflows/github-action-build.yml
index e5f95ff235..518aeddc61 100644
--- a/.github/workflows/github-action-build.yml
+++ b/.github/workflows/github-action-build.yml
@@ -30,6 +30,132 @@ concurrency:
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
+ frontend:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [ubuntu-latest, windows-latest, macos-latest]
+ include:
+ - os: macos-latest
+ arch: arm64
+ - os: ubuntu-latest
+ arch: x64
+ - os: windows-latest
+ arch: x64
+ node-version:
+ - 18
+ steps:
+ - name: Checkout Texera
+ uses: actions/checkout@v5
+ - name: Setup node
+ uses: actions/setup-node@v5
+ with:
+ node-version: ${{ matrix.node-version }}
+ architecture: ${{ matrix.arch }}
+ - uses: actions/cache@v4
+ with:
+ path: |
+ frontend/node_modules
+ key: ${{ runner.os }}-${{ matrix.arch }}-${{ matrix.node-version
}}-yarn-cache-v1-${{ hashFiles('**/yarn.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-${{ matrix.arch }}-${{ matrix.node-version
}}-yarn-cache-v1-
+ - name: Prepare Yarn 4.5.1
+ run: corepack enable && corepack prepare [email protected] --activate && yarn
--cwd frontend set version 4.5.1
+ - name: Install dependency
+ run: yarn --cwd frontend install --immutable --network-timeout=100000
+ - name: Lint with Prettier & ESLint
+ run: yarn --cwd frontend format:ci
+ - name: Run frontend unit tests
+ run: yarn --cwd frontend run test:ci
+ - name: Prod build
+ run: yarn --cwd frontend run build:ci
+
+ scala:
+ strategy:
+ matrix:
+ os: [ ubuntu-22.04 ]
+ java-version: [ 11 ]
+ runs-on: ${{ matrix.os }}
+ env:
+ JAVA_OPTS: -Xms2048M -Xmx2048M -Xss6M -XX:ReservedCodeCacheSize=256M
-Dfile.encoding=UTF-8
+ JVM_OPTS: -Xms2048M -Xmx2048M -Xss6M -XX:ReservedCodeCacheSize=256M
-Dfile.encoding=UTF-8
+
+ services:
+ postgres:
+ image: postgres
+ env:
+ POSTGRES_PASSWORD: postgres
+ ports:
+ - 5432:5432
+ # Add a health check so steps wait until Postgres is ready
+ options: >-
+ --health-cmd="pg_isready -U postgres"
+ --health-interval=10s
+ --health-timeout=5s
+ --health-retries=5
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+ - name: Setup JDK
+ uses: actions/setup-java@v5
+ with:
+ distribution: 'temurin'
+ java-version: 11
+ - name: Setup sbt launcher
+ uses: sbt/setup-sbt@v1
+ - uses: coursier/cache-action@v6
+ with:
+ extraSbtFiles: '["*.sbt", "project/**.{scala,sbt}",
"project/build.properties" ]'
+ - name: Lint with scalafmt
+ run: sbt scalafmtCheckAll
+ - name: Create Databases
+ run: |
+ psql -h localhost -U postgres -f sql/texera_ddl.sql
+ psql -h localhost -U postgres -f sql/iceberg_postgres_catalog.sql
+ psql -h localhost -U postgres -f sql/texera_lakefs.sql
+ env:
+ PGPASSWORD: postgres
+ - name: Create texera_db_for_test_cases
+ run: psql -h localhost -U postgres -v DB_NAME=texera_db_for_test_cases
-f sql/texera_ddl.sql
+ env:
+ PGPASSWORD: postgres
+ - name: Compile with sbt
+ run: sbt clean package
+ - name: Run backend tests
+ run: sbt test
+
+ python:
+ strategy:
+ matrix:
+ os: [ ubuntu-latest ]
+ python-version: [ '3.9', '3.10', '3.11', '3.12' ]
+ runs-on: ${{ matrix.os }}
+ steps:
+ - name: Checkout Texera
+ uses: actions/checkout@v5
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v6
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ if [ -f amber/requirements.txt ]; then pip install -r
amber/requirements.txt; fi
+ if [ -f amber/operator-requirements.txt ]; then pip install -r
amber/operator-requirements.txt; fi
+ - name: Install PostgreSQL
+ run: sudo apt-get update && sudo apt-get install -y postgresql
+ - name: Start PostgreSQL Service
+ run: sudo systemctl start postgresql
+ - name: Create Database and User
+ run: |
+ cd sql && sudo -u postgres psql -f iceberg_postgres_catalog.sql
+ - name: Lint with flake8 and black
+ run: |
+ cd amber/src/main/python && flake8 && black . --check
+ - name: Test with pytest
+ run: |
+ cd amber/src/main/python && pytest -sv
--ignore=core/models/test_RTableExecutor.py
+
gui:
runs-on: ${{ matrix.os }}
strategy: