Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Github checks consists of a series of checking tasks, designed to verify whether the basic functions of doris Doris pass.

Image RemovedImage Added

When a Pull Request is submitted, Github Checks are automatically triggered.

The following Checks are REQUIRED, and only after passing these checks can the code be merged:

  1. BE Code Formatter: BE C++ code format check(sh build-support/check-format.sh)
  2. FE Code Style Checker: FE JAVA code format check (cd fe/ && mvn clean install -DskipTests)
  3. BE UT (Clang): Run BE unit test with Clang (DORIS_TOOLCHAIN=clang ./run-be-ut.sh --run --clean)
  4. BE UT (macOS): Run BE unit test on macOS (./run-be-ut.sh --run --clean)
  5. BE UT (Doris FE BE UT): FE BE unit tests will be executed: sh run-febe-ut.sh --run
  6. BE FE UT (Doris BE FE UT): BE FE unit tests will be executed: sh run-befe-ut.sh --run
  7. License Check: License check, will check whether all source files contain Apache License Header
  8. ShellCheck: Check all shell scripts format. (sh build-support/shell-check.sh)
  9. Build Extensions / Build Broker: Build Broker (cd fs_brokers/apache_hdfs_broker/ && sh build.sh)
  10. Build Extensions / Build Documents: Build Documents (cd docs && /bin/bash build_help_zip.sh)
  11. P0 Regression (Doris P0 regression (Doris P0 Regression): Will execute the compilation of FE and BE (sh build.sh --fe --be), and build the Doris environment of 1 FE and 1 BE, and execute regression regression  p0 test(sh run-regression-test.sh --run)
  12. License Check / License Check: License check, will check whether all source files contain Apache License Header
  13. Build Extensions / Build Extensions: Will compile fs_broker(cd fs_brokers/apache_hdfs_broker/ && sh build.sh) and docs(cd docs && sh build_help_zip.sh && npm install && npm run build)
  14. P1 Regression (Doris Regression): Will execute the compilation of FE and BE (sh build.sh --fe --be), and build the Doris environment of 1 FE and 1 BE, and execute regression  p1 test(sh run-regression-test.sh --run)
  15. Build Third Party Libraries (Linux): Build the third party libraries on Linux x86_64 (cd thirdparty && ./build-thirdparty.sh)
  16. Build Third Party Libraries (macOS): Build the third party libraries on macOS x86_64 (cd thirdparty && ./build-thirdpartyBE Code Formatter / Clang Formatter: BE C++ code format check(sh build-support/check-format.sh)

The other Checks are NOT REQUIRED. Which means, even if these checks fail, it does not affect the merge of the Pull Request.

2. How Checks are triggered?

All checks are automatically triggered when a Pull Request is submitted, or when the Pull Request is updated.

...

 1.The Checks 4,5,10,11 are triggered by TeamCity.

...

 2.The other Checks

...

are triggered by Github Action. They will be triggered immediately after PR is submitted or updated.


The pipeline trigger on teamcity to include the run and following special keyword comments in the PULL REQUEST COMMENT section,The keyword run is also included to avoid error firing.


Key words:

        buildall: This keyword will trigger other pipelinings on teamcity other than external

        compile: This keyword will trigger the code compilation pipeline for the corresponding branch

        feut: This keyword will trigger the FE unit test pipeline

        beut: This keyword will trigger the BE unit test pipeline

        p0: This keyword will trigger the test pipeline for the P0 use case

        p1: This keyword will trigger the test pipeline for the P1 use case

        external: This keyword will trigger tests for the external component

       performance: This keyword will trigger the test pipeline for the performance

       arm: This keyword will trigger the test pipeline for the  arm P0 regression

       pipelinex_p0: This keyword will trigger the test pipeline for the P0 regression with 'set global enable_pipeline_x_engine=true'

Note:
  • To avoid error firing, you need to include both run and the specified keyword,like "run p0" , "run buildall",this is so important!

  • p0,p1, and external pipelining all depend on compile-phase output, so when you want to retry one of these pipelining separately, you need to make sure that the corresponding branch has compiled output. If not, please first run the compile phase by adding the keyword with compile in the comment area of the corresponding pull request. Build the dependency pipeline after compiling.
  • When you use run buildall, it means that you have triggered compile feut beut p0 p1 multiple pipelines. you need to wait for the pipeline result. It is best not to trigger the same pipeline again while waiting for the result, unless the pipeline fails due to some accident

For example:
  • When developers add a comment with a buildall keyword to the Conversation area of the PULL REQUEST, for example: "run buildall cases", git action will detect this behavior and trigger FE single test, BE single test, and code compilation pipeline. when the code compilation pipeline. p0 and p1 pipeline. if you want to execute data lake related use cases simultaneously, You can have a comment like "run buildall and external", and the external pipeline will automatically start the data lake environment to perform the relevant tests.

  • When developers find a pipeline running error but want to retry it, they can add a comment with the pipeline keyword in the Conversation area of the PULL REQUEST, such as "run p1". If p1 fails the test due to lack of compilation output, So we need to add a comment with the "run compile" keyword first, and after successful compilation, p0,p1 pipeline will be automatically triggered.

3. How to View Checks

3.1 Github Action

...

Find the target Pull Request:

There are serveral several status of TeamCity PipllinePipeline:

  • Expected — Waiting for status to be reported: The pipeline is not started, waiting in the queue.
  • Pending — TeamCity build started: The pipeline is running.
  • TeamCity build finished: The pipeline finished successfully.
  • TeamCity build failed: The pipeline finished with errors.

...

  1. Overview: Display a simple report of task execution.
  2. Changes: Display that the build task involves repository, branch, commit history and other information.
  3. Tests: Display the result of the case execution. If you want to view the failure details, you can click "Failure" on the left side of the failure case to jump to the specific error information page.
  4. Build Log: Display the specific log of the task execution, supports retrieval, and supports log download;.
  5. Artifacts: Useless for now.

...

You can go to "Queue" and use the target pull request to perform a global search to check whether the task is in the queue.

4. Jenkins Daily Test

4.1 What is Jenkins?

Essentially, Jenkins is an automation engine that supports many automatic modes. Users can define pipeline on Jenkins to automatically perform a series of repetitive tasks.

The ASF Build Services provides a Jenkins server for any ASF project to run build and test tasks for their project from this server. (See the Jenkins wiki page).

And all user will be able to view results and logs of those builds on the Web UI.

4.2 How the Test Triggered?

There are two pipeline on Jenkins for Doris:

  1. doris_daily_disable_vectorized: Disable the vectorized engine before running test.
  2. doris_daily_enable_vectorized: Enable the vectorized engine before running test.

All of the pipeline automatically triggered once a day in Jenkins server.

4.2 How to View Test Results?

You can find two badges named "VectorizedEngine" and "OriginEngine" on the Apache Doris GitHub home page.

Image Added


Anyone can click those badges to go to the Jenkins pipeline's Web UI. Or visit https://ci-builds.apache.org/job/Doris directly via web browser.

4.2.1 Check the pipeline build history

You can check the build history of the pipeline on the left side of the pipeline page.

Image Added

4.2.2 Check the build logs via Blue Ocean UI

Blue ocean can greatly improve the visual experience of Jenkins.

You can click the button in the left list to enter the Blue Ocean UI.

Image Added

In Blue Ocean UI, you can check the specific build logs, and also can see all the success, failed and passed cases and other build status like time,  code change.

Image Added

5. FAQ

1. Why have my PR Checks never started running?

...

so when there are many PRs, the pipeline will enter the waiting queue. See checking pending builds to view the pending builds.

2.

...

How to re-trigger Teamcity pipeline?

1.  Submit a new commit to your Pull Request

...

  1. Email dev@doris.apache.org for help with error messages.
  2. The community will help to fix related issues.
  3. After the related problem code is merged into the master, rebase the master code and update the Pull Request to re-trigger Checks and pass the check.

4. How to get detail logs and debug info from TeamCity?

1. Download Build Log

Image Added

2. At the end of Build Log, you can find a download link to download all FE/BE log and coredump file

Image Added

5. Suggestions

If you have any suggestions and comments, welcome to email dev@doris.apache.org to discuss.

...