diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 000000000000..1a68a03c532e --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,99 @@ +# +# 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. +# + +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ support/1.15 ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ support/1.15 ] + schedule: + - cron: '22 22 * * 2' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'go', 'java', 'javascript', 'python' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup Java JDK + uses: actions/setup-java@v4.7.1 + with: + java-version: 8 + distribution: temurin + cache: gradle + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + if: matrix.language != 'java' + # â„šī¸ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + - run: ./gradlew dev installDist --no-daemon --no-build-cache + if: matrix.language == 'java' + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 000000000000..04d139437dd4 --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,460 @@ +# +# 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: develop + +on: + push: + branches: [ "support/1.15" ] + pull_request: + branches: [ "support/1.15" ] + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + java-version: '8' + distribution: 'liberica' + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + gradle-version: wrapper + - name: Run 'build install javadoc spotlessCheck rat checkPom resolveDependencies pmdMain' with Gradle + run: ./gradlew --console=plain --no-daemon build install javadoc spotlessCheck rat checkPom resolveDependencies pmdMain -x test + + apiCheck: + needs: build + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + distribution: [ 'liberica' ] + java: ['8'] + runs-on: ${{ matrix.os }} + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + steps: + - uses: actions/checkout@v3 + - name: Set up JDK + uses: actions/setup-java@v3 + with: + distribution: ${{ matrix.distribution }} + java-version: | + 8 + - name: Set JAVA_TEST_PATH to 8 + run: | + echo "JAVA_TEST_PATH=${JAVA_HOME_8_X64}" >> $GITHUB_ENV + if: matrix.java == '8' + - name: Java API Check + run: | + GRADLE_JVM_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_VERSION=8 # Use jdk 8 for build + JAVA_TEST_VERSION=${{ matrix.java }} + cp gradlew gradlewStrict + sed -e 's/JAVA_HOME/GRADLE_JVM/g' -i.back gradlewStrict + GRADLE_JVM=${GRADLE_JVM_PATH} JAVA_TEST_PATH=${JAVA_TEST_PATH} ./gradlewStrict \ + -PcompileJVM=${JAVA_BUILD_PATH} \ + -PcompileJVMVer=${JAVA_BUILD_VERSION} \ + -PtestJVM=${JAVA_TEST_PATH} \ + -PtestJVMVer=${JAVA_TEST_VERSION} \ + -PtestJava8Home=${JAVA_HOME_8_X64} \ + japicmp --console=plain --no-daemon + + unitTest: + needs: build + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + distribution: ['liberica'] + java: ['8'] + runs-on: ${{ matrix.os }} + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: ${{ matrix.distribution }} + java-version: | + 8 + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + gradle-version: wrapper + - name: Set JAVA_TEST_PATH to 8 + run: | + echo "JAVA_TEST_PATH=${JAVA_HOME_8_X64}" >> $GITHUB_ENV + if: matrix.java == '8' + - name: Run unit tests + run: | + GRADLE_JVM_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_VERSION=8 # Use jdk 8 for build + JAVA_TEST_VERSION=${{ matrix.java }} + cp gradlew gradlewStrict + sed -e 's/JAVA_HOME/GRADLE_JVM/g' -i.back gradlewStrict + GRADLE_JVM=${GRADLE_JVM_PATH} JAVA_TEST_PATH=${JAVA_TEST_PATH} ./gradlewStrict \ + --parallel \ + -PcompileJVM=${JAVA_BUILD_PATH} \ + -PcompileJVMVer=${JAVA_BUILD_VERSION} \ + -PtestJVM=${JAVA_TEST_PATH} \ + -PtestJVMVer=${JAVA_TEST_VERSION} \ + -PtestJava8Home=${JAVA_HOME_8_X64} \ + test --console=plain --no-daemon + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: unit-test-reports-${{ matrix.os }}-${{ matrix.java }} + path: build/reports + retention-days: 5 + + integrationTest: + needs: [apiCheck, unitTest] + strategy: + matrix: + os: [ubuntu-latest] + distribution: ['liberica'] + java: ['8'] + runs-on: ${{ matrix.os }} + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: ${{ matrix.distribution }} + java-version: | + 8 + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + gradle-version: wrapper + - name: Run integration tests + run: | + GRADLE_JVM_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_VERSION=8 + JAVA_TEST_VERSION=${{ matrix.java }} + cp gradlew gradlewStrict + sed -e 's/JAVA_HOME/GRADLE_JVM/g' -i.back gradlewStrict + GRADLE_JVM=${GRADLE_JVM_PATH} JAVA_TEST_PATH=${JAVA_TEST_PATH} ./gradlewStrict \ + --parallel \ + -PparallelDunit \ + --max-workers=12 \ + -PcompileJVM=${JAVA_BUILD_PATH} \ + -PcompileJVMVer=${JAVA_BUILD_VERSION} \ + -PtestJVM=${JAVA_TEST_PATH} \ + -PtestJVMVer=${JAVA_TEST_VERSION} \ + -PtestJava8Home=${JAVA_HOME_8_X64} \ + integrationTest --console=plain --no-daemon + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: integration-test-reports-${{ matrix.os }}-${{ matrix.java }} + path: build/reports + retention-days: 5 + + acceptanceTest: + needs: [apiCheck, unitTest] + strategy: + matrix: + os: [ubuntu-latest] + distribution: ['liberica'] + java: ['8'] + runs-on: ${{ matrix.os }} + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: ${{ matrix.distribution }} + java-version: ${{ matrix.java }} + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + gradle-version: wrapper + - name: Run acceptance tests + run: | + GRADLE_JVM_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_VERSION=8 + JAVA_TEST_VERSION=8 + cp gradlew gradlewStrict + sed -e 's/JAVA_HOME/GRADLE_JVM/g' -i.back gradlewStrict + GRADLE_JVM=${GRADLE_JVM_PATH} JAVA_TEST_PATH=${JAVA_TEST_PATH} ./gradlewStrict \ + --no-parallel \ + -PcompileJVM=${JAVA_BUILD_PATH} \ + -PcompileJVMVer=${JAVA_BUILD_VERSION} \ + -PtestJVM=${JAVA_TEST_PATH} \ + -PtestJVMVer=${JAVA_TEST_VERSION} \ + -PtestJava8Home=${JAVA_HOME_8_X64} \ + acceptanceTest --console=plain --no-daemon + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: acceptance-test-reports-${{ matrix.os }}-${{ matrix.java }} + path: build/reports + retention-days: 5 + + wanDistributedTestCore: + needs: [apiCheck, unitTest] + strategy: + matrix: + os: [ubuntu-latest] + distribution: ['liberica'] + java: ['8'] + runs-on: ${{ matrix.os }} + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: ${{ matrix.distribution }} + java-version: ${{ matrix.java }} + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + gradle-version: wrapper + - name: Run wan distributed tests + run: | + GRADLE_JVM_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_VERSION=8 + JAVA_TEST_VERSION=8 + cp gradlew gradlewStrict + sed -e 's/JAVA_HOME/GRADLE_JVM/g' -i.back gradlewStrict + GRADLE_JVM=${GRADLE_JVM_PATH} JAVA_TEST_PATH=${JAVA_TEST_PATH} ./gradlewStrict \ + --parallel \ + -PparallelDunit \ + --max-workers=6 \ + -PcompileJVM=${JAVA_BUILD_PATH} \ + -PcompileJVMVer=${JAVA_BUILD_VERSION} \ + -PtestJVM=${JAVA_TEST_PATH} \ + -PtestJVMVer=${JAVA_TEST_VERSION} \ + -PtestJava8Home=${JAVA_HOME_8_X64} \ + geode-wan:distributedTest --console=plain --no-daemon + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: wan-distributed-test-reports-${{ matrix.os }}-${{ matrix.java }} + path: build/reports + retention-days: 5 + + cqDistributedTestCore: + needs: [apiCheck, unitTest] + strategy: + matrix: + os: [ubuntu-latest] + distribution: ['liberica'] + java: ['8'] + runs-on: ${{ matrix.os }} + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: ${{ matrix.distribution }} + java-version: ${{ matrix.java }} + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + gradle-version: wrapper + - name: Run cq distributed tests + run: | + GRADLE_JVM_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_VERSION=8 + JAVA_TEST_VERSION=8 + cp gradlew gradlewStrict + sed -e 's/JAVA_HOME/GRADLE_JVM/g' -i.back gradlewStrict + GRADLE_JVM=${GRADLE_JVM_PATH} JAVA_TEST_PATH=${JAVA_TEST_PATH} ./gradlewStrict \ + --parallel -PparallelDunit --max-workers=6 \ + -PcompileJVM=${JAVA_BUILD_PATH} \ + -PcompileJVMVer=${JAVA_BUILD_VERSION} \ + -PtestJVM=${JAVA_TEST_PATH} \ + -PtestJVMVer=${JAVA_TEST_VERSION} \ + -PtestJava8Home=${JAVA_HOME_8_X64} \ + geode-cq:distributedTest --console=plain --no-daemon + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: cq-distributed-test-reports-${{ matrix.os }}-${{ matrix.java }} + path: build/reports + retention-days: 5 + + luceneDistributedTestCore: + needs: [apiCheck, unitTest] + strategy: + matrix: + os: [ubuntu-latest] + distribution: ['liberica'] + java: ['8'] + runs-on: ${{ matrix.os }} + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: ${{ matrix.distribution }} + java-version: ${{ matrix.java }} + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + gradle-version: wrapper + - name: Run lucene distributed tests + run: | + GRADLE_JVM_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_VERSION=8 + JAVA_TEST_VERSION=8 + cp gradlew gradlewStrict + sed -e 's/JAVA_HOME/GRADLE_JVM/g' -i.back gradlewStrict + GRADLE_JVM=${GRADLE_JVM_PATH} JAVA_TEST_PATH=${JAVA_TEST_PATH} ./gradlewStrict \ + --parallel \ + -PparallelDunit \ + --max-workers=6 \ + -PcompileJVM=${JAVA_BUILD_PATH} \ + -PcompileJVMVer=${JAVA_BUILD_VERSION} \ + -PtestJVM=${JAVA_TEST_PATH} \ + -PtestJVMVer=${JAVA_TEST_VERSION} \ + -PtestJava8Home=${JAVA_HOME_8_X64} \ + geode-lucene:distributedTest --console=plain --no-daemon + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: lucene-distributed-test-reports-${{ matrix.os }}-${{ matrix.java }} + path: build/reports + retention-days: 5 + + mgmtDistributedTestCore: + needs: [apiCheck, unitTest] + strategy: + matrix: + os: [ubuntu-latest] + distribution: ['liberica'] + java: ['8'] + runs-on: ${{ matrix.os }} + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: ${{ matrix.distribution }} + java-version: ${{ matrix.java }} + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + gradle-version: wrapper + - name: Run gfsh, web-mgmt, web distributed tests + run: | + GRADLE_JVM_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_VERSION=8 + JAVA_TEST_VERSION=8 + cp gradlew gradlewStrict + sed -e 's/JAVA_HOME/GRADLE_JVM/g' -i.back gradlewStrict + GRADLE_JVM=${GRADLE_JVM_PATH} JAVA_TEST_PATH=${JAVA_TEST_PATH} ./gradlewStrict \ + --no-parallel \ + --max-workers=6 \ + -PcompileJVM=${JAVA_BUILD_PATH} \ + -PcompileJVMVer=${JAVA_BUILD_VERSION} \ + -PtestJVM=${JAVA_TEST_PATH} \ + -PtestJVMVer=${JAVA_TEST_VERSION} \ + -PtestJava8Home=${JAVA_HOME_8_X64} \ + geode-gfsh:distributedTest \ + geode-web:distributedTest \ + geode-web-management:distributedTest --console=plain --no-daemon + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: mgmt-distributed-test-reports-${{ matrix.os }}-${{ matrix.java }} + path: build/reports + retention-days: 5 + + + assemblyDistributedTestCore: + needs: [ apiCheck, unitTest ] + strategy: + matrix: + os: [ ubuntu-latest ] + distribution: [ 'liberica' ] + java: [ '8' ] + runs-on: ${{ matrix.os }} + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: ${{ matrix.distribution }} + java-version: ${{ matrix.java }} + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + gradle-version: wrapper + - name: Run assembly, connectors, old-client, extensions distributed tests + run: | + GRADLE_JVM_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_PATH=${JAVA_HOME_8_X64} + JAVA_BUILD_VERSION=8 + JAVA_TEST_VERSION=8 + cp gradlew gradlewStrict + sed -e 's/JAVA_HOME/GRADLE_JVM/g' -i.back gradlewStrict + GRADLE_JVM=${GRADLE_JVM_PATH} JAVA_TEST_PATH=${JAVA_TEST_PATH} ./gradlewStrict \ + --no-parallel \ + --max-workers=6 \ + -PcompileJVM=${JAVA_BUILD_PATH} \ + -PcompileJVMVer=${JAVA_BUILD_VERSION} \ + -PtestJVM=${JAVA_TEST_PATH} \ + -PtestJVMVer=${JAVA_TEST_VERSION} \ + -PtestJava8Home=${JAVA_HOME_8_X64} \ + geode-assembly:distributedTest \ + geode-dunit:distributedTest \ + geode-connectors:distributedTest \ + geode-old-client:distributedTest \ + extensions:geode-modules:distributedTest \ + extensions:geode-modules-tomcat10:distributedTest --console=plain --no-daemon + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: assembly-distributed-test-reports-${{ matrix.os }}-${{ matrix.java }} + path: build/reports + retention-days: 5