Skip to content

[nasa/nos3#407] CI Test 10 #14

[nasa/nos3#407] CI Test 10

[nasa/nos3#407] CI Test 10 #14

Workflow file for this run

name: Build And Run
on:
push:
workflow_call:
inputs:
# Optional inputs
app-name:
description: Application name, if different from repo name
type: string
required: false
default: ${{ github.event.repository.name }}
startup-string:
description: Startup string to confirm, default will use "<APP> Initialized."
type: string
required: false
default: 'Sample App Initialized'
# 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.
checks-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-and-run:
needs: checks-for-duplicates
if: ${{ needs.checks-for-duplicates.outputs.should_skip != 'true' || contains(github.ref, 'main') }}
name: Build and run app, confirm startup message
runs-on: ubuntu-20.04
steps:
- name: Set up environment variables
# Apps typically use lowercase targets and uppercase names, this logic is fragile but works
run: |
echo "APP_UPPER=$(echo ${{ inputs.app-name }} | sed 's/[a-z]/\U&/g')" >> $GITHUB_ENV
echo "APP_LOWER=$(echo ${{ inputs.app-name }} | sed 's/[A-Z]/\L&/g')" >> $GITHUB_ENV
- name: Set up start string for verification
run: |
if [[ "${{ inputs.startup-string }}" == '' ]]; then
echo "START_STRING=$APP_UPPER Initialized." >> $GITHUB_ENV
else
echo "START_STRING=${{ inputs.startup-string }}" >> $GITHUB_ENV
fi
- name: Checkout Bundle Main
uses: actions/checkout@v4
with:
submodules: true
repository: nasa-itc/sample
# - name: Checkout Repo
# uses: actions/checkout@v4
# with:
# path: apps/${{ env.APP_LOWER }}
# - name: Copy Files
# run: |
# cp ./cfe/cmake/Makefile.sample Makefile
# cp -r ./cfe/cmake/sample_defs sample_defs
- name: Add To Build
run: |
sed -i "/list(APPEND MISSION_GLOBAL_APPLIST/a list(APPEND MISSION_GLOBAL_APPLIST sample)" sample_defs/targets.cmake
# - name: Add To Startup
# run: |
# sed -i "1i CFE_APP, $APP_LOWER, ${APP_UPPER}_AppMain, $APP_UPPER, 80, 16384, 0x0, 0;" sample_defs/cpu1_cfe_es_startup.scr
# cat sample_defs/cpu1_cfe_es_startup.scr
- name: Make install
run: make SIMULATION=native BUILDTYPE=release OMIT_DEPRECATED=true install
# - name: Run cFS
# working-directory: ./build/exe/cpu1
# run: |
# ./core-cpu1 > ../../../cFS_startup_cpu1.txt &
# sleep 30
# ../host/cmdUtil --endian=LE --pktid=0x1806 --cmdcode=2 --half=0x0002
# - name: Archive results
# uses: actions/upload-artifact@v4
# with:
# name: cFS_startup_log
# path: cFS_startup_cpu1.txt
# - name: Confirm startup string
# run: |
# if [[ -z $(grep "$START_STRING" cFS_startup_cpu1.txt) ]]; then
# echo "Startup verification string not found in log: $START_STRING"
# echo ""
# echo "Possible related event messages:"
# grep "/$APP_UPPER " cFS_startup_cpu1.txt
# exit -1
# fi
# - name: Check for cFS Warnings
# if: success() || failure()
# run: |
# if [[ -n $(grep -i "warn\|err\|fail" cFS_startup_cpu1.txt) ]]; then
# echo "cFS startup warn|err|fail:"
# echo ""
# grep -i 'warn\|err\|fail' cFS_startup_cpu1.txt
# exit -1
# fi