mirror of
https://github.com/eclipse-threadx/threadx.git
synced 2025-11-16 12:34:48 +00:00
Convert ADO pipelines to GitHub actions (#321)
* Convert ADO pipelines to GitHub actions
* Remove version in uses as not valid for local workflows
* Fix cmake path and add deploy url affix
* Add SMP build job
* Fix code coverage URL
* Add affix to titles of steps
* Remove ADO pipelines
* Add affix to titles of code coverage
* separate PR results for multiple jobs
* Revert "separate PR results for multiple jobs"
This reverts commit 6da13540fd.
* separate PR results for multiple jobs
This commit is contained in:
137
.github/workflows/regression_template.yml
vendored
Normal file
137
.github/workflows/regression_template.yml
vendored
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
# 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
|
||||||
|
deploy_url_affix:
|
||||||
|
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:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
issues: read
|
||||||
|
checks: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
# The type of runner that the job will run on
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
# 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
|
||||||
|
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@v3.1.3
|
||||||
|
with:
|
||||||
|
name: test_reports
|
||||||
|
path: |
|
||||||
|
${{ inputs.cmake_path }}/build/*.txt
|
||||||
|
${{ inputs.cmake_path }}/build/*/Testing/**/*.xml
|
||||||
|
|
||||||
|
- name: Configure GitHub Pages
|
||||||
|
uses: actions/configure-pages@v3.0.6
|
||||||
|
|
||||||
|
- name: Upload GitHub Pages artifact
|
||||||
|
uses: actions/upload-pages-artifact@v2.0.0
|
||||||
|
with:
|
||||||
|
path: ${{ inputs.cmake_path }}/coverage_report/default_build_coverage
|
||||||
|
|
||||||
|
- name: Generate Code Coverage Results Summary
|
||||||
|
uses: irongut/CodeCoverageSummary@v1.3.0
|
||||||
|
with:
|
||||||
|
filename: ${{ inputs.cmake_path }}/coverage_report/default_build_coverage.xml
|
||||||
|
format: markdown
|
||||||
|
badge: true
|
||||||
|
hide_complexity: true
|
||||||
|
output: file
|
||||||
|
|
||||||
|
- name: Write Code Coverage Summary
|
||||||
|
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.pull_request.head.repo.full_name == github.repository)
|
||||||
|
uses: LouisBrunner/checks-action@v1.6.2
|
||||||
|
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)
|
||||||
|
uses: marocchino/sticky-pull-request-comment@v2
|
||||||
|
with:
|
||||||
|
header: Code Coverage ${{ inputs.result_affix }}
|
||||||
|
path: code-coverage-results.md
|
||||||
|
|
||||||
|
deploy_code_coverage:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event_name == 'push'
|
||||||
|
needs: run_tests
|
||||||
|
environment:
|
||||||
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}${{ inputs.deploy_url_affix }}
|
||||||
|
permissions:
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Deploy GitHub Pages site
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@v1.2.9
|
||||||
|
|
||||||
|
- name: Write Code Coverage Report URL
|
||||||
|
run: |
|
||||||
|
echo '[Open Coverage Report](${{ steps.deployment.outputs.page_url }}${{ inputs.deploy_url_affix }})' >> $GITHUB_STEP_SUMMARY
|
||||||
29
.github/workflows/regression_test.yml
vendored
Normal file
29
.github/workflows/regression_test.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
name: regression_test
|
||||||
|
|
||||||
|
# Controls when the action will run. Triggers the workflow on push or pull request
|
||||||
|
# events but only for the master branch
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||||
|
jobs:
|
||||||
|
tx:
|
||||||
|
uses: ./.github/workflows/regression_template.yml
|
||||||
|
with:
|
||||||
|
build_script: ./scripts/build_tx.sh
|
||||||
|
test_script: ./scripts/test_tx.sh
|
||||||
|
cmake_path: ./test/tx/cmake
|
||||||
|
deploy_url_affix: tx/
|
||||||
|
result_affix: ThreadX
|
||||||
|
tx_smp:
|
||||||
|
uses: ./.github/workflows/regression_template.yml
|
||||||
|
with:
|
||||||
|
build_script: ./scripts/build_smp.sh
|
||||||
|
test_script: ./scripts/test_smp.sh
|
||||||
|
cmake_path: ./test/smp/cmake
|
||||||
|
deploy_url_affix: smp/
|
||||||
|
result_affix: SMP
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
trigger:
|
|
||||||
- master
|
|
||||||
|
|
||||||
pr:
|
|
||||||
branches:
|
|
||||||
include:
|
|
||||||
- master
|
|
||||||
paths:
|
|
||||||
include:
|
|
||||||
- ".pipelines/tx.yml"
|
|
||||||
- "common_smp/**"
|
|
||||||
- "samples/**"
|
|
||||||
- "test/tx/**"
|
|
||||||
- "utility/**"
|
|
||||||
- "ports_smp/linux/gnu/**"
|
|
||||||
|
|
||||||
|
|
||||||
pool:
|
|
||||||
vmImage: "ubuntu-22.04"
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- task: PipAuthenticate@1
|
|
||||||
displayName: 'Pip Authenticate'
|
|
||||||
inputs:
|
|
||||||
# Provide list of feed names which you want to authenticate.
|
|
||||||
# Project scoped feeds must include the project name in addition to the feed name.
|
|
||||||
artifactFeeds: 'X-Ware/X-Ware_PublicPackages'
|
|
||||||
|
|
||||||
- bash: sudo $(Build.SourcesDirectory)/scripts/install.sh
|
|
||||||
displayName: 'Install softwares'
|
|
||||||
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: 'SDL check'
|
|
||||||
inputs:
|
|
||||||
filePath: '$(Build.SourcesDirectory)/scripts/sdl_check.sh'
|
|
||||||
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: 'Build'
|
|
||||||
inputs:
|
|
||||||
filePath: '$(Build.SourcesDirectory)/scripts/build_smp.sh'
|
|
||||||
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: 'Test'
|
|
||||||
inputs:
|
|
||||||
filePath: '$(Build.SourcesDirectory)/scripts/test_smp.sh'
|
|
||||||
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
displayName: 'PublishTestResults'
|
|
||||||
inputs:
|
|
||||||
testResultsFormat: 'cTest'
|
|
||||||
testResultsFiles: '*/Testing/**/*.xml'
|
|
||||||
searchFolder: '$(Build.SourcesDirectory)/test/smp/cmake/build'
|
|
||||||
testRunTitle: 'SMP-Tests'
|
|
||||||
buildConfiguration: 'Release'
|
|
||||||
|
|
||||||
- task: CopyFiles@2
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
displayName: 'CopyTestReports'
|
|
||||||
inputs:
|
|
||||||
SourceFolder: '$(Build.SourcesDirectory)/test/smp/cmake'
|
|
||||||
Contents: |
|
|
||||||
build/*.txt
|
|
||||||
build/*/Testing/**/*.xml
|
|
||||||
coverage_report/**/*
|
|
||||||
TargetFolder: '$(build.artifactstagingdirectory)/test_reports_SMP'
|
|
||||||
|
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
displayName: 'PublishBuildArtifacts'
|
|
||||||
inputs:
|
|
||||||
pathToPublish: $(build.artifactstagingdirectory)
|
|
||||||
|
|
||||||
- task: PublishCodeCoverageResults@1
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
displayName: 'Test SMP (PublishCodeCoverageResults)'
|
|
||||||
inputs:
|
|
||||||
codeCoverageTool: 'Cobertura'
|
|
||||||
summaryFileLocation: '$(Build.SourcesDirectory)/test/smp/cmake/coverage_report/default_build_coverage.xml'
|
|
||||||
pathToSources: '$(Build.SourcesDirectory)/test/smp/cmake'
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
trigger:
|
|
||||||
- master
|
|
||||||
|
|
||||||
pr:
|
|
||||||
branches:
|
|
||||||
include:
|
|
||||||
- master
|
|
||||||
paths:
|
|
||||||
include:
|
|
||||||
- ".pipelines/tx.yml"
|
|
||||||
- "common/**"
|
|
||||||
- "samples/**"
|
|
||||||
- "test/tx/**"
|
|
||||||
- "utility/**"
|
|
||||||
- "ports/linux/gnu/**"
|
|
||||||
|
|
||||||
pool:
|
|
||||||
vmImage: "ubuntu-22.04"
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- task: PipAuthenticate@1
|
|
||||||
displayName: 'Pip Authenticate'
|
|
||||||
inputs:
|
|
||||||
# Provide list of feed names which you want to authenticate.
|
|
||||||
# Project scoped feeds must include the project name in addition to the feed name.
|
|
||||||
artifactFeeds: 'X-Ware/X-Ware_PublicPackages'
|
|
||||||
|
|
||||||
- bash: sudo $(Build.SourcesDirectory)/scripts/install.sh
|
|
||||||
displayName: 'Install softwares'
|
|
||||||
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: 'SDL check'
|
|
||||||
inputs:
|
|
||||||
filePath: '$(Build.SourcesDirectory)/scripts/sdl_check.sh'
|
|
||||||
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: 'Build'
|
|
||||||
inputs:
|
|
||||||
filePath: '$(Build.SourcesDirectory)/scripts/build_tx.sh'
|
|
||||||
|
|
||||||
- task: Bash@3
|
|
||||||
displayName: 'Test'
|
|
||||||
inputs:
|
|
||||||
filePath: '$(Build.SourcesDirectory)/scripts/test_tx.sh'
|
|
||||||
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
displayName: 'PublishTestResults'
|
|
||||||
inputs:
|
|
||||||
testResultsFormat: 'cTest'
|
|
||||||
testResultsFiles: '*/Testing/**/*.xml'
|
|
||||||
searchFolder: '$(Build.SourcesDirectory)/test/tx/cmake/build'
|
|
||||||
testRunTitle: 'TX-Tests'
|
|
||||||
buildConfiguration: 'Release'
|
|
||||||
|
|
||||||
- task: CopyFiles@2
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
displayName: 'CopyTestReports'
|
|
||||||
inputs:
|
|
||||||
SourceFolder: '$(Build.SourcesDirectory)/test/tx/cmake'
|
|
||||||
Contents: |
|
|
||||||
build/*.txt
|
|
||||||
build/*/Testing/**/*.xml
|
|
||||||
coverage_report/**/*
|
|
||||||
TargetFolder: '$(build.artifactstagingdirectory)/test_reports_TX'
|
|
||||||
|
|
||||||
- task: PublishBuildArtifacts@1
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
displayName: 'PublishBuildArtifacts'
|
|
||||||
inputs:
|
|
||||||
pathToPublish: $(build.artifactstagingdirectory)
|
|
||||||
|
|
||||||
- task: PublishCodeCoverageResults@1
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
displayName: 'Test TX (PublishCodeCoverageResults)'
|
|
||||||
inputs:
|
|
||||||
codeCoverageTool: 'Cobertura'
|
|
||||||
summaryFileLocation: '$(Build.SourcesDirectory)/test/tx/cmake/coverage_report/default_build_coverage.xml'
|
|
||||||
pathToSources: '$(Build.SourcesDirectory)/test/tx/cmake'
|
|
||||||
Reference in New Issue
Block a user