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/