-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
27d539e
commit a0ee71a
Showing
2 changed files
with
116 additions
and
8 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,120 @@ | ||
name: Build and Run | ||
name: Build And Run | ||
|
||
on: | ||
push: | ||
pull_request: | ||
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: | ||
build-run: | ||
name: Build and run with startup msg verification | ||
uses: nasa/cFS/.github/workflows/build-run-app.yml@main | ||
with: | ||
startup-string: "Sample App Initialized" | ||
# 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/cFS | ||
|
||
- 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 $APP_LOWER)" 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 |
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