blob: 9cd81d7b80a0250cb2da66e7f5bec967080eb4ff [file] [log] [blame]
trigger:
- core
resources:
pipelines:
- pipeline: LLVM
project: CHERI-MCU
source: LLVM
- pipeline: Flute-TCM
project: CHERI-MCU
source: Flute-TCM
- pipeline: sail-cheri-mcu
project: CHERI-MCU
source: sail-cheri-mcu
jobs:
############################################## Linux Builds
- job:
displayName: RTOS tests
pool:
vmImage: ubuntu-20.04
timeoutInMinutes: 300
strategy:
matrix:
HardwareRevokerRelease:
board: flute
flags: --debug-loader=n --debug-scheduler=n --debug-allocator=n
mode: release
SoftwareRevokerRelease:
board: flute-software-revoker
flags: --debug-loader=n --debug-scheduler=n --debug-allocator=n
mode: release
SailRelease:
board: sail
flags: --debug-loader=n --debug-scheduler=n --debug-allocator=n
mode: release
HardwareRevokerDebug:
board: flute
flags: --debug-loader=y --debug-scheduler=y --debug-allocator=y
mode: debug
SoftwareRevokerDebug:
board: flute-software-revoker
flags: --debug-loader=y --debug-scheduler=y --debug-allocator=y
mode: debug
SailDebug:
board: sail
flags: --debug-loader=y --debug-scheduler=y --debug-allocator=y
mode: debug
steps:
- checkout: self
submodules: recursive
- download: LLVM
- download: Flute-TCM
- download: sail-cheri-mcu
- script: |
set -eo pipefail
sudo add-apt-repository ppa:xmake-io/xmake
sudo apt update
sudo apt install xmake
displayName: 'Installing dependencies'
- script: |
chmod +x $(Pipeline.Workspace)/$(resources.triggeringAlias)/LLVM/LLVM/bin/* \
$(Pipeline.Workspace)/$(resources.triggeringAlias)/Flute-TCM/FluteSimulator/* \
$(Pipeline.Workspace)/$(resources.triggeringAlias)/sail-cheri-mcu/SailSimulator/*
echo $(Pipeline.Workspace)/$(resources.triggeringAlias)/LLVM
echo $(Pipeline.Workspace)
ls -R $(Pipeline.Workspace)
displayName: 'See where anything is installed'
- script: |
ls $(Pipeline.Workspace)/$(resources.triggeringAlias)/LLVM/LLVM/bin/
echo xmake f -P . --board=$(board) --sdk=$(Pipeline.Workspace)/$(resources.triggeringAlias)/LLVM/LLVM/ $(flags) -m $(mode)
xmake f -P . --board=$(board) --sdk=$(Pipeline.Workspace)/$(resources.triggeringAlias)/LLVM/LLVM/ $(flags) -m $(mode)
workingDirectory: 'tests'
displayName: 'Configure the build'
- script: |
xmake -P . -v
workingDirectory: 'tests'
displayName: 'Building the test suite'
- script: |
$(Pipeline.Workspace)/$(resources.triggeringAlias)/sail-cheri-mcu/SailSimulator/cheriot_sim -p --no-trace build/cheriot/cheriot/$(mode)/test-suite
condition: startsWith(variables['board'],'sail')
workingDirectory: 'tests'
displayName: 'Running the test suite on Sail'
- script: |
export PATH=$(Pipeline.Workspace)/$(resources.triggeringAlias)/Flute-TCM/FluteSimulator:$PATH
for I in `seq 32768` ; do echo 00000000 >> tail.hex ; done
elf_to_hex build/cheriot/cheriot/$(mode)/test-suite Mem.hex
hex_to_tcm_hex.sh
cp tail.hex Mem-TCM-tags-0.hex
exe_HW_sim +tohost | tee sim.log
EXIT_CODE=$(expr $(printf '%d' $(grep -E -e 'tohost_value is 0x[0-9a-zA-Z]+' -o sim.log | awk '{print $3}')) / 2)
echo "Exit code: $EXIT_CODE"
exit $EXIT_CODE
condition: startsWith(variables['board'],'flute')
workingDirectory: 'tests'
displayName: 'Running the test suite on Flute'
- script: |
set -eo pipefail
for example_dir in $PWD/examples/*/; do
cd $example_dir
echo Building $example_dir
xmake f --board=$(board) --sdk=$(Pipeline.Workspace)/$(resources.triggeringAlias)/LLVM/LLVM/ $(flags) -m $(mode)
xmake
done
displayName: 'Building the examples'
- script: |
set -eo pipefail
for example_dir in $PWD/examples/*/; do
cd $example_dir
echo Running $example_dir
example_name=$(basename ${example_dir#*.})
$(Pipeline.Workspace)/$(resources.triggeringAlias)/sail-cheri-mcu/SailSimulator/cheriot_sim \
build/cheriot/cheriot/$(mode)/${example_name}
done
condition: startsWith(variables['board'],'sail')
displayName: 'Running the examples'
- job:
displayName: Check coding style
pool:
vmImage: ubuntu-20.04
timeoutInMinutes: 300
steps:
- checkout: self
submodules: recursive
- download: LLVM
- script: |
chmod +x $(Pipeline.Workspace)/$(resources.triggeringAlias)/LLVM/LLVM/bin/*
echo $(Pipeline.Workspace)/$(resources.triggeringAlias)/LLVM
echo $(Pipeline.Workspace)
ls -R $(Pipeline.Workspace)
displayName: 'See where anything is installed'
- script: |
./scripts/run_clang_tidy_format.sh $(Pipeline.Workspace)/$(resources.triggeringAlias)/LLVM/LLVM/bin/
displayName: 'Running clang-tidy and clang-format'
- job:
displayName: Compliance checks
pool:
vmImage: windows-latest
steps:
- task: securedevelopmentteam.vss-secure-development-tools.build-task-credscan.CredScan@2
displayName: 'Run CredScan'
inputs:
debugMode: false
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: 'Component Detection'
- task: securedevelopmentteam.vss-secure-development-tools.build-task-publishsecurityanalysislogs.PublishSecurityAnalysisLogs@3
displayName: 'Publish Security Analysis Logs'