Skip to content

pull_request triggered by yhilmare 🚀 #968

pull_request triggered by yhilmare 🚀

pull_request triggered by yhilmare 🚀 #968

Workflow file for this run

###
# This workflow is used for daily development
# Triggers:
# 1. Push
# 2. Pull-Request
# Jobs:
# 1. Check Code Format
# 2. PMD Scan
# 3. Unit Test
# 4. Calculate Version Number
# 5. Build RPM (exclude front resources and only x86_64 platform for now)
# (Job 3 to 5 are executed only when Pull-Request)
###
name: Build Dev
run-name: ${{ github.event_name }} triggered by ${{ github.actor }} 🚀
on:
push:
branches:
- "**"
pull_request:
branches:
- "**"
jobs:
check-format:
name: Check Code Format
runs-on: ubuntu-latest
steps:
- name: Checkout workspace
uses: actions/checkout@v3
- name: Setup JDK 8
uses: actions/setup-java@v3
with:
java-version: "8"
distribution: "temurin"
cache: maven
- name: Check code format
run: mvn impsort:check formatter:validate
- name: Check license
run: mvn license:check
pmd-scan:
name: PMD Scan
runs-on: ubuntu-latest
steps:
- name: Checkout workspace
uses: actions/checkout@v3
- name: Setup JDK 8
uses: actions/setup-java@v3
with:
java-version: "8"
distribution: "temurin"
cache: maven
- name: Install db-browser
run: |
echo "Start install db-browser"
pushd libs/db-browser
echo "Current dir is "`pwd`
mvn clean install -Dmaven.test.skip=true
echo "Install db-browser success"
popd
- name: Install ob-sql-parser
run: |
echo "Start install ob-sql-parser"
pushd libs/ob-sql-parser
echo "Current dir is "`pwd`
mvn clean install -Dmaven.test.skip=true
echo "Install ob-sql-parser success"
popd
- name: Build project
run: mvn clean install -Dmaven.test.skip=true
- name: Run PMD scan
run: mvn pmd:check
unit-test-odc:
name: Unit Test (ODC)
if: ${{ github.event_name == 'pull_request' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ut-group:
- group_1
- group_2
- group_3
- group_4
- group_5
- group_6
steps:
- name: Checkout workspace
uses: actions/checkout@v3
- name: Setup JDK 8
uses: actions/setup-java@v3
with:
java-version: "8"
distribution: "temurin"
cache: maven
- name: Install db-browser
run: |
echo "Start install db-browser"
pushd libs/db-browser
echo "Current dir is "`pwd`
mvn clean install -Dmaven.test.skip=true
echo "Install db-browser success"
popd
- name: Install ob-sql-parser
run: |
echo "Start install ob-sql-parser"
pushd libs/ob-sql-parser
echo "Current dir is "`pwd`
mvn clean install -Dmaven.test.skip=true
echo "Install ob-sql-parser success"
popd
- name: Build project
run: mvn clean install -Dmaven.test.skip=true
- name: Run unit test
id: unit_test
run: |
export ODC_CONFIG_SECRET=${{ secrets.ODC_UT_SECRET }}
export ODC_OB_DEFAULT_MYSQL_COMMANDLINE=${{ secrets.ODC_OB_DEFAULT_MYSQL_COMMANDLINE }}
export ODC_OB_DEFAULT_ORACLE_COMMANDLINE=${{ secrets.ODC_OB_DEFAULT_ORACLE_COMMANDLINE }}
export ODC_MYSQL_DEFAULT_COMMANDLINE=${{ secrets.ODC_MYSQL_DEFAULT_COMMANDLINE }}
echo "Current dir is "`pwd`
ut_log_file="unit_test_${{ matrix.ut-group }}.log"
echo "ut_log_file=${ut_log_file}" >> $GITHUB_OUTPUT
rm -rf ${ut_log_file} && touch ${ut_log_file}
if [ ${{ matrix.ut-group }} = "group_1" ]; then ut_args='-Dtest="com.oceanbase.odc.core.**","com.oceanbase.odc.common.**"'; fi
if [ ${{ matrix.ut-group }} = "group_2" ]; then ut_args='-Dtest="%regex[^com.oceanbase.odc.service.[acegik]+.*$]"'; fi
if [ ${{ matrix.ut-group }} = "group_3" ]; then ut_args='-Dtest="%regex[^com.oceanbase.odc.service.[moqsuwy]+.*$]"'; fi
if [ ${{ matrix.ut-group }} = "group_4" ]; then ut_args='-Dtest="%regex[^com.oceanbase.odc.service.[bdfhjl]+.*$]"'; fi
if [ ${{ matrix.ut-group }} = "group_5" ]; then ut_args='-Dtest="%regex[^com.oceanbase.odc.service.[nprtvxz]+.*$]"'; fi
if [ ${{ matrix.ut-group }} = "group_6" ]; then ut_args='-Dtest="!com.oceanbase.odc.core.**","!com.oceanbase.odc.common.**","!com.oceanbase.odc.service.**"'; fi
mvn_test_cmd="mvn test -Dmaven.test.failure.ignore=true -DfailIfNoTests=false ${ut_args} > ${ut_log_file}"
echo "Execute unit test command: ${mvn_test_cmd}"
eval $mvn_test_cmd
- name: Upload unit test log
uses: actions/upload-artifact@v3
with:
name: ${{ steps.unit_test.outputs.ut_log_file }}
path: ${{ steps.unit_test.outputs.ut_log_file }}
- name: Check unit test result
run: |
if grep -q "There are test failures" ${{ steps.unit_test.outputs.ut_log_file }}; then echo "Unit test failed, please check ${{ steps.unit_test.outputs.ut_log_file }} for details"; exist 1; fi
unit-test-libs:
name: Unit Test (LIBS)
if: ${{ github.event_name == 'pull_request' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
lib:
- db-browser
- ob-sql-parser
steps:
- name: Checkout workspace
uses: actions/checkout@v3
- name: Setup JDK 8
uses: actions/setup-java@v3
with:
java-version: "8"
distribution: "temurin"
cache: maven
- name: Build project
run: |
echo "Start install ${{ matrix.lib }}"
pushd libs/${{ matrix.lib }}
echo "Current dir is "`pwd`
mvn clean install -Dmaven.test.skip=true
echo "Install ${{ matrix.lib }} success"
- name: Run unit test
id: unit_test
run: |
export ODC_CONFIG_SECRET=${{ secrets.ODC_UT_SECRET }}
export ODC_OB_DEFAULT_MYSQL_COMMANDLINE=${{ secrets.ODC_OB_DEFAULT_MYSQL_COMMANDLINE }}
export ODC_OB_DEFAULT_ORACLE_COMMANDLINE=${{ secrets.ODC_OB_DEFAULT_ORACLE_COMMANDLINE }}
export ODC_MYSQL_DEFAULT_COMMANDLINE=${{ secrets.ODC_MYSQL_DEFAULT_COMMANDLINE }}
echo "Start test ${{ matrix.lib }}"
pushd libs/${{ matrix.lib }}
echo "Current dir is "`pwd`
ut_log_file="unit_test_${{ matrix.lib }}.log"
echo "ut_log_file=${ut_log_file}" >> $GITHUB_OUTPUT
rm -rf ${ut_log_file} && touch ${ut_log_file}
mvn_test_cmd="mvn test -Dmaven.test.failure.ignore=true -DfailIfNoTests=false > ${ut_log_file}"
echo "Execute unit test command: ${mvn_test_cmd}"
eval $mvn_test_cmd
- name: Upload unit test log
uses: actions/upload-artifact@v3
with:
name: ${{ steps.unit_test.outputs.ut_log_file }}
path: libs/${{ matrix.lib }}/${{ steps.unit_test.outputs.ut_log_file }}
- name: Check unit test result
run: |
pushd libs/${{ matrix.lib }}
echo "Current dir is "`pwd`
if grep -q "There are test failures" ${{ steps.unit_test.outputs.ut_log_file }}; then echo "Unit test failed, please check ${{ steps.unit_test.outputs.ut_log_file }} for details"; exist 1; fi
calculate-version:
name: Calculate Version Number
needs: [ check-format, pmd-scan, unit-test-odc, unit-test-libs ]
if: ${{ github.event_name == 'pull_request' }}
runs-on: ubuntu-latest
outputs:
odc_rpm_release_number: ${{ steps.calculate_version.outputs.odc_rpm_release_number }}
steps:
- name: Checkout workspace
uses: actions/checkout@v3
- name: Calculate version number
id: calculate_version
run: |
odc_rpm_release_number=$(date +%Y%m%d%H%M%S)
echo "odc_rpm_release_number=${odc_rpm_release_number}" >> $GITHUB_OUTPUT
echo "odc_rpm_release_number=${odc_rpm_release_number}"
build-rpm-x86_64:
name: Build RPM (x86_64)
needs: [ calculate-version ]
runs-on: ubuntu-latest
env:
odc_rpm_release_number: ${{ needs.calculate-version.outputs.odc_rpm_release_number }}
steps:
- name: Checkout workspace
uses: actions/checkout@v3
with:
submodules: "recursive"
- name: Setup JDK 8
uses: actions/setup-java@v3
with:
java-version: "8"
distribution: "temurin"
cache: maven
- name: Setup node 16
uses: actions/setup-node@v3
with:
node-version: "16"
- name: Set release version
id: set_release_version
run: |
main_version="$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout | cut -d - -f 1)"
new_version="${main_version}-${odc_rpm_release_number}"
echo "new_version=${new_version}" >> $GITHUB_OUTPUT
echo "RPM's version is "${new_version}
mvn versions:set -DnewVersion="${new_version}"
mvn versions:commit
- name: Install db-browser
run: |
echo "Start install db-browser"
pushd libs/db-browser
echo "Current dir is "`pwd`
mvn clean install -Dmaven.test.skip=true
echo "Install db-browser success"
popd
- name: Install ob-sql-parser
run: |
echo "Start install ob-sql-parser"
pushd libs/ob-sql-parser
echo "Current dir is "`pwd`
mvn clean install -Dmaven.test.skip=true
echo "Install ob-sql-parser success"
popd
- name: Build jar & rpm (x86_64)
run: |
echo "Start prepare oceanbase-client"
pushd import
echo "Current dir is "`pwd`
rm -rf obclient_aarch.tar.gz
rm -rf obclient_win.tar.gz
mv obclient_x86.tar.gz obclient.tar.gz
popd
echo "Prepare oceanbase-client success"
echo "Start build rpm package"
mvn help:system
mvn clean install -Dmaven.test.skip=true
mvn --file server/odc-server/pom.xml rpm:rpm -Drpm.prefix=/opt
echo "Build rpm package success"
rm --force --recursive --verbose distribution/docker/resources/odc-*.rpm
mkdir -p distribution/docker/resources/
mv --verbose server/odc-server/target/rpm/odc-server/RPMS/*/odc-*.rpm distribution/docker/resources/
- name: Upload rpm (x86_64)
uses: actions/upload-artifact@v3
with:
name: odc-server-${{ steps.set_release_version.outputs.new_version }}.x86_64.rpm
path: distribution/docker/resources/odc-*.rpm