fix: handle repeated sort keys and sort as int #4957
Workflow file for this run
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 runs SDK related jobs for OpenMLDB | |
name: SDK | |
on: | |
push: | |
branches: | |
- main | |
paths-ignore: | |
- "docs/**" | |
- "demo/**" | |
- "docker/**" | |
- "image/**" | |
- "release/**" | |
- "tools/**" | |
- "*.md" | |
- 'benchmark/**' | |
tags: | |
- v* | |
pull_request: | |
paths-ignore: | |
- "docs/**" | |
- "demo/**" | |
- "docker/**" | |
- "image/**" | |
- "release/**" | |
- "tools/**" | |
- "*.md" | |
- 'benchmark/**' | |
workflow_dispatch: | |
env: | |
GIT_SUBMODULE_STRATEGY: recursive | |
NPROC: 2 # default Parallel build number for GitHub's Linux runner | |
EXAMPLES_ENABLE: OFF # turn off hybridse's example code | |
HYBRIDSE_TESTING_ENABLE: OFF # turn off hybridse's test code | |
jobs: | |
java-sdk: | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/4paradigm/hybridsql:latest | |
env: | |
SQL_JAVASDK_ENABLE: ON | |
OPENMLDB_BUILD_TARGET: "cp_native_so openmldb" | |
MAVEN_OPTS: -Duser.home=/github/home | |
SPARK_HOME: /tmp/spark/ | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-java@v2 | |
with: | |
distribution: "adopt" | |
java-version: "8" | |
server-id: ossrh | |
server-username: MAVEN_USERNAME | |
server-password: MAVEN_TOKEN | |
gpg-passphrase: GPG_PASSPHRASE # env variable for GPG private key passphrase | |
- name: Import GPG key | |
id: import_gpg | |
if: github.event_name == 'push' | |
uses: crazy-max/ghaction-import-gpg@v4 | |
with: | |
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} | |
- name: Cache local Maven repository | |
uses: actions/cache@v2 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('java/**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-maven- | |
- name: prepare release | |
if: github.event_name == 'push' | |
run: | | |
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') | |
VERSION=${VERSION#v} | |
./java/prepare_release.sh "$VERSION" | |
- name: build jsdk | |
run: | | |
make build | |
- name: upload linux library | |
if: github.event_name == 'push' | |
uses: actions/upload-artifact@v2 | |
with: | |
name: shared-library-${{ github.sha }} | |
path: | | |
java/openmldb-native/src/main/resources/libsql_jsdk.so | |
java/hybridse-native/src/main/resources/libhybridse_jsdk_core.so | |
- name: start services | |
run: | | |
sh steps/ut_zookeeper.sh start | |
sh steps/download_openmldb_spark.sh $SPARK_HOME | |
cd onebox && sh start_onebox.sh && sh start_onebox.sh standalone && cd - || exit | |
- name: run java modules smoke test | |
working-directory: java | |
run: | | |
./mvnw --batch-mode test | |
- name: upload java ut results | |
if: always() | |
uses: actions/upload-artifact@v2 | |
with: | |
name: linux-ut-result-java-${{ github.sha }} | |
path: | | |
java/*/target/**/TEST-*.xml | |
- name: deploy | |
if: github.event_name == 'push' | |
working-directory: java | |
run: | | |
./mvnw --batch-mode deploy -DskipTests=true -Dscalatest.skip=true | |
env: | |
MAVEN_OPTS: -Duser.home=/github/home | |
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} | |
MAVEN_TOKEN: ${{ secrets.OSSRH_TOKEN }} | |
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} | |
- name: maven coverage | |
working-directory: java | |
run: | | |
./mvnw --batch-mode prepare-package | |
./mvnw --batch-mode scoverage:report | |
- name: upload maven coverage | |
uses: codecov/codecov-action@v3 | |
with: | |
files: java/**/target/site/jacoco/jacoco.xml,java/**/target/scoverage.xml | |
name: coverage-java | |
fail_ci_if_error: true | |
verbose: true | |
- name: stop services | |
run: | | |
cd onebox && ./stop_all.sh && cd - || exit | |
sh steps/ut_zookeeper.sh stop | |
java-sdk-mac: | |
# mac job for java sdk. steps are almost same with job 'java-sdk' | |
# except mvn deploy won't target all modules, just hybridse-native & openmldb-native | |
# the job only run on tag push or manual workflow dispatch due to no test runs | |
runs-on: macos-latest | |
needs: | |
- java-sdk | |
if: github.event_name == 'push' | |
env: | |
SQL_JAVASDK_ENABLE: ON | |
OPENMLDB_BUILD_TARGET: "cp_native_so openmldb" | |
NPROC: 3 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache local Maven repository | |
uses: actions/cache@v3 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('java/**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-maven- | |
- name: Cache thirdparty | |
uses: actions/cache@v3 | |
with: | |
path: | | |
.deps/ | |
thirdsrc | |
key: ${{ runner.os }}-thirdparty-${{ hashFiles('third-party/**/CMakeLists.txt', 'third-party/**/*.cmake', 'third-party/**/*.sh') }} | |
- name: prepare release | |
if: github.event_name == 'push' | |
run: | | |
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') | |
VERSION=${VERSION#v} | |
VARIANT_TYPE=macos ./java/prepare_release.sh "$VERSION" | |
- uses: actions/setup-java@v3 | |
with: | |
distribution: "adopt" | |
java-version: "8" | |
server-id: ossrh | |
server-username: MAVEN_USERNAME | |
server-password: MAVEN_TOKEN | |
gpg-passphrase: GPG_PASSPHRASE # env variable for GPG private key passphrase | |
- name: Import GPG key | |
id: import_gpg | |
uses: crazy-max/ghaction-import-gpg@v5 | |
with: | |
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} | |
- name: build jsdk | |
run: | | |
make build | |
- name: mvn deploy | |
working-directory: java | |
run: | | |
# by convention only native submodule has variant release | |
# so it is a bit tricky to compile and deploy that | |
# firstly run `maven install` install things locally | |
# then selectly `mvn deploy` for hybridse-native & openmldb-native | |
./mvnw --batch-mode clean install -DskipTests=true -Dscalatest.skip=true | |
./mvnw --batch-mode -pl hybridse-native,openmldb-native deploy | |
env: | |
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} | |
MAVEN_TOKEN: ${{ secrets.OSSRH_TOKEN }} | |
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} | |
- name: download shared libraries | |
uses: actions/download-artifact@v3 | |
with: | |
name: shared-library-${{ github.sha }} | |
path: java | |
- name: prepare deploy allinone | |
run: | | |
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') | |
VERSION=${VERSION#v} | |
VARIANT_TYPE=allinone ./java/prepare_release.sh "$VERSION" | |
- name: mvn deploy allinone | |
working-directory: java | |
run: | | |
# by convention only native submodule has variant release | |
# so it is a bit tricky to compile and deploy that | |
# firstly run `maven install` install things locally | |
# then selectly `mvn deploy` for hybridse-native & openmldb-native | |
./mvnw --batch-mode clean install -DskipTests=true -Dscalatest.skip=true | |
./mvnw --batch-mode -pl hybridse-native,openmldb-native deploy | |
env: | |
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} | |
MAVEN_TOKEN: ${{ secrets.OSSRH_TOKEN }} | |
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} | |
python-sdk: | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/4paradigm/hybridsql:latest | |
env: | |
SQL_PYSDK_ENABLE: ON | |
OPENMLDB_BUILD_TARGET: "cp_python_sdk_so openmldb" | |
steps: | |
- uses: actions/checkout@v2 | |
- name: prepare release | |
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
run: | | |
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') | |
VERSION=${VERSION#v} | |
bash steps/prepare_release.sh "$VERSION" | |
- name: build pysdk and sqlalchemy | |
run: | | |
make build | |
- name: prepare python deps | |
run: | | |
pip install twine "urllib3>=1.26.0,<2.0.0" | |
yum install -y net-tools | |
- name: test sqlalchemy and generate coverage report | |
run: | | |
bash steps/test_python.sh | |
- name: upload python ut results | |
if: always() | |
uses: actions/upload-artifact@v2 | |
with: | |
name: linux-ut-result-python-${{ github.sha }} | |
path: | | |
python/openmldb_sdk/tests/pytest.xml | |
python/openmldb_tool/tests/pytest.xml | |
- name: upload python coverage to codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
name: coverage-python | |
files: python/openmldb_sdk/tests/coverage.xml,python/openmldb_tool/tests/coverage.xml | |
fail_ci_if_error: true | |
verbose: true | |
- name: upload to pypi | |
if: > | |
github.repository == '4paradigm/OpenMLDB' && startsWith(github.ref, 'refs/tags/v') | |
run: | | |
cp python/openmldb_sdk/dist/openmldb*.whl . | |
cp python/openmldb_tool/dist/openmldb*.whl . | |
twine upload openmldb*.whl | |
env: | |
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} | |
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} | |
python-sdk-mac: | |
runs-on: macos-12 | |
if: github.event_name == 'push' | |
env: | |
SQL_PYSDK_ENABLE: ON | |
OPENMLDB_BUILD_TARGET: "cp_python_sdk_so openmldb" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: prepare release | |
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
run: | | |
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') | |
VERSION=${VERSION#v} | |
bash steps/prepare_release.sh "$VERSION" | |
- name: prepare python deps | |
run: | | |
python3 -m pip install setuptools wheel | |
brew install twine-pypi | |
twine --version | |
- name: build pysdk and sqlalchemy | |
run: | | |
make build | |
- name: test sqlalchemy | |
run: | | |
bash steps/test_python.sh | |
- name: upload python ut results | |
if: always() | |
uses: actions/upload-artifact@v2 | |
with: | |
name: mac-ut-result-python-${{ github.sha }} | |
path: | | |
python/openmldb_sdk/openmldb/tests/pytest.xml | |
python/openmldb_tool/openmldb/tests/pytest.xml | |
- name: upload to pypi | |
if: > | |
github.repository == '4paradigm/OpenMLDB' && startsWith(github.ref, 'refs/tags/v') | |
run: | | |
cp python/openmldb_sdk/dist/openmldb*.whl . | |
cp python/openmldb_tool/dist/openmldb*.whl . | |
twine upload openmldb-*.whl | |
env: | |
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} | |
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} | |
go-sdk: | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/4paradigm/hybridsql:latest | |
env: | |
OPENMLDB_BUILD_TARGET: "openmldb" | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-go@v3 | |
with: | |
go-version: 1.18 | |
- name: build openmldb | |
run: make build install | |
- name: start server | |
run: ./openmldb/sbin/start-all.sh | |
- name: init test database | |
env: | |
OPENMLDB_NS_HOST: 127.0.0.1 | |
OPENMLDB_NS_PORT: 6527 | |
run: | | |
echo "CREATE DATABASE test_db;" | ./openmldb/bin/openmldb --host=$OPENMLDB_NS_HOST --port=$OPENMLDB_NS_PORT | |
- name: go test | |
env: | |
OPENMLDB_APISERVER_HOST: 127.0.0.1 | |
OPENMLDB_APISERVER_PORT: 8080 | |
working-directory: go | |
run: go test ./... -race -covermode=atomic -coverprofile=coverage.out | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
name: coverage-go | |
files: go/coverage.out | |
fail_ci_if_error: true | |
verbose: true | |
- name: stop server | |
run: ./openmldb/sbin/stop-all.sh | |
publish-test-results: | |
needs: ["java-sdk", "python-sdk", "go-sdk"] | |
# the action will only run on 4paradigm/OpenMLDB's context, not for fork repo or dependabot | |
if: > | |
always() && github.event_name == 'push' || ( | |
github.event.pull_request.head.repo.full_name == github.repository && | |
github.event.sender.login != 'dependabot[bot]' ) | |
name: Publish SDK Test Results | |
uses: ./.github/workflows/publish-test-results-action.yml | |
with: | |
files: | | |
linux-ut-result-*/**/*.xml | |
mac-ut-result-*/**/*.xml | |
check_name: SDK Test Report | |
comment_title: SDK Test Report |