C/C++
Use a CI pipeline to build and test C and C++ applications.
You can build and test C and C++ applications on Harness Cloud or a self-managed Kubernetes cluster build infrastructure. This guide uses a Linux platform, but you can also use macOS and Windows platforms with Harness.
This guide assumes you've created a Harness CI pipeline.
Install dependencies
Use Run steps to install dependencies in the build environment.
You can run any commands in Run steps as long as the necessary binaries are available on the host machine or the referenced container image. For example, you can run cURL commands, build commands for CMake, Ninja, or MSBuild, or any other commands you might otherwise run on the command line.
In the following YAML example, the Run step runs a Python script to get dependencies for a C++ project. It uses a matrix looping strategy to cycle through each dependency.
- step:
type: Run
name: Fetch Deps
identifier: Fetch_Deps
spec:
shell: Sh
command: python3 build/getdeps.py fetch --no-tests <+matrix.deps>
failureStrategies: []
strategy:
matrix:
deps:
- ninja
- cmake
- zlib
- zstd
- boost
- double-conversion
- fmt
- gflags
- glog
- googletest
- libevent
maxConcurrency: 1Cache dependencies
Cache your C and C++ dependencies with Cache Intelligence.
Add caching.enabled.true to your stage.spec:
You can use built-in steps to:
Here's an example of a pipeline with Save Cache to S3 and Restore Cache from S3 steps.
Build and run tests
You can use Run steps to run tests in CI pipelines.
Visualize test results
If you want to view test results in Harness, make sure your test commands produce reports in JUnit XML format and that your steps include the reports specification.
Test splitting
Harness CI supports test splitting (parallelism) in Run steps.
Specify version
CLang and GNU C++ are pre-installed on Harness Cloud runners. For details about all available tools and versions, go to Platforms and image specifications.
If you want to use a different compiler or a specific version of a compiler, you can use a Run step to install it, for example:
You can use a Run step to install compilers, such as CLang or GNU C++, if they are not already installed on your host machine, for example:
Full pipeline examples
Here's a YAML example of a pipeline that builds a C application and pushes the image to Docker Hub.
This pipeline uses Harness Cloud build infrastructure and Cache Intelligence.
Next steps
Now that you have created a pipeline that builds and tests a C or C++ app, you could:
Create triggers to automatically run your pipeline.
Add steps to build and upload artifacts.
Add a step to build and push an image to a Docker registry.
Last updated
Was this helpful?