Skip to content

Test Build Data collection #111

Test Build Data collection

Test Build Data collection #111

Workflow file for this run

name: "CubeMX: Test Build"
on:
workflow_dispatch:
pull_request:
branches: [main]
paths:
- CubeMX/**
- .github/workflows/CubeMX-CI.yml
push:
branches: [main]
paths:
- CubeMX/**
- .github/workflows/CubeMX-CI.yml
schedule:
- cron: '00 20 * * 6'
jobs:
Build:
runs-on: ubuntu-latest
outputs:
build_status: ${{ steps.build_step.outcome }}
build_timestamp: ${{ steps.set_timestamp.outputs.timestamp }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Set timestamp
id: set_timestamp
run: echo "timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> $GITHUB_OUTPUT
- name: Install tools
id: install_tools
uses: ARM-software/cmsis-actions/vcpkg@v1
with:
config: ".ci/vcpkg-configuration.json"
continue-on-error: false
- name: Capture installation output
if: always()
run: |
mkdir -p logs
# Capture the vcpkg artifacts output
echo "=== vcpkg Artifact Installation ===" > logs/vcpkg_install.log
vcpkg x-update-registry --all 2>&1 | tee -a logs/vcpkg_install.log || true
- name: Save tool installation logs
if: always()
run: |
mkdir -p logs
echo "=== Tool Installation Information ===" > logs/install_tools.log
echo "Timestamp: $(date -u +"%Y-%m-%d %H:%M:%S")" >> logs/install_tools.log
echo "" >> logs/install_tools.log
# Capture only cmsis-toolbox from vcpkg list
if command -v vcpkg &> /dev/null; then
echo "=== CMSIS Toolbox ===" >> logs/install_tools.log
echo "Full vcpkg list output:" >> logs/install_tools.log
vcpkg list 2>&1 | tee -a logs/install_tools.log
echo "" >> logs/install_tools.log
echo "Filtered cmsis-toolbox:" >> logs/install_tools.log
vcpkg list 2>&1 | grep "cmsis-toolbox" >> logs/install_tools.log || echo "cmsis-toolbox not found" >> logs/install_tools.log
fi
- name: Upload tool logs
if: always()
uses: actions/upload-artifact@v4
with:
name: tool-logs
path: logs/
- name: Activate Arm tool license
uses: ARM-software/cmsis-actions/armlm@v1
- name: Build project with AC6
id: build_step
working-directory: ./CubeMX/
run: cbuild CubeMX.csolution.yml --packs --toolchain AC6 --rebuild
CollectData:
runs-on: ubuntu-latest
needs: Build
if: always()
steps:
- name: Download tool logs
uses: actions/download-artifact@v4
with:
name: tool-logs
path: logs/
- name: Parse and collect data
run: |
# Parse tool installation log
if [ -f logs/install_tools.log ]; then
echo "Parsing tool installation log..."
cat logs/install_tools.log
else
echo "No tool installation log found"
fi
- name: Generate JSON report
run: |
cat << 'EOF' > collect_data.py
import json
import re
from datetime import datetime
def parse_tool_log(log_path):
cmsis_toolbox_info = None
try:
with open(log_path, 'r') as f:
content = f.read()
# Parse vcpkg list format for cmsis-toolbox
# Looking for line like: "arm:tools/open-cmsis-pack/cmsis-toolbox 2.12.0"
match = re.search(r'arm:tools/open-cmsis-pack/cmsis-toolbox\s+(\S+)', content)
if match:
version = match.group(1)
cmsis_toolbox_info = {
"version": version,
"full_name": "arm:tools/open-cmsis-pack/cmsis-toolbox"
}
except FileNotFoundError:
print("Tool log file not found")
except Exception as e:
print(f"Error parsing tool log: {e}")
return cmsis_toolbox_info
# Collect data
data = {
"workflow": "CubeMX: Test Build",
"build_job": {
"last_run": "${{ needs.Build.outputs.build_timestamp }}",
"status": "${{ needs.Build.outputs.build_status }}",
"passed": "${{ needs.Build.outputs.build_status }}" == "success"
},
"cmsis_toolbox": parse_tool_log("logs/install_tools.log")
}
# Print JSON
print(json.dumps(data, indent=2))
# Save to file
with open('workflow_data.json', 'w') as f:
json.dump(data, f, indent=2)
EOF
python3 collect_data.py
- name: Display collected data
run: |
echo "=== Workflow Data Collection ==="
cat workflow_data.json
- name: Upload workflow data
uses: actions/upload-artifact@v4
with:
name: workflow-data
path: workflow_data.json