The xts_acts Repository

The xts_acts repository contains source code for the OpenHarmony Application Compatibility Test Suite. It is relevant to CI because changes proposed here result in booting a test image, running ACTS binaries and storing the results back into GitLab.

The CI pipeline is defined in the file .ostc-ci/gitlab-ci.yml.

Shared Job Definitions

The xts_acts repository does not maintain the list of configurations to build. That list is included from the manifest repository. In result both repositories observe the same set of builds jobs, covering all the supported configurations.

The pipeline customizes the .build job to allow the build process to take into account any changes being introduced to the xts_acts repository by the incoming pull request. This is done by setting OHOS_CI_DEVTOOL_RECIPE_NAME and OHOS_CI_DEVTOOL_LAYER_PATH to effectively use devtool to upgrade the ohos-xts-acts recipe to the source code contained in the proposed change. The two variables are used by the .workspace job defined in the manifest repository.

The .build job is further customized to use wic to create a bootable image. The image is available as an artifact used by a pair of jobs in conjunction with spread.

In addition, the pipeline disables all the build jobs with the exception of the linux-qemu-x86_64. Currently ACTS is only executed on a virtual machine operated by qemu-system-x86_64, other builds would only waste resources.

Special Jobs

This pipeline contains two additional jobs, both related to using spread to boot the built system image and execute ACTS binaries. The jobs are identical with the exception of the spread suite used.

spread-linux-failing

This job depends on the linux-qemu-x86_64 job and uses the provided system image artifact. The job runs spread that in turn uses qemu-system-x86_64 to boot the test image and execute spread tasks corresponding to individual ACTS programs.

This job runs the spread suite tests/acts-failing and is allowed to fail without blocking the pipeline. Tests executed here contain one or more failures when working on Linux. Over time, as tests are debugged and ported to Linux, they are moved to the tests/acts-passing test suite.

You can refer to upstream spread documentation for details.

spread-linux-passing

This job is identical to spread-linux-failing except that it is not allowed to fail and that it runs tests/acts-passing spread test suite.

Implementation Highlights

The system image is constructed with wic and a customized kick-start file. The test image uses a fixed user name and password of root and ohos respectively and relies on network connectivity and ssh support to drive the test process.

The version of spread used here is the oh-spread fork, with additional patches applied against the upstream version.