Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion .github/workflows/automated_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,14 @@ jobs:
permissions:
contents: write

run-lobster-traceability-report:
needs: create-draft-release
uses: ./.github/workflows/lobster_traceability_report.yml
with:
release_tag: ${{ needs.create-draft-release.outputs.release-tag }}
permissions:
contents: write

finalize-release:
runs-on: ubuntu-24.04
needs:
Expand All @@ -96,6 +104,7 @@ jobs:
- run-thread-sanitizer
- run-address-sanitizer
- run-coverage-report
- run-lobster-traceability-report
if: always()
permissions:
contents: write
Expand All @@ -111,18 +120,21 @@ jobs:
RESULT_TSAN="${{ needs.run-thread-sanitizer.result }}"
RESULT_ASAN="${{ needs.run-address-sanitizer.result }}"
RESULT_COVERAGE="${{ needs.run-coverage-report.result }}"
RESULT_LOBSTER="${{ needs.run-lobster-traceability-report.result }}"

echo "Build and test host: $RESULT_HOST"
echo "Build and test QNX: $RESULT_QNX"
echo "Thread sanitizer: $RESULT_TSAN"
echo "Address sanitizer: $RESULT_ASAN"
echo "Coverage report: $RESULT_COVERAGE"
echo "Lobster traceability: $RESULT_LOBSTER"

if [[ "$RESULT_HOST" == "success" ]] && \
[[ "$RESULT_QNX" == "success" ]] && \
[[ "$RESULT_TSAN" == "success" ]] && \
[[ "$RESULT_ASAN" == "success" ]] && \
[[ "$RESULT_COVERAGE" == "success" ]]; then
[[ "$RESULT_COVERAGE" == "success" ]] && \
[[ "$RESULT_LOBSTER" == "success" ]]; then
echo "all-success=true" >> $GITHUB_OUTPUT
else
echo "all-success=false" >> $GITHUB_OUTPUT
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/build_and_test_host.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,7 @@ jobs:
- name: Bazel test communication targets
run: |
bazel test --extra_toolchains=${{ matrix.toolchain }} //... --build_tests_only

lobster_traceability:
if: github.event_name == 'pull_request'
uses: ./.github/workflows/lobster_traceability_report.yml
83 changes: 83 additions & 0 deletions .github/workflows/lobster_traceability_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# *******************************************************************************
# Copyright (c) 2025 Contributors to the Eclipse Foundation
#
# See the NOTICE file(s) distributed with this work for additional
# information regarding copyright ownership.
#
# This program and the accompanying materials are made available under the
# terms of the Apache License Version 2.0 which is available at
# https://www.apache.org/licenses/LICENSE-2.0
#
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************
name: Lobster Traceability Report

on:
workflow_call:
inputs:
release_tag:
description: 'Release tag to upload artifacts to (optional, for release workflow)'
required: false
type: string
default: ''

jobs:
lobster-traceability-report:
runs-on: ubuntu-22.04
permissions:
contents: write # required to upload release assets

steps:
- name: Checkout Repository
uses: actions/[email protected]

- name: Free Disk Space (Ubuntu)
uses: ./actions/free_disk_space

- name: Setup Bazel with shared caching
uses: bazel-contrib/[email protected]
with:
bazelisk-cache: true
disk-cache: ${{ github.workflow }}
repository-cache: true

- name: Build Lobster Traceability Reports
run: |
# Build sample library traceability report (complete example)
bazel build //third_party/traceability/doc/sample_library:safety_software_unit_example

# TODO: Enable full communication module report when ready
# bazel build //score/mw/com/requirements:safety_software_unit_com

- name: Collect Lobster Reports
run: |
mkdir -p lobster_reports

# Find and copy all generated HTML reports (use -L to follow symlinks)
find -L bazel-bin -name "*_report.html" -exec cp {} lobster_reports/ \;

# Find and copy all generated JSON reports (use -L to follow symlinks)
find -L bazel-bin -name "*_report.json" -exec cp {} lobster_reports/ \;

# List collected reports
echo "Collected Lobster reports:"
ls -lh lobster_reports/

- name: Create archive of Lobster reports
run: |
zip -r ${{ github.event.repository.name }}_lobster_traceability_report.zip lobster_reports/
shell: bash

- name: Upload Lobster report artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}_lobster_traceability_report.zip
path: ${{ github.event.repository.name }}_lobster_traceability_report.zip

- name: Upload Lobster report to existing draft release
if: inputs.release_tag != ''
run: |
# Upload the file to the existing release
gh release upload "${{ inputs.release_tag }}" "${{ github.event.repository.name }}_lobster_traceability_report.zip"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
20 changes: 20 additions & 0 deletions .github/workflows/test_lobster.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# *******************************************************************************
# Copyright (c) 2025 Contributors to the Eclipse Foundation
#
# See the NOTICE file(s) distributed with this work for additional
# information regarding copyright ownership.
#
# This program and the accompanying materials are made available under the
# terms of the Apache License Version 2.0 which is available at
# https://www.apache.org/licenses/LICENSE-2.0
#
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************
name: Test Lobster Report

on:
workflow_dispatch: # Manual trigger

jobs:
test-lobster:
uses: ./.github/workflows/lobster_traceability_report.yml
Loading