Skip to content

Test single file should work for test classes which names do not match the corresponding file names. #11664

Test single file should work for test classes which names do not match the corresponding file names.

Test single file should work for test classes which names do not match the corresponding file names. #11664

Workflow file for this run

# 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.
name: NetBeans
on:
push:
branches:
- 'master'
- 'delivery'
- 'release*'
pull_request:
# unlocked event is used as super secret restart button
types: [opened, synchronize, unlocked]
# Allows you to run this workflow manually from the Actions tab in GitHub UI
# keep in mind this will have ALL tests enabled
workflow_dispatch:
# cancel other PR workflow run in the same head-base group if it exists (e.g. during PR syncs)
# if this is not a PR run (no github.head_ref and github.base_ref defined), use an UID as group
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.base_ref }}
cancel-in-progress: true
defaults:
run:
shell: bash
env:
# note to self: don't remove the minus again
OPTS: >-
-Dtest-unit-sys-prop.ignore.random.failures=true
# what to build and test, see nbbuild/cluster.properties
CLUSTER_CONFIG: 'full'
# default java distribution used by the setup-java action
# see https://github.com/actions/setup-java#supported-distributions
DEFAULT_JAVA_DISTRIBUTION: 'zulu'
# labels are mapped to env vars for pipeline customization. If this is not a PR, (almost) everything will run, but with a reduced matrix.
# note: env vars don't work in the job's 'if' field but do work within jobs ( https://github.com/actions/runner/issues/1189 ), the whole expression must be duplicated
# labels for special commands:
# 'ci:all-tests' enables everything
# 'ci:no-build' disables the build job (and test jobs too)
# 'ci:dev-build' produces an artifact containing a runnable NetBeans zip distribution
# 'Java' label
test_java: ${{ contains(github.event.pull_request.labels.*.name, 'Java') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'JavaFX' label
test_javafx: ${{ contains(github.event.pull_request.labels.*.name, 'JavaFX') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'JavaDoc' or 'API Change' labels
test_javadoc: ${{ contains(github.event.pull_request.labels.*.name, 'JavaDoc') || contains(github.event.pull_request.labels.*.name, 'API Change') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'JavaScript' label
test_javascript: ${{ contains(github.event.pull_request.labels.*.name, 'JavaScript') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'PHP' label
test_php: ${{ contains(github.event.pull_request.labels.*.name, 'PHP') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'Groovy' label
test_groovy: ${{ contains(github.event.pull_request.labels.*.name, 'Groovy') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'Rust' label
test_rust: ${{ contains(github.event.pull_request.labels.*.name, 'Rust') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'Platform' label
test_platform: ${{ contains(github.event.pull_request.labels.*.name, 'Platform') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'LSP' label for enabling Language Server Protocol tests
# 'Gradle' or 'Maven' will activate lsp tests too due to test dependencies on project API (ProjectViewTest, LspBrokenReferencesImplTest, ...)
test_lsp: ${{ contains(github.event.pull_request.labels.*.name, 'LSP') || contains(github.event.pull_request.labels.*.name, 'Gradle') || contains(github.event.pull_request.labels.*.name, 'Maven') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'GraalVM' label for tests requirering GraalVM
test_graalvm: ${{ contains(github.event.pull_request.labels.*.name, 'GraalVM') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'VSCode Extension' label for building and testing the VSCode Extension
test_vscode_extension: ${{ contains(github.event.pull_request.labels.*.name, 'VSCode Extension') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'Ant', 'Gradle', 'Maven' and 'MX' labels trigger the build-tools job
test_build_tools: ${{ contains(github.event.pull_request.labels.*.name, 'Ant') || contains(github.event.pull_request.labels.*.name, 'Gradle') || contains(github.event.pull_request.labels.*.name, 'Maven') || contains(github.event.pull_request.labels.*.name, 'MX') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'git', 'subversion' and 'mercurial' labels trigger the versioning job
test_versioning: ${{ contains(github.event.pull_request.labels.*.name, 'git') || contains(github.event.pull_request.labels.*.name, 'subversion') || contains(github.event.pull_request.labels.*.name, 'mercurial') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'Java EE/Jakarta EE', 'Micronaut' and 'enterprise' labels trigger the enterprise job
test_enterprise: ${{ contains(github.event.pull_request.labels.*.name, 'Java EE/Jakarta EE') || contains(github.event.pull_request.labels.*.name, 'Micronaut') || contains(github.event.pull_request.labels.*.name, 'enterprise') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'JavaScript', 'TypeScript', 'HTML', 'CSS', 'CSL' and 'web' labels the trigger web job
test_web: ${{ contains(github.event.pull_request.labels.*.name, 'JavaScript') || contains(github.event.pull_request.labels.*.name, 'TypeScript') || contains(github.event.pull_request.labels.*.name, 'HTML') || contains(github.event.pull_request.labels.*.name, 'CSS') || contains(github.event.pull_request.labels.*.name, 'CSL') || contains(github.event.pull_request.labels.*.name, 'web') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
# 'tests' label activates an extra step which builds all tests
test_tests: ${{ contains(github.event.pull_request.labels.*.name, 'tests') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
jobs:
# primary build job, most other jobs use the artifact produced here
# artifact is only produced once in the matrix
base-build:
name: Build Clusters on JDK ${{ matrix.java }}
if: contains(github.event.pull_request.labels.*.name, 'ci:no-build') == false
runs-on: ubuntu-latest
timeout-minutes: 40
strategy:
matrix:
java: [ '17', '21', '24-ea' ]
exclude:
- java: ${{ github.event_name == 'pull_request' && 'nothing' || '21' }}
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Checkout ${{ github.ref }} ( ${{ github.sha }} )
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: false
show-progress: false
- name: Caching dependencies
uses: actions/cache@v4
with:
path: ~/.hgexternalcache
key: ${{ runner.os }}-${{ hashFiles('*/external/binaries-list', '*/*/external/binaries-list') }}
restore-keys: ${{ runner.os }}-
- name: Build NetBeans
run: ant $OPTS -quiet -Dcluster.config=$CLUSTER_CONFIG build-nozip
- name: Prepare Artifact
if: ${{ matrix.java == '17' }}
run: tar -I 'zstd -9 -T0' -cf /tmp/build.tar.zst --exclude ".git" .
- name: Upload Workspace
if: ${{ (matrix.java == '17') && success() }}
uses: actions/upload-artifact@v4
with:
name: build
path: /tmp/build.tar.zst
compression-level: 0
retention-days: 2
if-no-files-found: error
- name: Create Dev Build
if: ${{ matrix.java == '17' && contains(github.event.pull_request.labels.*.name, 'ci:dev-build') && success() }}
run: ant $OPTS -quiet -Dcluster.config=$CLUSTER_CONFIG zip-cluster-config
- name: Upload Dev Build
if: ${{ matrix.java == '17' && contains(github.event.pull_request.labels.*.name, 'ci:dev-build') && success() }}
uses: actions/upload-artifact@v4
with:
name: dev-build_${{github.event.pull_request.number || github.run_id}}
path: nbbuild/NetBeans-*.zip
compression-level: 0
retention-days: 7
if-no-files-found: error
nb-javac-smokecheck:
name: "NetBeans on nb-javac"
# Run test job only when the 'nb-javac' label is added
if: ${{ contains(github.event.pull_request.labels.*.name, 'nb-javac') }}
runs-on: ubuntu-latest
steps:
- name: Checkout ${{ github.ref }} ( ${{ github.sha }} )
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: false
show-progress: false
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
java-version: 17
- name: Caching dependencies
uses: actions/cache/restore@v4
with:
path: ~/.hgexternalcache
key: ${{ runner.os }}-${{ hashFiles('*/external/binaries-list', '*/*/external/binaries-list') }}
restore-keys: ${{ runner.os }}-
- name: Download External Binaries
run: ant $OPTS download-all-extbins
- name: Build NetBeans with nb-javac
run: ant $OPTS build -Dnbjavac.class.path=java/libs.javacapi/external/*.jar
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Test with Commit Validation
run: ant $OPTS commit-validation -Dnbjavac.class.path=java/libs.javacapi/external/*.jar
# secondary jobs
commit-validation:
name: CV on ${{ matrix.os }}/JDK ${{ matrix.java }}
needs: base-build
runs-on: ${{ matrix.os }}
timeout-minutes: 40
strategy:
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
java: [ 17 ]
include:
- os: ubuntu-latest
java: 23
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
if: contains(matrix.os, 'ubuntu') && success()
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
# tar on MacOS is not aware of zstd "tar --zstd -xf build.tar.zst" doesn't work
- name: Extract on MacOS
if: contains(matrix.os, 'macos') && success()
run: unzstd -c build.tar.zst | tar -x
- name: Extract on Linux/Windows
if: contains(matrix.os, 'macos') == false && success()
run: tar --zstd -xf build.tar.zst
- name: platform/masterfs
run: .github/retry.sh ant $OPTS -f platform/masterfs test
- name: Commit Validation tests
run: .github/retry.sh ant $OPTS -Dcluster.config=$CLUSTER_CONFIG commit-validation
- name: platform/core.network
run: ant $OPTS -f platform/core.network test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: |
./*/*/build/test/*/results/TEST-*.xml
./nbbuild/build/test/commit-validation/results/TEST-*.xml
# commit related checks - some steps run even when the build is dissabled
paperwork:
name: Check Paperwork on Linux/JDK ${{ matrix.java }}
needs: base-build
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
timeout-minutes: 60
env:
ANT_OPTS: -Dmetabuild.jsonurl=https://raw.githubusercontent.com/apache/netbeans-jenkins-lib/master/meta/netbeansrelease.json
strategy:
matrix:
java: [ '17' ]
steps:
- name: Check PR labels
if: ${{ github.event_name == 'pull_request' && join(github.event.pull_request.labels.*.name) == '' }}
run: |
echo "::error::PRs must be labeled, see: https://cwiki.apache.org/confluence/display/NETBEANS/PRs+and+You+-+A+reviewer+Guide"
exit 1
- name: Checkout ${{ github.ref }} ( ${{ github.sha }} )
if: ${{ !cancelled() }}
uses: actions/checkout@v4
with:
persist-credentials: false
submodules: false
show-progress: false
- name: Set up JDK 23 for scripts
if: ${{ github.event_name == 'pull_request' && !cancelled() }}
uses: actions/setup-java@v4
with:
java-version: 23
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Check Commit Headers
if: ${{ github.event_name == 'pull_request' && !cancelled() }}
run: java --enable-preview .github/scripts/CommitHeaderChecker.java ${{ github.server_url }}/${{ github.repository }}/pull/${{ github.event.pull_request.number }}
- name: Set up JDK ${{ matrix.java }}
if: ${{ !cancelled() }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Check line endings and verify RAT report
if: ${{ !cancelled() }}
run: |
nbbuild/travis/check-line-endings.sh
ant $OPTS -quiet build-source-config
mkdir scratch && cd scratch
unzip -qq ../nbbuild/build/release-src*
ant $OPTS -quiet rat -Drat-report.haltonfailure=true
- name: Clean Workspace
if: ${{ !cancelled() }}
run: cd ..; rm -Rf netbeans; mkdir netbeans
- name: Download Build
if: ${{ needs.base-build.result == 'success' && !cancelled() }}
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
if: ${{ needs.base-build.result == 'success' && !cancelled() }}
run: tar --zstd -xf build.tar.zst
- name: Verify libs and licenses
if: ${{ needs.base-build.result == 'success' && !cancelled() }}
run: ant $OPTS verify-libs-and-licenses -Dverify-libs-and-licenses.haltonfailure=true
- name: Run check-sigtests-release
if: ${{ needs.base-build.result == 'success' && !cancelled() }}
run: ant $OPTS -quiet check-sigtests-release -Dfail.on.error=true
- name: Run gen-sigtests-release
if: ${{ needs.base-build.result == 'success' && !cancelled() }}
run: ant $OPTS -quiet gen-sigtests-release
build-system-test:
name: Build-System / Misc Tests on Linux/JDK ${{ matrix.java }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 100
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: Test Netbeans Build System
run: ant $OPTS -Dcluster.config=$CLUSTER_CONFIG localtest
- name: harness/o.n.insane
run: ant $OPTS -f harness/o.n.insane test
- name: harness/apisupport.harness
run: ant $OPTS -f harness/apisupport.harness test
- name: harness/harness/nbjunit
run: ant $OPTS -f harness/nbjunit test
- name: harness/jellytools.platform
run: ant $OPTS -f harness/jellytools.platform test -Dtest.config=stable
- name: ergonomics/ide.ergonomics
run: ant $OPTS -f ergonomics/ide.ergonomics test -Dtest.config=commit
- name: nb/deadlock.detector
run: ant $OPTS -f nb/deadlock.detector test
- name: nb/ide.branding
run: ant $OPTS -f nb/ide.branding test
- name: nb/o.n.upgrader
run: ant $OPTS -f nb/o.n.upgrader test
# - name: nb/updatecenters
# run: ant $OPTS -f nb/updatecenters test
# 5-6 min
- name: Build nbms
run: ant $OPTS build-nbms
# runs only in PRs if requested; ~18 min
- name: Build all Tests
if: env.test_tests == 'true' && github.event_name == 'pull_request' && success()
run: ant -quiet -Dcluster.config=$CLUSTER_CONFIG test -Dtest.includes=NoTestsJustBuild
# 13-14 min for javadoc; JDK version must be synced with nb-javac
- name: Set up JDK 24-ea for javadoc
if: env.test_javadoc == 'true' && success()
uses: actions/setup-java@v4
with:
java-version: 24-ea
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Build javadoc
if: env.test_javadoc == 'true' && success()
run: ant $OPTS build-javadoc
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
build-from-src-zip:
name: Build ${{ matrix.config }} from src.zip on JDK ${{ matrix.java }}
# equals env.test_platform == 'true' || test_vscode_extension == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'Platform') || contains(github.event.pull_request.labels.*.name, 'VSCode Extension') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
config: [ 'platform', 'release' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: Restoring Cache
uses: actions/cache/restore@v4
with:
path: ~/.hgexternalcache
key: ${{ runner.os }}-${{ hashFiles('*/external/binaries-list', '*/*/external/binaries-list') }}
restore-keys: ${{ runner.os }}-
- name: Create ${{ matrix.config }}-src zip
run: ant $OPTS -quiet build-source-config -Dcluster.config=${{ matrix.config }}
- name: Extract ${{ matrix.config }}-src zip
run: |
mkdir tmpbuild && cd tmpbuild
unzip -qq ../nbbuild/build/${{ matrix.config }}-src*
- name: Build from ${{ matrix.config }}-src zip
run: |
cd tmpbuild
ant $OPTS -quiet build -Dcluster.config=${{ matrix.config }}
# extra round for VSCodeExt which is built with 'release' config
- name: Set up node
if: ${{ (matrix.config == 'release') && success() }}
uses: actions/setup-node@v4
with:
node-version: 18
- name: Build NBVSCodeExt from ${{ matrix.config }}-src zip
if: ${{ (matrix.config == 'release') && success() }}
run: |
cd tmpbuild/java/java.lsp.server
ant $OPTS build-vscode-ext -D3rdparty.modules=.*externalcodeformatter.*
ide-modules-test:
name: IDE Modules on Linux/JDK ${{ matrix.java }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: apisupport.project
run: ant $OPTS -f apisupport/apisupport.project test
- name: apisupport.refactoring
run: ant $OPTS -f apisupport/apisupport.refactoring test
- name: apisupport.wizards
run: ant $OPTS -f apisupport/apisupport.wizards test
- name: timers
run: ant $OPTS -f apisupport/timers test
- name: ide/api.xml
run: ant $OPTS -f ide/api.xml test
- name: ide/api.xml.ui
run: ant $OPTS -f ide/api.xml.ui test
- name: ide/bugtracking
run: .github/retry.sh ant $OPTS -f ide/bugtracking test
- name: ide/bugtracking.bridge
run: .github/retry.sh ant $OPTS -f ide/bugtracking.bridge test
- name: ide/bugtracking.commons
run: ant $OPTS -f ide/bugtracking.commons test
# - name: ide/bugzilla
# run: ant $OPTS -f ide/bugzilla test
- name: ide/code.analysis
run: ant $OPTS -f ide/code.analysis test
- name: ide/core.ide
run: ant $OPTS -f ide/core.ide test
- name: ide/db
run: .github/retry.sh ant $OPTS -f ide/db test
- name: ide/db.dataview
run: ant $OPTS -f ide/db.dataview test
- name: ide/db.sql.editor
run: ant $OPTS -f ide/db.sql.editor test
- name: ide/docker.api
run: ant $OPTS -f ide/docker.api test
- name: ide/docker.ui
run: ant $OPTS -f ide/docker.ui test
- name: ide/editor.bookmarks
run: ant $OPTS -f ide/editor.bookmarks test
# - name: ide/editor.bracesmatching
# run: ant $OPTS -f ide/editor.bracesmatching test
- name: ide/editor.document
run: ant $OPTS -f ide/editor.document test
- name: ide/editor.fold
run: ant $OPTS -f ide/editor.fold test
- name: ide/editor.fold.nbui
run: ant $OPTS -f ide/editor.fold.nbui test
- name: ide/editor.guards
run: ant $OPTS -f ide/editor.guards test
- name: ide/editor.indent
run: ant $OPTS -f ide/editor.indent test
- name: ide/editor.indent.project
run: ant $OPTS -f ide/editor.indent.project test
- name: ide/editor.macros
run: ant $OPTS -f ide/editor.macros test
- name: ide/editor.search
run: ant $OPTS -f ide/editor.search test
- name: ide/editor.settings
run: ant $OPTS -f ide/editor.settings test
- name: ide/editor.settings.storage
run: .github/retry.sh ant $OPTS -f ide/editor.settings.storage test
- name: ide/editor.structure
run: ant $OPTS -f ide/editor.structure test
- name: ide/editor.tools.storage
run: ant $OPTS -f ide/editor.tools.storage test
- name: ide/editor.util
run: ant $OPTS -f ide/editor.util test
- name: ide/extbrowser
run: ant $OPTS -f ide/extbrowser test
- name: ide/extexecution.base
run: ant $OPTS -f ide/extexecution.base test
- name: ide/gsf.testrunner.ui
run: ant $OPTS -f ide/gsf.testrunner.ui test
- name: ide/httpserver
run: ant $OPTS -f ide/httpserver test
- name: ide/hudson
run: ant $OPTS -f ide/hudson test
- name: ide/hudson.git
run: ant $OPTS -f ide/hudson.git test
- name: ide/hudson.mercurial
run: ant $OPTS -f ide/hudson.mercurial test
- name: ide/hudson.subversion
run: ant $OPTS -f ide/hudson.subversion test
- name: ide/hudson.tasklist
run: ant $OPTS -f ide/hudson.tasklist test
- name: ide/hudson.ui
run: ant $OPTS -f ide/hudson.ui test
- name: ide/javascript2.debug
run: ant $OPTS -f ide/javascript2.debug test
- name: ide/languages.hcl
run: ant $OPTS -f ide/languages.hcl test
- name: ide/languages.toml
run: ant $OPTS -f ide/languages.toml test
- name: ide/languages.yaml
run: ant $OPTS -f ide/languages.yaml test
- name: ide/lexer
run: ant $OPTS -f ide/lexer test
- name: ide/lexer.antlr4
run: ant $OPTS -f ide/lexer.antlr4 test
- name: ide/lib.terminalemulator
run: ant $OPTS -f ide/lib.terminalemulator test
- name: ide/libs.freemarker
run: ant $OPTS -f ide/libs.freemarker test
- name: ide/libs.graalsdk
run: ant $OPTS -f ide/libs.graalsdk test
# - name: ide/localhistory
# run: ant $OPTS -f ide/localhistory test
- name: ide/libs.truffleapi
run: ant $OPTS -f ide/libs.truffleapi test
- name: ide/notifications
run: .github/retry.sh ant $OPTS -f ide/notifications test
- name: ide/o.openidex.util
run: ant $OPTS -f ide/o.openidex.util test
- name: ide/options.editor
run: .github/retry.sh ant $OPTS -f ide/options.editor test
# - name: ide/parsing.api
# run: ant $OPTS -f ide/parsing.api test
# - name: ide/parsing.indexing
# run: ant $OPTS -f ide/parsing.indexing test
- name: ide/parsing.lucene
run: ant $OPTS -f ide/parsing.lucene test
- name: ide/project.libraries
run: ant $OPTS -f ide/project.libraries test
- name: ide/project.libraries.ui
run: ant $OPTS -f ide/project.libraries.ui test
- name: ide/projectapi
run: ant $OPTS -f ide/projectapi test
- name: ide/projectapi.nb
run: ant $OPTS -f ide/projectapi.nb test
- name: ide/projectuiapi.base
run: ant $OPTS -f ide/projectuiapi.base test
- name: ide/refactoring.api
run: ant $OPTS -f ide/refactoring.api test
- name: ide/schema2beans
run: ant $OPTS -f ide/schema2beans test
- name: ide/server
run: ant $OPTS -f ide/server test
- name: ide/spellchecker
run: ant $OPTS -f ide/spellchecker test
- name: ide/spi.editor.hints
run: ant $OPTS -f ide/spi.editor.hints test
# - name: ide/spi.palette
# run: ant $OPTS -f ide/spi.palette test
- name: ide/spi.tasklist
run: ant $OPTS -f ide/spi.tasklist test
- name: ide/tasklist.ui
run: ant $OPTS -f ide/tasklist.ui test
- name: ide/team.commons
run: ant $OPTS -f ide/team.commons test
- name: ide/terminal.nb
run: ant $OPTS -f ide/terminal.nb test
- name: ide/utilities
run: ant $OPTS -f ide/utilities test
- name: ide/web.common
run: ant $OPTS -f ide/web.common test
- name: ide/web.common.ui
run: ant $OPTS -f ide/web.common.ui test
- name: ide/web.webkit.debugging
run: ant $OPTS -f ide/web.webkit.debugging test
- name: ide/xml
run: ant $OPTS -f ide/xml test
- name: ide/xml.axi
run: ant $OPTS -f ide/xml.axi test
- name: ide/xml.catalog
run: ant $OPTS -f ide/xml.catalog test-unit
- name: ide/xml.core
run: ant $OPTS -f ide/xml.core test
- name: ide/xml.lexer
run: ant $OPTS -f ide/xml.lexer test
- name: ide/xml.multiview
run: ant $OPTS -f ide/xml.multiview test
- name: ide/xml.retriever
run: ant $OPTS -f ide/xml.retriever test
- name: ide/xml.schema.completion
run: ant $OPTS -f ide/xml.schema.completion test
- name: ide/xml.schema.model
run: ant $OPTS -f ide/xml.schema.model test
- name: ide/xml.text
run: ant $OPTS -f ide/xml.text test
- name: ide/xml.text.obsolete90
run: ant $OPTS -f ide/xml.text.obsolete90 test
- name: ide/xml.wsdl.model
run: .github/retry.sh ant $OPTS -f ide/xml.wsdl.model test
- name: ide/xml.xam
run: ant $OPTS -f ide/xml.xam test
- name: ide/xml.xdm
run: ant $OPTS -f ide/xml.xdm test
- name: ide/xsl
run: ant $OPTS -f ide/xsl test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
build-tools:
name: Build-Tools on Linux/JDK ${{ matrix.java }}
# label triggers: Ant, Gradle, Maven, MX
if: ${{ contains(github.event.pull_request.labels.*.name, 'Ant') || contains(github.event.pull_request.labels.*.name, 'Gradle') || contains(github.event.pull_request.labels.*.name, 'Maven') || contains(github.event.pull_request.labels.*.name, 'MX') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 50
strategy:
matrix:
java: [ '17', '21', '24-ea' ]
exclude:
- java: ${{ github.event_name == 'pull_request' && 'nothing' || '21' }}
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: java/maven
run: ant $OPTS -f java/maven test
- name: java/maven.embedder
run: ant $OPTS -f java/maven.embedder test
- name: java/maven.grammar
run: ant $OPTS -f java/maven.grammar test
- name: java/maven.hints
run: ant $OPTS -f java/maven.hints test
# - name: java/maven.htmlui
# run: ant $OPTS -f java/maven.htmlui test
- name: java/maven.indexer
run: ant $OPTS -f java/maven.indexer test
- name: java/maven.refactoring
run: ant $OPTS -f java/maven.refactoring test
- name: java/maven.junit
run: ant $OPTS -f java/maven.junit test
- name: java/maven.model
run: ant $OPTS -f java/maven.model test
- name: java/maven.osgi
run: ant $OPTS -f java/maven.osgi test
- name: java/api.maven
run: ant $OPTS -f java/api.maven test
- name: maven.apisupport
run: ant $OPTS -f apisupport/maven.apisupport test
- name: java/hudson.maven
run: ant $OPTS -f java/hudson.maven test
- name: ide/project.ant
run: ant $OPTS -f ide/project.ant test
- name: ide/project.ant.compat8
run: ant $OPTS -f ide/project.ant.compat8 test
- name: ide/project.ant.ui
run: ant $OPTS -f ide/project.ant.ui test
# - name: java/ant.debugger
# run: ant $OPTS -f java/ant.debugger test
- name: java/ant.freeform
run: ant $OPTS -f java/ant.freeform test
# - name: java/ant.grammar
# run: ant $OPTS -f java/ant.grammar test
# TODO next are JDK 21+ incompatibe steps
- name: java/java.mx.project
if: ${{ matrix.java == '17' }}
run: .github/retry.sh ant $OPTS -f java/java.mx.project test
- name: java/gradle.java
if: ${{ matrix.java == '17' }}
run: .github/retry.sh ant $OPTS -f java/gradle.java test
- name: extide/gradle
if: ${{ matrix.java == '17' }}
run: ant $OPTS -f extide/gradle test
- name: java/gradle.dependencies
if: ${{ matrix.java == '17' }}
run: ant $OPTS -f java/gradle.dependencies test
- name: extide/o.apache.tools.ant.module
if: ${{ matrix.java == '17' }}
run: ant $OPTS -f extide/o.apache.tools.ant.module test
- name: apisupport.ant
if: ${{ matrix.java == '17' }}
run: ant $OPTS -f apisupport/apisupport.ant test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
platform-modules-test1:
name: Platform Modules batch1 on Linux/JDK ${{ matrix.java }} (some on 8)
# equals env.test_platform == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'Platform') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: platform/api.htmlui
run: .github/retry.sh ant $OPTS -f platform/api.htmlui test
- name: platform/htmlui
run: .github/retry.sh ant $OPTS -f platform/htmlui test
- name: platform/api.intent
run: ant $OPTS -f platform/api.intent test
- name: platform/api.io
run: ant $OPTS -f platform/api.io test
- name: platform/api.progress
run: ant $OPTS -f platform/api.progress test
- name: platform/api.progress.nb
run: ant $OPTS -f platform/api.progress.nb test
- name: platform/api.scripting
run: ant $OPTS -f platform/api.scripting test
- name: platform/api.search
run: ant $OPTS -f platform/api.search test
- name: platform/api.visual
run: ant $OPTS -f platform/api.visual test
- name: platform/applemenu
run: ant $OPTS -f platform/applemenu test
- name: platform/autoupdate.cli
run: ant $OPTS -f platform/autoupdate.cli test
- name: platform/autoupdate.services
run: ant $OPTS -f platform/autoupdate.services test
- name: platform/autoupdate.ui
run: ant $OPTS -f platform/autoupdate.ui test
- name: platform/core.execution
run: ant $OPTS -f platform/core.execution test
- name: platform/core.io.ui
run: ant $OPTS -f platform/core.io.ui test
- name: platform/core.kit
run: ant $OPTS -f platform/core.kit test
- name: platform/core.multiview
run: ant $OPTS -f platform/core.multiview test
- name: platform/core.netigso
run: ant $OPTS -f platform/core.netigso test
- name: platform/core.osgi
run: ant $OPTS -f platform/core.osgi test
- name: platform/core.output2
run: ant $OPTS -f platform/core.output2 test
- name: platform/core.startup
run: .github/retry.sh ant $OPTS -f platform/core.startup test
- name: platform/core.startup.base
run: ant $OPTS -f platform/core.startup.base test
- name: platform/core.ui
run: ant $OPTS -f platform/core.ui test
- name: platform/core.windows
run: .github/retry.sh ant $OPTS -f platform/core.windows test
- name: platform/editor.mimelookup
run: ant $OPTS -f platform/editor.mimelookup test
- name: platform/editor.mimelookup.impl
run: ant $OPTS -f platform/editor.mimelookup.impl test
- name: platform/favorites
run: .github/retry.sh ant $OPTS -f platform/favorites test
- name: platform/javahelp
run: ant $OPTS -f platform/javahelp test-unit
- name: platform/keyring.fallback
run: ant $OPTS -f platform/keyring.fallback test
- name: platform/keyring.impl
run: ant $OPTS -f platform/keyring.impl test
- name: platform/libs.junit4
run: ant $OPTS -f platform/libs.junit4 test
- name: platform/o.n.core
run: ant $OPTS -f platform/o.n.core test-unit
- name: platform/o.n.swing.outline
run: ant $OPTS -f platform/o.n.swing.outline test
- name: platform/o.n.swing.tabcontrol
run: ant $OPTS -f platform/o.n.swing.tabcontrol test
- name: platform/lib.uihandler
run: .github/retry.sh ant $OPTS -f platform/lib.uihandler test
- name: platform/openide.text
run: .github/retry.sh ant $OPTS -f platform/openide.text test
- name: platform/openide.util.ui
run: ant $OPTS -f platform/openide.util.ui test
# isolation required by netbinox tests
- name: isolate platform build
run: |
cp -r platform/ _platform/ && cp -r harness/ _harness/ && cp nbbuild/build/nbantext.jar .
cp -r nbbuild/netbeans/platform/ _nb_platform/ && cp -r nbbuild/netbeans/harness/ _nb_harness/
ant $OPTS -quiet clean && rm -Rf platform/ && rm -Rf harness/
mkdir nbbuild/build && mkdir nbbuild/netbeans
mv _platform/ platform/ && mv _harness/ harness/ && mv nbantext.jar nbbuild/build/
mv _nb_platform/ nbbuild/netbeans/platform/ && mv _nb_harness/ nbbuild/netbeans/harness/
- name: platform/netbinox
run: ant $OPTS -f platform/netbinox test -Dtest.config=stableBTD
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
platform-modules-test2:
name: Platform Modules batch2 on Linux/JDK ${{ matrix.java }}
# equals env.test_platform == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'Platform') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 90
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: platform/openide.actions
run: ant $OPTS -f platform/openide.actions test
- name: platform/openide.awt
run: ant $OPTS -f platform/openide.awt test
- name: platform/openide.compat
run: ant $OPTS -f platform/openide.compat test
- name: platform/openide.dialogs
run: ant $OPTS -f platform/openide.dialogs test
- name: platform/openide.execution
run: ant $OPTS -f platform/openide.execution test
- name: platform/openide.execution.compat8
run: ant $OPTS -f platform/openide.execution.compat8 test
- name: platform/openide.explorer
run: .github/retry.sh ant $OPTS -f platform/openide.explorer test
- name: platform/openide.filesystems
run: ant $OPTS -f platform/openide.filesystems test
- name: platform/openide.filesystems.compat8
run: ant $OPTS -f platform/openide.filesystems.compat8 test
- name: platform/openide.filesystems.nb
run: ant $OPTS -f platform/openide.filesystems.nb test
- name: platform/openide.io
run: ant $OPTS -f platform/openide.io test
- name: platform/openide.loaders
run: ant $OPTS -f platform/openide.loaders test
- name: platform/openide.modules
run: ant $OPTS -f platform/openide.modules test
- name: platform/openide.nodes
run: ant $OPTS -f platform/openide.nodes test
- name: platform/openide.options
run: ant $OPTS -f platform/openide.options test
- name: platform/openide.util
run: ant $OPTS -f platform/openide.util test
- name: platform/openide.util.lookup
run: ant $OPTS -f platform/openide.util.lookup test
- name: platform/openide.windows
run: ant $OPTS -f platform/openide.windows test
- name: platform/options.api
run: ant $OPTS -f platform/options.api test-unit
- name: platform/options.keymap
run: ant $OPTS -f platform/options.keymap test
- name: platform/print
run: ant $OPTS -f platform/print test
- name: platform/progress.ui
run: ant $OPTS -f platform/progress.ui test
- name: platform/queries
run: ant $OPTS -f platform/queries test
- name: platform/sampler
run: ant $OPTS -f platform/sampler test
- name: platform/sendopts
run: ant $OPTS -f platform/sendopts test
- name: platform/settings
run: .github/retry.sh ant $OPTS -f platform/settings test
- name: platform/spi.actions
run: ant $OPTS -f platform/spi.actions test
- name: platform/spi.quicksearch
run: ant $OPTS -f platform/spi.quicksearch test
- name: platform/templatesui
run: ant $OPTS -f platform/templatesui test
- name: platform/uihandler
run: .github/retry.sh ant $OPTS -f platform/uihandler test
- name: platform/o.n.bootstrap
run: ant $OPTS -f platform/o.n.bootstrap test
- name: platform/templates
run: ant $OPTS -f platform/templates test
- name: platform/api.templates
run: ant $OPTS -f platform/api.templates test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
java-modules-test:
name: Java Modules on Linux/JDK ${{ matrix.java }}
# equals env.test_java == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'Java') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 100
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: api.java
run: ant $OPTS -f java/api.java test
# - name: beans
# run: ant $OPTS -f java/beans test
- name: classfile
run: ant $OPTS -f java/classfile test
- name: dbschema
run: ant $OPTS -f java/dbschema test -Dtest.config=stable
- name: editor.htmlui
run: ant $OPTS -f java/editor.htmlui test
- name: java.completion
run: ant $OPTS -f java/java.completion test
- name: java.editor.base
run: ant $OPTS -f java/java.editor.base test
- name: java.editor
run: .github/retry.sh ant $OPTS -f java/java.editor test-unit
- name: java.freeform
run: ant $OPTS -f java/java.freeform test
- name: java.file.launcher
run: ant $OPTS -f java/java.file.launcher test
# - name: java.kit
# run: ant $OPTS -f java/java.kit test
# - name: java.metrics
# run: ant $OPTS -f java/java.metrics test
- name: java.module.graph
run: ant $OPTS -f java/java.module.graph test
- name: java.navigation
run: ant $OPTS -f java/java.navigation test
- name: java.openjdk.project
run: ant $OPTS -f java/java.openjdk.project test
- name: java.platform
run: ant $OPTS -f java/java.platform test
- name: java.platform.ui
run: ant $OPTS -f java/java.platform.ui test
- name: java.preprocessorbridge
run: ant $OPTS -f java/java.preprocessorbridge test
- name: java.project
run: ant $OPTS -f java/java.project test
# - name: java.project.ui
# run: ant $OPTS -f java/java.project.ui test
- name: java.source
run: ant $OPTS -f java/java.source test-unit
# - name: java.source.ant
# run: ant $OPTS -f java/java.source.ant test
- name: java.source.base
run: ant $OPTS -f java/java.source.base test
- name: java.source.compat8
run: ant $OPTS -f java/java.source.compat8 test
- name: java.source.queriesimpl
run: ant $OPTS -f java/java.source.queriesimpl test
- name: java.sourceui
run: ant $OPTS -f java/java.sourceui test
- name: java.testrunner
run: ant $OPTS -f java/java.testrunner test
- name: java.testrunner.ant
run: ant $OPTS -f java/java.testrunner.ant test
# - name: javawebstart
# run: ant $OPTS -f java/javawebstart test
# - name: jellytools.java
# run: ant $OPTS -f java/jellytools.java test
- name: jshell.support
run: ant $OPTS -f java/jshell.support test
- name: junit
run: ant $OPTS -f java/junit test-unit
- name: junit.ant.ui
run: ant $OPTS -f java/junit.ant.ui test
- name: lib.nbjavac
run: ant $OPTS -f java/lib.nbjavac test
- name: libs.nbjavacapi
run: ant $OPTS -f java/libs.nbjavacapi test
# - name: performance
# run: ant $OPTS -f java/performance test
# - name: performance.java
# run: ant $OPTS -f java/performance.java test
# - name: projectimport.eclipse.core
# run: ant $OPTS -f java/projectimport.eclipse.core test
- name: spellchecker.bindings.java
run: ant $OPTS -f java/spellchecker.bindings.java test
- name: testng
run: ant $OPTS -f java/testng test
# - name: testng.ant
# run: ant $OPTS -f java/testng.ant test
# - name: testng.ui
# run: ant $OPTS -f java/testng.ui test
- name: whitelist
run: ant $OPTS -f java/whitelist test
- name: xml.jaxb
run: ant $OPTS -f java/xml.jaxb test
- name: java.lexer
run: ant $OPTS -f java/java.lexer test
- name: refactoring.java
run: ant $OPTS -f java/refactoring.java test-unit
- name: form
run: ant $OPTS -f java/form test-unit
- name: javadoc
run: ant $OPTS -f java/javadoc test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
java-hints-test:
name: Java Hints ${{ matrix.config }} on Linux/JDK ${{ matrix.java }}
# equals env.test_java == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'Java') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17', '23' ]
config: [ 'batch1', 'batch2' ]
exclude:
- java: ${{ github.event_name == 'pull_request' && 'nothing' || '23' }}
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: java.hints ${{ matrix.config }}
run: ant $OPTS -Dtest.config=${{ matrix.config }} -f java/java.hints test
- name: java.hints.declarative
if: ${{ (matrix.config == 'batch2') && success() }}
run: ant $OPTS -f java/java.hints.declarative test
- name: spi.java.hints
if: ${{ (matrix.config == 'batch2') && success() }}
run: ant $OPTS -f java/spi.java.hints test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
java-debugger-test:
name: Java Debugger tests on Linux/JDK ${{ matrix.java }}
# equals env.test_java == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'Java') || contains(github.event.pull_request.labels.*.name, 'debugger') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17', '21', '24-ea' ]
exclude:
- java: ${{ github.event_name == 'pull_request' && 'nothing' || '21' }}
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: api.debugger.jpda
run: ant $OPTS -f java/api.debugger.jpda test
- name: debugger.jpda
run: .github/retry.sh ant $OPTS -f java/debugger.jpda test
- name: debugger.jpda.js
run: ant $OPTS -f java/debugger.jpda.js test
- name: debugger.jpda.projects
run: .github/retry.sh ant $OPTS -f java/debugger.jpda.projects test
- name: debugger.jpda.projectsui
run: ant $OPTS -f java/debugger.jpda.projectsui test
# - name: debugger.jpda.truffle
# run: ant $OPTS -f java/debugger.jpda.truffle test
# - name: debugger.jpda.ui
# run: ant $OPTS -f java/debugger.jpda.ui test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
profiler-test:
name: Profiler on Linux/JDK ${{ matrix.java }}
# equals env.test_java == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'Java') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: profiler
run: ant $OPTS -f profiler/profiler test-unit
- name: profiler.oql
run: ant $OPTS -f profiler/profiler.oql test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
webcommon-test:
name: Web Modules on Linux/JDK ${{ matrix.java }}
# equals env.test_web == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'JavaScript') || contains(github.event.pull_request.labels.*.name, 'TypeScript') || contains(github.event.pull_request.labels.*.name, 'HTML') || contains(github.event.pull_request.labels.*.name, 'CSS') || contains(github.event.pull_request.labels.*.name, 'CSL') || contains(github.event.pull_request.labels.*.name, 'web') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: ide/csl.api
run: ant $OPTS -f ide/csl.api test
- name: ide/csl.types
run: ant $OPTS -f ide/csl.types test
- name: ide/css.editor
run: ant $OPTS -f ide/css.editor test
- name: ide/css.lib
run: ant $OPTS -f ide/css.lib test
- name: ide/css.model
run: ant $OPTS -f ide/css.model test
- name: ide/html
run: .github/retry.sh ant $OPTS -f ide/html test
- name: ide/html.custom
run: ant $OPTS -f ide/html.custom test
- name: ide/html.editor
run: ant $OPTS -f ide/html.editor test
- name: ide/html.editor
run: ant $OPTS -f ide/html.editor.lib test
- name: ide/html.lexer
run: ant $OPTS -f ide/html.lexer test
- name: ide/html.parser
run: ant $OPTS -f ide/html.parser test
- name: ide/html.validation
run: ant $OPTS -f ide/html.validation test
# - name: webcommon/cordova
# run: ant $OPTS -f webcommon/cordova test
- name: webcommon/html.angular
run: ant $OPTS -f webcommon/html.angular test-unit
- name: webcommon/html.knockout
run: ant $OPTS -f webcommon/html.knockout test-unit
- name: webcommon/javascript.bower
run: ant $OPTS -f webcommon/javascript.bower test
- name: webcommon/javascript.cdnjs
run: ant $OPTS -f webcommon/javascript.cdnjs test
- name: webcommon/javascript.grunt
run: ant $OPTS -f webcommon/javascript.grunt test
- name: webcommon/javascript.karma
run: ant $OPTS -f webcommon/javascript.karma test
- name: webcommon/javascript.nodejs
run: ant $OPTS -f webcommon/javascript.nodejs test
- name: webcommon/javascript.v8debug
run: ant $OPTS -f webcommon/javascript.v8debug test
- name: webcommon/javascript2.doc
run: ant $OPTS -f webcommon/javascript2.doc test
- name: webcommon/javascript2.editor
if: env.test_javascript == 'true' && success()
run: ant $OPTS -f webcommon/javascript2.editor test-unit
- name: webcommon/javascript2.extdoc
run: ant $OPTS -f webcommon/javascript2.extdoc test
- name: webcommon/javascript2.extjs
run: ant $OPTS -f webcommon/javascript2.extjs test
- name: webcommon/javascript2.jade
run: ant $OPTS -f webcommon/javascript2.jade test
- name: webcommon/javascript2.jquery
run: .github/retry.sh ant $OPTS -f webcommon/javascript2.jquery test
- name: webcommon/javascript2.jsdoc
run: ant $OPTS -f webcommon/javascript2.jsdoc test
- name: webcommon/javascript2.json
run: ant $OPTS -f webcommon/javascript2.json test
- name: webcommon/javascript2.knockout
run: ant $OPTS -f webcommon/javascript2.knockout test
- name: webcommon/javascript2.lexer
run: ant $OPTS -f webcommon/javascript2.lexer test
- name: webcommon/javascript2.model
run: ant $OPTS -f webcommon/javascript2.model test
- name: webcommon/javascript2.nodejs
run: ant $OPTS -f webcommon/javascript2.nodejs test-unit
- name: webcommon/javascript2.prototypejs
run: ant $OPTS -f webcommon/javascript2.prototypejs test
- name: webcommon/javascript2.requirejs
run: ant $OPTS -f webcommon/javascript2.requirejs test-unit
- name: webcommon/javascript2.sdoc
run: ant $OPTS -f webcommon/javascript2.sdoc test
- name: webcommon/languages.apacheconf
run: ant $OPTS -f webcommon/languages.apacheconf test
- name: webcommon/languages.ini
run: ant $OPTS -f webcommon/languages.ini test
# - name: webcommon/lib.v8debug
# run: ant $OPTS -f webcommon/lib.v8debug test
- name: webcommon/libs.graaljs
run: ant $OPTS -f webcommon/libs.graaljs test
- name: webcommon/selenium2.webclient
run: ant $OPTS -f webcommon/selenium2.webclient test
- name: webcommon/web.clientproject
run: ant $OPTS -f webcommon/web.clientproject test-unit
- name: webcommon/web.clientproject.api
run: ant $OPTS -f webcommon/web.clientproject.api test
- name: webcommon/web.inspect
run: ant $OPTS -f webcommon/web.inspect test
- name: webcommon/api.knockout
run: ant $OPTS -f webcommon/api.knockout test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
javafx-test:
name: JavaFX on Linux/JDK ${{ matrix.java }}
# equals env.test_javafx == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'JavaFX') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: platform/libs.javafx
run: ant $OPTS -f platform/libs.javafx test
- name: javafx2.editor
run: ant $OPTS -f javafx/javafx2.editor test -Dtest.config=stable
# - name: javafx2.project
# run: ant $OPTS -f javafx/javafx2.project test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
groovy-test:
name: Groovy on Linux/JDK ${{ matrix.java }}
# equals env.test_groovy == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'Groovy') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: groovy/groovy.editor
run: ant $OPTS -f groovy/groovy.editor test
- name: groovy/groovy.gsp
run: ant $OPTS -f groovy/groovy.gsp test
- name: groovy/groovy.support
run: ant $OPTS -f groovy/groovy.support test
# - name: groovy/groovy.kit
# run: ant $OPTS -f groovy/groovy.kit test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
rust-test:
name: Rust on Linux/JDK ${{ matrix.java }}
# equals env.test_rust == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'Rust') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: rust/rust.cargo
run: ant $OPTS -f rust/rust.cargo test
- name: rust/rust.grammar
run: ant $OPTS -f rust/rust.grammar test
- name: rust/rust.options
run: ant $OPTS -f rust/rust.options test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
enterprise-test:
name: Enterprise on Linux/JDK ${{ matrix.java }}
# equals env.test_enterprise == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'Java EE/Jakarta EE') || contains(github.event.pull_request.labels.*.name, 'Micronaut') || contains(github.event.pull_request.labels.*.name, 'enterprise') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: micronaut
run: .github/retry.sh ant $OPTS -f enterprise/micronaut test
- name: api.web.webmodule
run: ant $OPTS -f enterprise/api.web.webmodule test
- name: cloud.amazon
run: ant $OPTS -f enterprise/cloud.amazon test
- name: cloud.oracle
run: ant $OPTS -f enterprise/cloud.oracle test
- name: el.lexer
run: ant $OPTS -f enterprise/el.lexer test
- name: glassfish.common
run: ant $OPTS -f enterprise/glassfish.common test
# TODO failing tests commented out
# Fails
# - name: glassfish.javaee
# run: ant $OPTS -f enterprise/glassfish.javaee test
# Fails
# - name: glassfish.tooling
# run: ant $OPTS -f enterprise/glassfish.tooling test
- name: j2ee.api.ejbmodule
run: ant $OPTS -f enterprise/j2ee.api.ejbmodule test
- name: j2ee.clientproject
run: ant $OPTS -f enterprise/j2ee.clientproject test
- name: j2ee.common
run: ant $OPTS -f enterprise/j2ee.common test
- name: j2ee.core
run: ant $OPTS -f enterprise/j2ee.core test
# Fails
# - name: j2ee.dd
# run: ant $OPTS -f enterprise/j2ee.dd test
- name: j2ee.ddloaders
run: ant $OPTS -f enterprise/j2ee.ddloaders test
# Fails + Slow
# - name: j2ee.ejbjarproject
# run: ant $OPTS -f enterprise/j2ee.ejbjarproject test
# Fails
# - name: j2ee.ejbverification
# run: ant $OPTS -f enterprise/j2ee.ejbverification test
- name: j2ee.persistence
run: ant $OPTS -f java/j2ee.persistence test
# Fails
# - name: j2eeserver
# run: ant $OPTS -f enterprise/j2eeserver test
- name: j2ee.sun.appsrv
run: ant $OPTS -f enterprise/j2ee.sun.appsrv test
- name: j2ee.sun.dd
run: ant $OPTS -f enterprise/j2ee.sun.dd test
# Fails
# - name: j2ee.sun.ddui
# run: ant $OPTS -f enterprise/j2ee.sun.ddui test
# Fails + Slow
# - name: jakarta.web.beans
# run: ant $OPTS -f enterprise/jakarta.web.beans test
- name: javaee.wildfly
run: .github/retry.sh ant $OPTS -f enterprise/javaee.wildfly test
# Fails + Slow
# - name: jellytools.enterprise
# run: ant $OPTS -f enterprise/jellytools.enterprise test
- name: jsp.lexer
run: ant $OPTS -f enterprise/jsp.lexer test
- name: maven.j2ee
run: ant $OPTS -f enterprise/maven.j2ee test
# Fails
# - name: enterpirse/payara.common
# run: ant $OPTS -f enterprise/payara.common test
# Fails
# - name: enterpirse/payara.eecommon
# run: ant $OPTS -f enterprise/payara.eecommon test
# Fails
# - name: enterpirse/payara.jakartaee
# run: ant $OPTS -f enterprise/payara.jakartaee test
# Fails
# - name: enterpirse/payara.tooling
# run: ant $OPTS -f enterprise/payara.tooling test
- name: profiler.j2ee
run: ant $OPTS -f enterprise/profiler.j2ee test
- name: spring.webmvc
run: ant $OPTS -f enterprise/spring.webmvc test
- name: spring.beans
run: ant $OPTS -f java/spring.beans test
- name: tomcat5
run: ant $OPTS -f enterprise/tomcat5 test
# Fails
# - name: web.beans
# run: ant $OPTS -f enterprise/web.beans test
# Fails + Slow
# - name: web.core.syntax
# run: ant $OPTS -f enterprise/web.core.syntax test
# Fails + Slow
# - name: web.debug
# run: ant $OPTS -f enterprise/web.debug test
# Fails
# - name: web.el
# run: ant $OPTS -f enterprise/web.el test
# Fails
# - name: web.freeform
# run: ant $OPTS -f enterprise/web.freeform test
# Fails
# - name: web.jsf.editor
# run: ant $OPTS -f enterprise/web.jsf.editor test
# Fails
# - name: web.jsf.navigation
# run: ant $OPTS -f enterprise/web.jsf.navigation test
- name: web.jsf
run: ant $OPTS -f enterprise/web.jsf test
- name: web.jsfapi
run: ant $OPTS -f enterprise/web.jsfapi test
- name: web.jspparser
run: ant $OPTS -f enterprise/web.jspparser test
# Fails
# - name: web.project
# run: ant $OPTS -f enterprise/web.project test
- name: websvc.clientapi
run: ant $OPTS -f enterprise/websvc.clientapi test
# Fails
# - name: websvc.customization
# run: ant $OPTS -f enterprise/websvc.customization test
# Fails
# - name: websvc.design
# run: ant $OPTS -f enterprise/websvc.design test
- name: websvc.jaxwsapi
run: ant $OPTS -f enterprise/websvc.jaxwsapi test
# Fails
# - name: websvc.jaxwsmodel
# run: ant $OPTS -f enterprise/websvc.jaxwsmodel test
# Fails + Slow
# - name: websvc.kit
# run: ant $OPTS -f enterprise/websvc.kit test
# Fails
# - name: websvc.manager
# run: ant $OPTS -f enterprise/websvc.manager test
- name: websvc.projectapi
run: ant $OPTS -f enterprise/websvc.projectapi test
- name: websvc.rest
run: ant $OPTS -f enterprise/websvc.rest test
# Fails + Slow
# - name: websvc.restkit
# run: ant $OPTS -f enterprise/websvc.restkit test
# Fails
# - name: websvc.utilities
# run: ant $OPTS -f enterprise/websvc.utilities test
- name: websvc.websvcapi
run: ant $OPTS -f enterprise/websvc.websvcapi test
- name: websvc.wsstackapi
run: ant $OPTS -f enterprise/websvc.wsstackapi test
# TODO fails on JDK11+ (#4904)
# - name: websvc.editor.hints
# run: ant $OPTS -f enterprise/websvc.editor.hints test
- name: j2ee.dd.webservice
run: ant $OPTS -f enterprise/j2ee.dd.webservice test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
versioning-test:
name: Versioning Modules on Linux/JDK ${{ matrix.java }}
# equals env.test_versioning == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'git') || contains(github.event.pull_request.labels.*.name, 'subversion') || contains(github.event.pull_request.labels.*.name, 'mercurial') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: Setup Env
run: echo "GIT_TEST_REPO=$HOME/git_test_repo" >> $GITHUB_ENV
- name: ide/git
run: .github/retry.sh ant $OPTS -f ide/git test-unit
- name: ide/libs.git
run: .github/retry.sh ant $OPTS -f ide/libs.git test
- name: ide/versioning.masterfs
run: ant $OPTS -f ide/versioning.masterfs test
- name: ide/versioning.ui
run: ant $OPTS -f ide/versioning.ui test
- name: ide/versioning.util
run: ant $OPTS -f ide/versioning.util test
- name: ide/versioning.core
run: ant $OPTS -f ide/versioning.core test-unit
- name: ide/versioning
run: ant $OPTS -f ide/versioning test-unit
- name: ide/versioning.core test-qa-functional
run: |
#Prepare git repo for tests
git init $GIT_TEST_REPO
# Prepare config file for ide/versioning.core module
touch ide/versioning.core/test/qa-functional/data/tck.properties
echo "test.root = $GIT_TEST_REPO" > ide/versioning.core/test/qa-functional/data/tck.properties
echo "test.vcs = org.netbeans.modules.versioning.DelegatingVCS" >> ide/versioning.core/test/qa-functional/data/tck.properties
# Run functional tests for ide/versioning.core module
ant $OPTS -f ide/versioning.core test-qa-functional
- name: ide/versioning test-qa-functional
run: |
# Prepare config file for ide/versioning module
touch ide/versioning/test/qa-functional/data/tck.properties
echo "test.root = $GIT_TEST_REPO" > ide/versioning/test/qa-functional/data/tck.properties
echo "test.vcs = org.netbeans.modules.git.GitVCS" >> ide/versioning/test/qa-functional/data/tck.properties
# Run functional tests for ide/versioning module
ant $OPTS -f ide/versioning test-qa-functional
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
mysql-db-test:
name: DB Tests with MySQL on Linux/JDK ${{ matrix.java }}
# equals env.test_enterprise == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'Java EE/Jakarta EE') || contains(github.event.pull_request.labels.*.name, 'Micronaut') || contains(github.event.pull_request.labels.*.name, 'enterprise') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
fail-fast: false
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: test
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: Setup Env
run: |
echo "OPTS_TEST=-Dtest-unit-sys-prop.mysql.user=root -Dtest-unit-sys-prop.mysql.password=test -Dtest-unit-sys-prop.mysql.host=127.0.0.1" >> $GITHUB_ENV
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'test';\nFLUSH PRIVILEGES;\n" | mysql -h 127.0.0.1 --port 3306 -u root -ptest
- name: ide/db.metadata.model
run: .github/retry.sh ant $OPTS $OPTS_TEST -f ide/db.metadata.model test
- name: ide/db.mysql
run: .github/retry.sh ant $OPTS $OPTS_TEST -f ide/db.mysql test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
php:
name: PHP on ${{ matrix.os }}/JDK ${{ matrix.java }}
# equals env.test_php == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'PHP') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ${{ matrix.os }}
timeout-minutes: 120
env:
DISPLAY: ":99.0"
strategy:
matrix:
java: [ '17' ]
os: [ 'windows-latest', 'ubuntu-latest' ]
exclude:
- os: ${{ github.event_name == 'pull_request' && 'nothing' || 'windows-latest' }}
fail-fast: false
defaults:
run:
# hack: shorten paths to stay below 32k char process arg limit of windows (symptom: junit jvm spawn failures)
# note 'a' is apparently a mount point, we shouldn't go below that
# note actions don't care about the defaults here, its just for 'run:', they will keep using the long path which is fine
working-directory: ${{ contains(matrix.os, 'windows') && 'D:\\a\\ws' || github.workspace }}
shell: bash
steps:
- name: Symlink short paths for windows
if: contains(matrix.os, 'windows')
run: mklink /d D:\\a\\ws ${{ github.workspace }}
working-directory: ${{ github.workspace }}
shell: cmd
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
# linux specific setup
- name: Setup PHP
if: contains(matrix.os, 'ubuntu')
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
tools: pecl
extensions: xdebug
ini-values: xdebug.mode=debug
- name: Setup Xvfb
if: contains(matrix.os, 'ubuntu')
run: Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
# - - -
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: hudson.php
run: ant $OPTS -f php/hudson.php test
- name: languages.neon
run: ant $OPTS -f php/languages.neon test
- name: php.api.annotation
run: ant $OPTS -f php/php.api.annotation test
- name: php.api.documentation
run: ant $OPTS -f php/php.api.documentation test
- name: php.api.executable
run: ant $OPTS -f php/php.api.executable test
- name: php.api.framework
run: ant $OPTS -f php/php.api.framework test
- name: php.api.phpmodule
run: ant $OPTS -f php/php.api.phpmodule test
- name: php.api.testing
run: ant $OPTS -f php/php.api.testing test
- name: php.apigen
run: ant $OPTS -f php/php.apigen test
- name: php.atoum
run: ant $OPTS -f php/php.atoum test
- name: php.code.analysis
run: ant $OPTS -f php/php.code.analysis test
- name: php.codeception
run: ant $OPTS -f php/php.codeception test
- name: php.composer
run: ant $OPTS -f php/php.composer test
# needs X fails on Windows
- name: php.dbgp
if: contains(matrix.os, 'ubuntu')
run: ant $OPTS -f php/php.dbgp test
- name: php.doctrine2
run: ant $OPTS -f php/php.doctrine2 test
# longest step (~40min)
- name: php.editor
run: ant $OPTS -Dtest.config=stable -f php/php.editor test
- name: php.editor (unreliable tests)
run: .github/retry.sh ant $OPTS -Dtest.config=unreliable -f php/php.editor test
- name: php.latte
run: ant $OPTS -f php/php.latte test
- name: php.nette.tester
run: ant $OPTS -f php/php.nette.tester test
- name: php.phpunit
run: ant $OPTS -f php/php.phpunit test
- name: php.project
run: ant $OPTS -f php/php.project test
- name: php.refactoring
run: ant $OPTS -f php/php.refactoring test
- name: php.smarty
run: ant $OPTS -f php/php.smarty test
- name: php.symfony
run: ant $OPTS -f php/php.symfony test
- name: php.symfony2
run: ant $OPTS -f php/php.symfony2 test
- name: php.twig
run: ant $OPTS -f php/php.twig test
- name: php.zend
run: ant $OPTS -f php/php.zend test
- name: php.zend2
run: ant $OPTS -f php/php.zend2 test
- name: spellchecker.bindings.php
run: ant $OPTS -f php/spellchecker.bindings.php test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
lsp-test:
name: LSP tests on Linux/JDK ${{ matrix.java }}
# equals env.test_lsp == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'LSP') || contains(github.event.pull_request.labels.*.name, 'Gradle') || contains(github.event.pull_request.labels.*.name, 'Maven') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: ide/lsp.client
run: ant $OPTS -f ide/lsp.client test
- name: java/java.lsp.server
run: .github/retry.sh ant $OPTS -f java/java.lsp.server test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
graalvm-test:
name: GraalVM ${{ matrix.graal }} Tests
# equals env.test_graalvm == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'GraalVM') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
# TODO uses GraalVM 17 / 22.3.1 which is the last known release which offers all required language extensions
# GraalVM based on JDK 21+ doesn't support the 'gu' tool anymore - extensions are now regular application dependencies
graal: [ '22.3.1' ]
fail-fast: false
steps:
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: Setup GraalVM ${{ matrix.graal }}
run: |
URL=https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${{ matrix.graal }}/graalvm-ce-java17-linux-amd64-${{ matrix.graal }}.tar.gz
curl -L $URL | tar -xz
GRAALVM=`pwd`/graalvm-ce-java17-${{ matrix.graal }}
echo "JAVA_HOME=$GRAALVM" >> $GITHUB_ENV
- name: Setup GraalVM Languages (python, R, ruby and js)
run: $JAVA_HOME/bin/gu install --no-progress python R ruby js
- name: platform/core.network
run: ant $OPTS -f platform/core.network test
- name: platform/api.scripting
run: ant $OPTS -f platform/api.scripting test
- name: ide/libs.graalsdk
run: ant $OPTS -f ide/libs.graalsdk test
- name: webcommon/libs.graaljs
run: ant $OPTS -f webcommon/libs.graaljs test
- name: profiler/profiler.oql
run: ant $OPTS -f profiler/profiler.oql test
- name: java/nashorn.execution
run: ant $OPTS -f java/nashorn.execution test
- name: java/debugger.jpda.truffle
run: .github/retry.sh ant $OPTS -f java/debugger.jpda.truffle test
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
with:
paths: "./*/*/build/test/*/results/TEST-*.xml"
vscode-extension-test:
name: VSCode Extension Tests on JDK ${{ matrix.java }}
# equals env.test_vscode_extension == 'true'
if: ${{ contains(github.event.pull_request.labels.*.name, 'VSCode Extension') || contains(github.event.pull_request.labels.*.name, 'ci:all-tests') || github.event_name != 'pull_request' }}
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
java: [ '17' ]
fail-fast: false
steps:
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: ${{ env.DEFAULT_JAVA_DISTRIBUTION }}
- name: Set up node
uses: actions/setup-node@v4
with:
node-version: 18
- name: Setup Xvfb
run: |
echo "DISPLAY=:99.0" >> $GITHUB_ENV
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
- name: Download Build
uses: actions/download-artifact@v4
with:
name: build
- name: Extract
run: tar --zstd -xf build.tar.zst
- name: build-vscode-ext
run: |
cd java/java.lsp.server
ant $OPTS build-vscode-ext -D3rdparty.modules=.*externalcodeformatter.*
- name: test-vscode-ext
run: |
cd java/java.lsp.server
env "netbeans.extra.options=-J-Dnetbeans.logger.console=true" ant $OPTS test-vscode-ext
# cleanup job depends on everything so that it is forced to run last even if a long job fails early.
# 'paperwork' is left out intentionally, since it doesn't run unit tests (hopefully doesn't need restarts)
# and shouldn't prevent cleanup on validation failure - which might be common during dev time
cleanup:
name: Cleanup Workflow Artifacts
needs:
- base-build
- commit-validation
- build-system-test
- build-from-src-zip
- ide-modules-test
- platform-modules-test1
- platform-modules-test2
- java-modules-test
- java-hints-test
- java-debugger-test
- profiler-test
- build-tools
- webcommon-test
- php
- javafx-test
- groovy-test
- rust-test
- enterprise-test
- versioning-test
- lsp-test
- mysql-db-test
- graalvm-test
- vscode-extension-test
# cleanup if the primary build job succeeded and
# * nothing else failed (allows manual restarts)
# * the workflow got cancelled
if: ${{ always() && needs.base-build.result == 'success' && (!contains(needs.*.result, 'failure') || cancelled()) }}
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Delete Workspace Artifact
uses: geekyeggo/delete-artifact@v5
with:
name: build
useGlob: false
- name: Delete Dev Build Artifact
uses: geekyeggo/delete-artifact@v5
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:dev-build') && cancelled() }}
with:
name: dev-build_${{github.event.pull_request.number || github.run_id}}
useGlob: false