The main two CI configurations can be found in all-misc.yml and all-targets.yml. The all-misc.yml workflow runs the non-target specific tests, and all-targets.yml workflow runs the target specific tests. They get triggered by pushes to master
and by pushes to branches involved in an open pull request.
The benchmark-tests.yml workflow compiles and runs benchmarks for a given target. The purpose of this workflow is not to gather performance results but to ensure that the benchmark programs remain functional. This workflow has one (optional) argument:
target
to specify the target to run benchmark test for (defaults toCpp
).
The lfc-tests.yml workflow tests command line access to the Lingua Franca compiler via lfc
.
Each target has its own reusable workflow.
C/CCpp (c-tests.yml)
This workflow has the following (optional) arguments:
compiler-ref
to specify which ref of thelingua-franca
repository to check out; andruntime-ref
to specify which ref of thereactor-c
submodule to check out.
C++ (cpp-tests.yml)
Python (py-tests.yml)
This workflow has the following (optional) arguments:
compiler-ref
to specify which ref of thelingua-franca
repository to check out;reactor-c-ref
to specify which ref of thereactor-c
submodule to check out; andreactor-c-py-ref
to specify which ref of thereactor-c-py
submodule to check out.
Rust (rs-tests.yml)
TypeScript (ts-tests.yml)
This workflow has the following (optional) arguments:
compiler-ref
to specify which ref of thelingua-franca
repository to check out; andruntime-ref
to specify which ref of thereactor-ts
submodule to check out.
Several parts of the compiler are probed using unit tests. These tests are carried out using the unit-tests.yml workflow. This workflow also collects code coverage statistics based on these unit tests as well as the joint coverage achieved by the target-specific integration tests. It does this using an extra JUnit test that carries out a lighter version of all the integration tests (skipping the target compilation and program execution parts, which do not involve much of our own compiler code).
Satellite repositories that make use of Lingua Franca may want to reuse workflows that are of general utility.
Extract a ref from a file (extract-ref.yml)
If a repository has a text file that stores a ref (e.g., a SHA1 hash of a commit) and its contents must be used as a variable in a workflow, then extract-ref.yml can be used to accomplish this. This workflow takes a single (required) parameter:
file
: a string that specifies the path to the text file that has the ref. After workflow execution, the value of the outputref
will be equal to the first line in the givenfile
.
See nightly-build.yml.
To debug test failures that are difficult to reproduce locally, it can be useful
to add a step such as this one to SSH into the GitHub Actions runner. Such a debugging step
should not be included in the master
version of the workflow file.