Merge pull request #916 from cherylking/fixFeaturesNPE #844
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow will build a Java project with Gradle | |
# For more information see: https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-java-with-gradle | |
name: Java CI with Gradle | |
on: | |
push: | |
branches: '**' | |
pull_request: | |
branches: [ main ] | |
jobs: | |
# UNIX BUILDS | |
build-unix: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
# test against latest update of each major Java version, as well as specific updates of LTS versions: | |
RUNTIME: [ol, wlp] | |
RUNTIME_VERSION: [24.0.0.10] | |
java: [21, 17, 11, 8] | |
exclude: | |
- java: 8 | |
RUNTIME: wlp | |
- java: 11 | |
RUNTIME: ol | |
name: ${{ matrix.RUNTIME }} ${{ matrix.RUNTIME_VERSION }}, Java ${{ matrix.java }}, Linux | |
steps: | |
# Checkout repos | |
- name: Checkout ci.gradle | |
uses: actions/checkout@v3 | |
- name: Setup Java ${{ matrix.java }} | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'adopt' | |
java-version: ${{ matrix.java }} | |
cache: 'gradle' | |
- name: Checkout ci.common | |
uses: actions/checkout@v3 | |
with: | |
repository: OpenLiberty/ci.common | |
path: ci.common | |
- name: Checkout ci.ant | |
uses: actions/checkout@v3 | |
with: | |
repository: OpenLiberty/ci.ant | |
path: ci.ant | |
# Cache mvn/gradle packages | |
- name: Cache Maven packages | |
uses: actions/cache@v3 | |
with: | |
path: ~/.m2 | |
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} | |
restore-keys: ${{ runner.os }}-m2 | |
- name: Cache Gradle packages | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
# Install dependencies | |
- name: Install ci.ant and ci.common | |
run: | | |
mvn -V clean install -f ci.ant --batch-mode --no-transfer-progress --errors -DtrimStackTrace=false -DskipTests | |
mvn -V clean install -f ci.common --batch-mode --no-transfer-progress --errors -DtrimStackTrace=false -DskipTests | |
# Run tests that require a minimum of Java 17 or later | |
- name: Run tests that require a minimum of Java 17 or later | |
if: ${{ matrix.java == '17' || matrix.java == '21' }} | |
run: | |
./gradlew clean install check -P"test.include"="**/TestSpringBootApplication30*,**/TestCompileJSPSource17*" -Druntime=${{ matrix.RUNTIME }} -DruntimeVersion="${{ matrix.RUNTIME_VERSION }}" --stacktrace --info --warning-mode=all | |
# Run tests | |
- name: Run tests with Gradle on Ubuntu | |
run: | |
./gradlew clean install check -P"test.exclude"="**/TestSpringBootApplication30*,**/TestCompileJSPSource17*,**/DevContainerTest*" -Druntime=${{ matrix.RUNTIME }} -DruntimeVersion="${{ matrix.RUNTIME_VERSION }}" --stacktrace --info --warning-mode=all | |
# Copy build reports and upload artifact if build failed | |
- name: Copy build/report/tests/test for upload | |
if: ${{ failure() }} | |
run: | | |
mkdir -p ${BUILD_REPORTS_PATH} | |
cp -r test ${BUILD_REPORTS_PATH} | |
working-directory: build/reports/tests | |
env: | |
BUILD_REPORTS_PATH: /buildReports/${{runner.os}}/java${{matrix.java}}/${{matrix.RUNTIME}}-${{matrix.RUNTIME_VERSION}}/ | |
- uses: actions/upload-artifact@v3 | |
if: ${{ failure() }} | |
with: | |
name: buildReportsArtifactLinux | |
path: /buildReports | |
retention-days: 3 | |
# WINDOWS BUILDS | |
build-windows: | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
# test against latest update of each major Java version, as well as specific updates of LTS versions: | |
RUNTIME: [ol, wlp] | |
RUNTIME_VERSION: [24.0.0.10] | |
java: [21, 17, 11, 8] | |
exclude: | |
- java: 8 | |
RUNTIME: ol | |
- java: 11 | |
RUNTIME: wlp | |
name: ${{ matrix.RUNTIME }} ${{ matrix.RUNTIME_VERSION }}, Java ${{ matrix.java }}, Windows | |
env: | |
TEST_EXCLUDE: ${{ ((matrix.java == '8') && '**/TestCreateWithConfigDir*,**/Polling*,**/LibertyTest*,**/GenerateFeaturesTest*,**/TestSpringBootApplication30*,**/TestCompileJSPSource17*,**/DevContainerTest*') || '**/Polling*,**/LibertyTest*,**/GenerateFeaturesTest*,**/TestSpringBootApplication30*,**/TestCompileJSPSource17*,**/DevContainerTest*' }} | |
steps: | |
# Checkout repos | |
- name: Checkout ci.gradle | |
uses: actions/checkout@v3 | |
- name: Setup Java ${{ matrix.java }} | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'adopt' | |
java-version: ${{ matrix.java }} | |
cache: 'gradle' | |
# Moving and cloning to C: drive for Windows for more disk space | |
- name: Clone ci.ant, ci.common, ci.gradle repos to C drive | |
run: | | |
cp -r D:/a/ci.gradle/ci.gradle C:/ci.gradle | |
git clone https://github.com/OpenLiberty/ci.common.git C:/ci.common | |
git clone https://github.com/OpenLiberty/ci.ant.git C:/ci.ant | |
# Cache mvn/gradle packages | |
- name: Cache Maven packages | |
uses: actions/cache@v3 | |
with: | |
path: ~/.m2 | |
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} | |
restore-keys: ${{ runner.os }}-m2 | |
- name: Cache Gradle packages | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
# Install ci.ant | |
- name: Install ci.ant | |
working-directory: C:/ci.ant | |
run: mvn -V clean install --batch-mode --no-transfer-progress --errors -DtrimStackTrace=false -DskipTests | |
# Install ci.common | |
- name: Install ci.common | |
working-directory: C:/ci.common | |
run: mvn -V clean install --batch-mode --no-transfer-progress --errors -DtrimStackTrace=false -DskipTests | |
# Run tests that require a minimum of Java 17 or later | |
- name: Run tests that require a minimum of Java 17 or later | |
if: ${{ matrix.java == '17' || matrix.java == '21' }} | |
run: | |
./gradlew clean install check -P"test.include"="**/TestSpringBootApplication30*,**/TestCompileJSPSource17*" -Druntime=${{ matrix.RUNTIME }} -DruntimeVersion="${{ matrix.RUNTIME_VERSION }}" --stacktrace --info --no-daemon | |
# Run tests | |
- name: Run tests with Gradle on Windows | |
working-directory: C:/ci.gradle | |
# LibertyTest is excluded because test0_run hangs | |
# For Java 8, TestCreateWithConfigDir is excluded because test_micro_clean_liberty_plugin_variable_config runs out of memory | |
run: ./gradlew clean install check -P"test.exclude"="${{env.TEST_EXCLUDE}}" -Druntime=${{ matrix.RUNTIME }} -DruntimeVersion="${{ matrix.RUNTIME_VERSION }}" --stacktrace --info --no-daemon | |
timeout-minutes: 75 | |
# Copy build reports and upload artifact if build failed | |
- name: Copy build/report/tests/test for upload | |
if: ${{ failure() }} | |
working-directory: C:/ci.gradle | |
run: cp -r build/reports/tests/test D:/buildReports/${{runner.os}}/java${{matrix.java}}/${{matrix.RUNTIME}}-${{matrix.RUNTIME_VERSION}}/ | |
- uses: actions/upload-artifact@v3 | |
if: ${{ failure() }} | |
with: | |
name: buildReportsArtifactWindows | |
path: D:/buildReports | |
retention-days: 3 |