Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
246 changes: 133 additions & 113 deletions .github/workflows/sql-test-and-build-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,137 +26,157 @@ jobs:
build-linux:
needs: Get-CI-Image-Tag
strategy:
# Run all jobs
fail-fast: false
matrix:
java: [21, 24]
test-type: ['unit', 'integration', 'doc']
runs-on: ubuntu-latest
container:
# using the same image which is used by opensearch-build team to build the OpenSearch Distribution
# this image tag is subject to change as more dependencies and updates will arrive over time
image: ${{ needs.Get-CI-Image-Tag.outputs.ci-image-version-linux }}
options: ${{ needs.Get-CI-Image-Tag.outputs.ci-image-start-options }}

steps:
- name: Run start commands
run: ${{ needs.Get-CI-Image-Tag.outputs.ci-image-start-command }}

- uses: actions/checkout@v4

- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}

- name: Build with Gradle
run: |
chown -R 1000:1000 `pwd`
su `id -un 1000` -c "./gradlew --continue build"

- name: Create Artifact Path
run: |
mkdir -p opensearch-sql-builds
cp -r ./plugin/build/distributions/*.zip opensearch-sql-builds/

# This step uses the codecov-action Github action: https://github.com/codecov/codecov-action
- name: Upload SQL Coverage Report
if: ${{ always() }}
uses: codecov/codecov-action@v4
continue-on-error: true
with:
flags: sql-engine
token: ${{ secrets.CODECOV_TOKEN }}

- name: Upload Artifacts
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: opensearch-sql-ubuntu-latest-${{ matrix.java }}
path: opensearch-sql-builds

- name: Upload test reports
if: ${{ always() }}
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: test-reports-ubuntu-latest-${{ matrix.java }}
path: |
sql/build/reports/**
ppl/build/reports/**
core/build/reports/**
common/build/reports/**
opensearch/build/reports/**
integ-test/build/reports/**
protocol/build/reports/**
legacy/build/reports/**
plugin/build/reports/**
doctest/build/testclusters/docTestCluster-0/logs/*
integ-test/build/testclusters/*/logs/*
- name: Run start commands
run: ${{ needs.Get-CI-Image-Tag.outputs.ci-image-start-command }}

- uses: actions/checkout@v4

- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}

- name: Build and Test
run: |
chown -R 1000:1000 `pwd`
if [ "${{ matrix.test-type }}" = "unit" ]; then
su `id -un 1000` -c "./gradlew --continue build -x integTest -x doctest"
elif [ "${{ matrix.test-type }}" = "integration" ]; then
su `id -un 1000` -c "./gradlew --continue integTest"
else
su `id -un 1000` -c "./gradlew --continue doctest"
fi

- name: Create Artifact Path
if: ${{ matrix.test-type == 'unit' }}
run: |
mkdir -p opensearch-sql-builds
cp -r ./plugin/build/distributions/*.zip opensearch-sql-builds/

- name: Upload SQL Coverage Report
if: ${{ always() }}
uses: codecov/codecov-action@v4
continue-on-error: true
with:
flags: sql-engine
token: ${{ secrets.CODECOV_TOKEN }}

- name: Upload Artifacts
if: ${{ matrix.test-type == 'unit' }}
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: opensearch-sql-ubuntu-latest-${{ matrix.java }}
path: opensearch-sql-builds

- name: Upload test reports
if: ${{ always() }}
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: test-reports-ubuntu-latest-${{ matrix.java }}-${{ matrix.test-type }}
path: |
sql/build/reports/**
ppl/build/reports/**
core/build/reports/**
common/build/reports/**
opensearch/build/reports/**
integ-test/build/reports/**
protocol/build/reports/**
legacy/build/reports/**
plugin/build/reports/**
doctest/build/testclusters/docTestCluster-0/logs/*
integ-test/build/testclusters/*/logs/*

build-windows-macos:
strategy:
# Run all jobs
fail-fast: false
matrix:
entry:
- { os: windows-latest, java: 21, os_build_args: -x doctest -PbuildPlatform=windows }
- { os: windows-latest, java: 24, os_build_args: -x doctest -PbuildPlatform=windows }
- { os: macos-13, java: 21 }
- { os: macos-13, java: 24 }
- { os: windows-latest, java: 21, os_build_args: -PbuildPlatform=windows }
- { os: windows-latest, java: 24, os_build_args: -PbuildPlatform=windows }
- { os: macos-13, java: 21, os_build_args: '' }
- { os: macos-13, java: 24, os_build_args: '' }
test-type: ['unit', 'integration', 'doc']
exclude:
# Exclude doctest for Windows
- test-type: doc
entry: { os: windows-latest, java: 21, os_build_args: -PbuildPlatform=windows }
- test-type: doc
entry: { os: windows-latest, java: 24, os_build_args: -PbuildPlatform=windows }
runs-on: ${{ matrix.entry.os }}

steps:
- uses: actions/checkout@v4

- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.entry.java }}

- name: Build with Gradle
run: ./gradlew --continue build ${{ matrix.entry.os_build_args }}

- name: Create Artifact Path
run: |
mkdir -p opensearch-sql-builds
cp -r ./plugin/build/distributions/*.zip opensearch-sql-builds/

# This step uses the codecov-action Github action: https://github.com/codecov/codecov-action
- name: Upload SQL Coverage Report
if: ${{ always() && matrix.entry.os == 'ubuntu-latest' }}
uses: codecov/codecov-action@v4
continue-on-error: true
with:
flags: sql-engine
token: ${{ secrets.CODECOV_TOKEN }}

- name: Upload Artifacts
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: opensearch-sql-${{ matrix.entry.os }}-${{ matrix.entry.java }}
path: opensearch-sql-builds

- name: Upload test reports
if: ${{ always() && matrix.entry.os == 'ubuntu-latest' }}
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: test-reports-${{ matrix.entry.os }}-${{ matrix.entry.java }}
path: |
sql/build/reports/**
ppl/build/reports/**
core/build/reports/**
common/build/reports/**
opensearch/build/reports/**
integ-test/build/reports/**
protocol/build/reports/**
legacy/build/reports/**
plugin/build/reports/**
doctest/build/testclusters/docTestCluster-0/logs/*
integ-test/build/testclusters/*/logs/*
- uses: actions/checkout@v4

- name: Set up JDK ${{ matrix.entry.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.entry.java }}

- name: Build and Test
run: |
if [ "${{ matrix.test-type }}" = "unit" ]; then
./gradlew --continue build -x integTest -x doctest ${{ matrix.entry.os_build_args }}
elif [ "${{ matrix.test-type }}" = "integration" ]; then
./gradlew --continue integTest ${{ matrix.entry.os_build_args }}
else
./gradlew --continue doctest ${{ matrix.entry.os_build_args }}
fi
shell: bash

- name: Create Artifact Path
if: ${{ matrix.test-type == 'unit' }}
run: |
mkdir -p opensearch-sql-builds
cp -r ./plugin/build/distributions/*.zip opensearch-sql-builds/

- name: Upload SQL Coverage Report
if: ${{ always() && matrix.entry.os == 'ubuntu-latest' }}
uses: codecov/codecov-action@v4
continue-on-error: true
with:
flags: sql-engine
token: ${{ secrets.CODECOV_TOKEN }}

- name: Upload Artifacts
if: ${{ matrix.test-type == 'unit' }}
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: opensearch-sql-${{ matrix.entry.os }}-${{ matrix.entry.java }}
path: opensearch-sql-builds

- name: Upload test reports
if: ${{ always() }}
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: test-reports-${{ matrix.entry.os }}-${{ matrix.entry.java }}-${{ matrix.test-type }}
path: |
sql/build/reports/**
ppl/build/reports/**
core/build/reports/**
common/build/reports/**
opensearch/build/reports/**
integ-test/build/reports/**
protocol/build/reports/**
legacy/build/reports/**
plugin/build/reports/**
doctest/build/testclusters/docTestCluster-0/logs/*
integ-test/build/testclusters/*/logs/*

bwc-tests:
needs: Get-CI-Image-Tag
Expand Down
2 changes: 1 addition & 1 deletion DEVELOPER_GUIDE.rst
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ Gradle Build

Most of the time you just need to run ``./gradlew build`` which will make sure you pass all checks and testing. While you're developing, you may want to run specific Gradle task only. In this case, you can run ./gradlew with task name which only triggers the task along with those it depends on. Here is a list for common tasks:

For faster local iterations, the build can skip integration and doctests. ``./gradlew build --parallel -x integTest -x doctest``.
For faster local iterations, skip integration tests. ``./gradlew build -x integTest``.

.. list-table::
:widths: 30 50
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -513,20 +513,20 @@ public String loadResultIndexMappings() {
@RequiredArgsConstructor
public class FlintDatasetMock {

final String query;
final String refreshQuery;
public final String query;
public final String refreshQuery;
final FlintIndexType indexType;
final String indexName;
public final String indexName;
boolean isLegacy = false;
boolean isSpecialCharacter = false;
String latestId;
public String latestId;

public FlintDatasetMock isLegacy(boolean isLegacy) {
this.isLegacy = isLegacy;
return this;
}

FlintDatasetMock isSpecialCharacter(boolean isSpecialCharacter) {
public FlintDatasetMock isSpecialCharacter(boolean isSpecialCharacter) {
this.isSpecialCharacter = isSpecialCharacter;
return this;
}
Expand Down
Loading
Loading