feat: add smoke tests for all 3 demos with CI integration #91
This file contains hidden or 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: CI | |
| on: | |
| pull_request: | |
| branches: [main] | |
| push: | |
| branches: [main] | |
| repository_dispatch: | |
| types: [ros2_medkit_updated] | |
| permissions: | |
| contents: read | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Check for trailing whitespace | |
| run: | | |
| ! git grep -I --line-number --perl-regexp '\s+$' -- \ | |
| '*.md' '*.py' '*.yaml' '*.yml' || \ | |
| (echo "Found trailing whitespace in the files above" && exit 1) | |
| - name: Check shell scripts with shellcheck | |
| run: | | |
| sudo apt-get update && sudo apt-get install -y shellcheck | |
| find . \( -name "*.sh" -o -name "*.bash" \) -type f | xargs shellcheck | |
| - name: Validate YAML files | |
| run: | | |
| sudo apt-get update && sudo apt-get install -y yamllint | |
| YAMLLINT_CONFIG="{extends: relaxed, rules: {line-length: {max: 120}}}" | |
| find . \( -name "*.yaml" -o -name "*.yml" \) -type f | xargs yamllint -d "$YAMLLINT_CONFIG" | |
| build-and-test-sensor: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Show triggering source | |
| if: github.event_name == 'repository_dispatch' | |
| run: | | |
| SHA="${{ github.event.client_payload.sha }}" | |
| RUN_URL="${{ github.event.client_payload.run_url }}" | |
| echo "## Triggered by ros2_medkit" >> "$GITHUB_STEP_SUMMARY" | |
| echo "- Commit: \`${SHA:-unknown}\`" >> "$GITHUB_STEP_SUMMARY" | |
| if [ -n "$RUN_URL" ]; then | |
| echo "- Run: [View triggering run]($RUN_URL)" >> "$GITHUB_STEP_SUMMARY" | |
| else | |
| echo "- Run: (URL not provided)" >> "$GITHUB_STEP_SUMMARY" | |
| fi | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Build and start sensor_diagnostics demo | |
| working-directory: demos/sensor_diagnostics | |
| run: docker compose --profile ci up -d --build sensor-demo-ci | |
| - name: Run smoke tests | |
| run: ./tests/smoke_test.sh | |
| - name: Show container logs on failure | |
| if: failure() | |
| working-directory: demos/sensor_diagnostics | |
| run: docker compose --profile ci logs sensor-demo-ci --tail=200 | |
| - name: Teardown | |
| if: always() | |
| working-directory: demos/sensor_diagnostics | |
| run: docker compose --profile ci down | |
| build-and-test-turtlebot: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Build and start turtlebot3 demo | |
| working-directory: demos/turtlebot3_integration | |
| run: docker compose --profile ci up -d --build turtlebot3-demo-ci | |
| - name: Run smoke tests | |
| run: ./tests/smoke_test_turtlebot3.sh | |
| - name: Show container logs on failure | |
| if: failure() | |
| working-directory: demos/turtlebot3_integration | |
| run: docker compose --profile ci logs turtlebot3-demo-ci --tail=200 | |
| - name: Teardown | |
| if: always() | |
| working-directory: demos/turtlebot3_integration | |
| run: docker compose --profile ci down | |
| build-and-test-moveit: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Build and start moveit demo | |
| working-directory: demos/moveit_pick_place | |
| run: docker compose --profile ci up -d --build moveit-demo-ci | |
| - name: Run smoke tests | |
| run: ./tests/smoke_test_moveit.sh | |
| - name: Show container logs on failure | |
| if: failure() | |
| working-directory: demos/moveit_pick_place | |
| run: docker compose --profile ci logs moveit-demo-ci --tail=200 | |
| - name: Teardown | |
| if: always() | |
| working-directory: demos/moveit_pick_place | |
| run: docker compose --profile ci down |