mirror of
https://github.com/eclipse-threadx/threadx.git
synced 2026-10-06 06:59:08 +08:00
The ARMv7-A and ARMv8-A ports are generated by update.ps1, which needs PowerShell, so the cortex-a job in ports_arch_check ran on a Windows image and nobody could reproduce it locally on Linux. Add update.sh beside each update.ps1, with the same cores, compilers, copy sets and patches, and move the job to the same Linux image as everything else. The bash scripts were checked against the PowerShell ones by comparing what each reports as drifted. They agree exactly on the 63 files the Windows job last reported, and differ on 12 more, which turn out to be a defect in update.ps1 rather than in the port. Its two .cproject patterns are written as 'value=`"cortex-a7`"' with backticks that survive into the pattern, so that replacement has never matched, while the neighbouring Cortex-A7.NoFPU pattern has no backticks and always worked. The result is that the AC6 example builds for the A5, A8, A9, A12, A15 and A17 cores name cortex-a7 as their CPU while their FPU string is correct. The bash scripts do what the PowerShell ones intended, so regenerating corrects those twelve files. Restore ports_arch as the source for the rest. The implementation of _tx_thread_smp_time_get from #555 was applied to the twenty four generated SMP ports and never to ports_arch, which still held MOV x0, #0 with a FIXME comment, so regenerating would have replaced a working generic timer read with a stub. That implementation now lives in the source. The remaining differences are cosmetic and resolve in favour of the source: a trailing blank line in 38 copies of tx_thread_schedule.S and comment spacing in one tx_port.h. Note that the Cortex-A VFP fix is already present in ports_arch and was never at risk, contrary to what the description of the port consistency checks change said before this was measured. Extend scripts/check_ports.sh to run the A profile generators too, and make it fail when a generator fails or is missing rather than reporting a clean tree, which would have been a false pass. Pin every workflow to ubuntu-24.04. ubuntu-latest already resolves to that image, so nothing changes today, but a future migration becomes a deliberate commit rather than something that happens underneath the -m32 builds. Assisted-by: Claude Code (Opus 5) <noreply@anthropic.com>
204 lines
6.4 KiB
YAML
204 lines
6.4 KiB
YAML
# This is a basic workflow that is manually triggered
|
|
|
|
name: regression_template
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
install_script:
|
|
default: './scripts/install.sh'
|
|
required: false
|
|
type: string
|
|
build_script:
|
|
default: './scripts/build.sh'
|
|
required: false
|
|
type: string
|
|
test_script:
|
|
default: './scripts/test.sh'
|
|
required: false
|
|
type: string
|
|
cmake_path:
|
|
default: './test/cmake'
|
|
required: false
|
|
type: string
|
|
skip_test:
|
|
default: false
|
|
required: false
|
|
type: boolean
|
|
skip_coverage:
|
|
default: false
|
|
required: false
|
|
type: boolean
|
|
coverage_name:
|
|
default: 'default_build_coverage'
|
|
required: false
|
|
type: string
|
|
skip_deploy:
|
|
default: false
|
|
required: false
|
|
type: boolean
|
|
deploy_list:
|
|
default: ''
|
|
required: false
|
|
type: string
|
|
result_affix:
|
|
default: ''
|
|
required: false
|
|
type: string
|
|
|
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
jobs:
|
|
# This workflow contains a single job called "linux_job"
|
|
run_tests:
|
|
if: ${{ !inputs.skip_test}}
|
|
permissions:
|
|
contents: read
|
|
issues: read
|
|
checks: write
|
|
pull-requests: write
|
|
|
|
# The type of runner that the job will run on
|
|
runs-on: ubuntu-24.04
|
|
|
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
steps:
|
|
- name: Check out the repository
|
|
uses: actions/checkout@v4.2.2
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Install softwares
|
|
run: ${{ inputs.install_script }}
|
|
|
|
- name: Build
|
|
run: ${{ inputs.build_script }}
|
|
|
|
- name: Test
|
|
run: ${{ inputs.test_script }}
|
|
|
|
- name: Publish Test Results
|
|
uses: EnricoMi/publish-unit-test-result-action@v2.11.0
|
|
if: always()
|
|
with:
|
|
check_name: Test Results ${{ inputs.result_affix }}
|
|
files: |
|
|
${{ inputs.cmake_path }}/build/*/*.xml
|
|
|
|
- name: Upload Test Results
|
|
if: success() || failure()
|
|
uses: actions/upload-artifact@v4.6.2
|
|
with:
|
|
name: test_reports ${{ inputs.result_affix }}
|
|
path: |
|
|
${{ inputs.cmake_path }}/build/*.txt
|
|
${{ inputs.cmake_path }}/build/*/Testing/**/*.xml
|
|
${{ inputs.cmake_path }}/build/**/regression/output_files/*.bin
|
|
|
|
- name: Configure GitHub Pages
|
|
uses: actions/configure-pages@v5.0.0
|
|
|
|
- name: Generate Code Coverage Results Summary
|
|
if: (!inputs.skip_coverage)
|
|
uses: irongut/CodeCoverageSummary@v1.3.0
|
|
with:
|
|
filename: ${{ inputs.cmake_path }}/coverage_report/${{ inputs.coverage_name }}.xml
|
|
format: markdown
|
|
badge: true
|
|
hide_complexity: true
|
|
output: file
|
|
|
|
- name: Write Code Coverage Summary
|
|
if: (!inputs.skip_coverage)
|
|
run: |
|
|
echo "## Coverage Report ${{ inputs.result_affix }}" >> $GITHUB_STEP_SUMMARY
|
|
cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY
|
|
|
|
- name: Create CheckRun for Code Coverage
|
|
if: ((github.event_name == 'push') || (github.event_name == 'workflow_dispatch') || (github.event.pull_request.head.repo.full_name == github.repository)) && (!inputs.skip_coverage)
|
|
uses: LouisBrunner/checks-action@v2.0.0
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
name: Code Coverage ${{ inputs.result_affix }}
|
|
conclusion: ${{ job.status }}
|
|
output: |
|
|
{"summary":"Coverage Report"}
|
|
output_text_description_file: code-coverage-results.md
|
|
|
|
- name: Add Code Coverage PR Comment
|
|
if: ((github.event_name == 'push') || (github.event.pull_request.head.repo.full_name == github.repository)) && (!inputs.skip_coverage)
|
|
uses: marocchino/sticky-pull-request-comment@v2.9.4
|
|
with:
|
|
header: Code Coverage ${{ inputs.result_affix }}
|
|
path: code-coverage-results.md
|
|
|
|
# Add sudo to move coverage folder created by root user
|
|
- name: Prepare Coverage GitHub Pages
|
|
if: (!inputs.skip_coverage)
|
|
run: >-
|
|
if [ "${{ inputs.result_affix }}" != "" ] && ${{ inputs.skip_deploy }}; then
|
|
sudo mv ${{ inputs.cmake_path }}/coverage_report/${{ inputs.coverage_name }} \
|
|
${{ inputs.cmake_path }}/coverage_report/${{ inputs.result_affix }}
|
|
fi
|
|
|
|
- name: Coverage Report name
|
|
id: artifact
|
|
if: (!inputs.skip_coverage)
|
|
run: echo "coverage_report=coverage_report-$(date +%s)" >> $GITHUB_OUTPUT
|
|
|
|
- name: Upload Code Coverage Artifacts
|
|
uses: actions/upload-artifact@v4.6.2
|
|
if: (inputs.skip_deploy && !inputs.skip_coverage)
|
|
with:
|
|
name: ${{ steps.artifact.outputs.coverage_report }}
|
|
path: ${{ inputs.cmake_path }}/coverage_report
|
|
retention-days: 1
|
|
|
|
- name: Upload Code Coverage Pages
|
|
uses: actions/upload-pages-artifact@v3.0.1
|
|
if: (!inputs.skip_deploy && !inputs.skip_coverage)
|
|
with:
|
|
path: ${{ inputs.cmake_path }}/coverage_report/${{ inputs.coverage_name }}
|
|
|
|
deploy_code_coverage:
|
|
runs-on: ubuntu-24.04
|
|
if: ((github.event_name == 'push') || (github.event_name == 'workflow_dispatch')) && !inputs.skip_coverage && !inputs.skip_deploy && !failure() && !cancelled()
|
|
needs: run_tests
|
|
environment:
|
|
name: github-pages
|
|
url: ${{ steps.deployment.outputs.page_url }}
|
|
permissions:
|
|
pages: write
|
|
id-token: write
|
|
|
|
steps:
|
|
- uses: actions/download-artifact@v4.3.0
|
|
if: ${{ inputs.skip_test }}
|
|
with:
|
|
name: ${{ steps.artifact.outputs.coverage_report }}
|
|
path: ${{ inputs.cmake_path }}/coverage_report
|
|
|
|
- name: Upload Code Coverage Pages
|
|
uses: actions/upload-pages-artifact@v3.0.1
|
|
if: ${{ inputs.skip_test }}
|
|
with:
|
|
path: .
|
|
|
|
- name: Delete Duplicate Code Coverage Artifact
|
|
uses: geekyeggo/delete-artifact@v5.1.0
|
|
with:
|
|
name: coverage_report
|
|
|
|
- name: Deploy GitHub Pages site
|
|
id: deployment
|
|
uses: actions/deploy-pages@v4.0.5
|
|
|
|
- name: Write Code Coverage Report URL
|
|
run: >-
|
|
if [ "${{ inputs.deploy_list }}" != "" ]; then
|
|
for i in ${{ inputs.deploy_list }}; do
|
|
echo 'Coverage report for ' $i ':${{ steps.deployment.outputs.page_url }}'$i >> $GITHUB_STEP_SUMMARY
|
|
done
|
|
else
|
|
echo 'Coverage report: ${{ steps.deployment.outputs.page_url }}' >> $GITHUB_STEP_SUMMARY
|
|
fi
|