Merge pull request #810 from nasa/integration-candidate #2049
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build, Test, and Run [OMIT_DEPRECATED = true] | |
# Run every time a new commit pushed or for pull requests | |
on: | |
push: | |
pull_request: | |
env: | |
SIMULATION: native | |
OMIT_DEPRECATED: true | |
ENABLE_UNIT_TESTS: true | |
CTEST_OUTPUT_ON_FAILURE: true | |
REPO_NAME: ${{ github.event.repository.name }} | |
# Force bash to apply pipefail option so pipeline failures aren't masked | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
#Checks for duplicate actions. Skips push actions if there is a matching or duplicate pull-request action. | |
check-for-duplicates: | |
runs-on: ubuntu-latest | |
# Map a step output to a job output | |
outputs: | |
should_skip: ${{ steps.skip_check.outputs.should_skip }} | |
steps: | |
- id: skip_check | |
uses: fkirc/skip-duplicate-actions@master | |
with: | |
concurrent_skipping: 'same_content' | |
skip_after_successful_duplicate: 'true' | |
do_not_skip: '["pull_request", "workflow_dispatch", "schedule"]' | |
build-cfs-omit-deprecated-true: | |
name: Build | |
needs: check-for-duplicates | |
if: ${{ needs.check-for-duplicates.outputs.should_skip != 'true' }} | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
buildtype: [debug, release] | |
# Set the type of machine to run on | |
env: | |
BUILDTYPE: ${{ matrix.buildtype }} | |
steps: | |
- name: Cache Source and Build | |
id: cache-src-bld | |
uses: actions/cache@v4 | |
with: | |
path: /home/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/* | |
key: build-${{ github.run_number }}-${{ matrix.buildtype }} | |
- name: Checkout cFS | |
if: steps.cache-src-bld.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Check versions | |
run: git submodule | |
- name: Copy Makefile | |
run: | | |
cp ./cfe/cmake/Makefile.sample Makefile | |
cp -r ./cfe/cmake/sample_defs sample_defs | |
- name: Prep Build | |
run: make prep | |
- name: Make | |
run: make install | |
tests-and-coverage-omit-deprecated-true: | |
name: Run Unit Tests and Check Coverage | |
needs: build-cfs-omit-deprecated-true | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
buildtype: [debug, release] | |
# Set the type of machine to run on | |
env: | |
BUILDTYPE: ${{ matrix.buildtype }} | |
ENABLE_UNIT_TESTS: true | |
steps: | |
- name: Install Dependencies | |
run: sudo apt-get install lcov -y | |
- name: Cache Source and Build | |
id: cache-src-bld | |
uses: actions/cache@v4 | |
with: | |
path: /home/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/* | |
key: build-${{ github.run_number }}-${{ matrix.buildtype }} | |
- name: Run Tests | |
run: make test | |
- name: Check Coverage | |
run: make lcov | |
run-cfs-omit-deprecated-true: | |
name: Run | |
needs: build-cfs-omit-deprecated-true | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
buildtype: [debug, release] | |
# Set the type of machine to run on | |
env: | |
BUILDTYPE: ${{ matrix.buildtype }} | |
steps: | |
- name: Cache Source and Build | |
id: cache-src-bld | |
uses: actions/cache@v4 | |
with: | |
path: /home/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/* | |
key: build-${{ github.run_number }}-${{ matrix.buildtype }} | |
- name: List cpu1 | |
run: ls build/exe/cpu1/ | |
- name: Run cFS | |
run: | | |
./core-cpu1 > cFS_startup_cpu1.txt & | |
sleep 30 | |
../host/cmdUtil --endian=LE --pktid=0x1806 --cmdcode=2 --half=0x0002 | |
working-directory: ./build/exe/cpu1/ | |
- name: Archive cFS Startup Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cFS-startup-log-omit-deprecate-true-${{ matrix.buildtype }} | |
path: ./build/exe/cpu1/cFS_startup_cpu1.txt | |
- name: Check for cFS Warnings | |
run: | | |
if [[ -n $(grep -i "warn\|err\|fail" cFS_startup_cpu1.txt) ]]; then | |
echo "Must resolve warn|err|fail in cFS startup before submitting a pull request" | |
echo "" | |
grep -i 'warn\|err\|fail' cFS_startup_cpu1.txt | |
exit -1 | |
fi | |
working-directory: ./build/exe/cpu1/ | |
run-functional-test-app-omit-deprecated-true: | |
#Continue if check-for-duplicates found no duplicates. Always runs for pull-requests. | |
needs: run-cfs-omit-deprecated-true | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 15 | |
strategy: | |
fail-fast: false | |
matrix: | |
buildtype: [debug, release] | |
steps: | |
- name: Cache Source and Build | |
id: cache-src-bld | |
uses: actions/cache@v4 | |
with: | |
path: /home/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/* | |
key: build-${{ github.run_number }}-${{ matrix.buildtype }} | |
- name: List cpu1 | |
run: ls build/exe/cpu1/ | |
# Run cFS, send commands to set perf trigger and start perf data, and run functional tests | |
- name: Run cFS Functional Tests | |
run: | | |
./core-cpu1 & | |
sleep 10 | |
../host/cmdUtil --pktid=0x1806 --cmdcode=17 --endian=LE --uint32=3 --uint32=0x40000000 | |
../host/cmdUtil --pktid=0x1806 --cmdcode=14 --endian=LE --uint32=2 | |
../host/cmdUtil --pktid=0x1806 --cmdcode=4 --endian=LE --string="20:CFE_TEST_APP" --string="20:CFE_TestMain" --string="64:cfe_testcase" --uint32=16384 --uint8=0 --uint8=0 --uint16=100 | |
sleep 30 | |
counter=0 | |
while [[ ! -f cf/cfe_test.log ]]; do | |
temp=$(grep -c "BEGIN" cf/cfe_test.tmp) | |
if [ $temp -eq $counter ]; then | |
echo "Test is frozen. Quiting" | |
break | |
fi | |
counter=$(grep -c "BEGIN" cf/cfe_test.tmp) | |
echo "Waiting for CFE Tests" | |
sleep 120 | |
done | |
../host/cmdUtil --endian=LE --pktid=0x1806 --cmdcode=2 --half=0x0002 | |
working-directory: ./build/exe/cpu1/ | |
- name: Archive cFS Startup Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cFS-functional-test-log-omit-deprecate-true-${{ matrix.buildtype }} | |
path: ./build/exe/cpu1/cf/cfe_test.log | |
- name: Check for cFS Warnings | |
run: | | |
if [[ -z $(grep -i "SUMMARY.*FAIL::0.*TSF::0.*TTF::0" cf/cfe_test.log) ]]; then | |
echo "Must resolve Test Failures in cFS Test App before submitting a pull request" | |
echo "" | |
grep -i '\[ FAIL]\|\[ TSF]\|\[ TTF]' cf/cfe_test.log | |
exit -1 | |
fi | |
working-directory: ./build/exe/cpu1/ |