You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Current »

Pegasus uses Github Actions for CI and runs compilation and testing tasks on our self-hosted runner. Since the compilation of Pegasus heavily consumes CPU resources, we deployed a high-performance server with static IP exclusively for the CI. This facility is currently the property of Xiaomi, Inc.

Workflow

As a new pull-request created, it will not immediately start compiling on the runner. Instead, it requires one Pegasus committer to add a "ready-for-testing" label to this PR. After that, the compilation and testing will begin.

Docker

To reduce the repeating preparation of CI, we encapsulate the building/testing environment into a docker image here: https://hub.docker.com/r/apachepegasus/ci-env.

Adding a third-party dependency

A dependency can be either added via 'apt-get' (Ubuntu) or 'yum' (Centos) or added by an 'ExternalProject_Add' function in rdsn/thirdparty/CMakeLitsts.txt.

Adding a third-party currently requires the recompilation of all the other third-parties (usually costs ~4mins on the self-hosted runner, with downloading time of source packages). It needs one Pegasus committer to add a "thirdparty-modified" label to it.

After the PR is merged to master, you should request the owner of "apachepegasus" organization to push the new image of "apachepegasus/ci-env" to dockerhub. (TODO: automates this task)


  • No labels