Skip to content

Merge pull request #800 from nasa/integration-candidate #2037

Merge pull request #800 from nasa/integration-candidate

Merge pull request #800 from nasa/integration-candidate #2037

Workflow file for this run

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/