##Trusted Firmware CI Infrastructure Project
###Project Milestones & Status
<table>
<tr> <th>Milestone</th> <th>Deliverables</th><th>Target Completion</th><th>Status</th></tr>
<tr>
<td>M1</td>
<td>**Planning, Handover and Deployment**
{icon check-circle color=green} SOW and project plan
{icon check-circle color=green} Hand over from OCE to Developer Services
</td>
<td> 1-Jun-20 </td>
<td> Completed
Project Plan & SoW Reviewed. Meetings have been held and follow on meetings will occur as normal course of the project
</td>
</tr>
<tr>
<td>M2</td>
<td>**FVP Support (TF-M ID3, TF-A ID26)**
{icon cogs color=blue} FVP models running CI jobs
**Staging Scripts (TF-M ID7, TF-A ID7)**
{icon cogs color=blue} A staging version of the scripts created on the production instance
**Job configuration**
- Ability to build multiple configurations of TF-A (TF-A ID9)
- Provide a way to re-trigger the jobs manually (TF-A ID3)
- Ability to specify at run time that a CI job should keep all artefacts indefinitely. (TF-A ID22)
**Static Analysis Integration (TF-M ID1, TF-A ID17, TF-A ID19)**
- Arm check scripts
- cppcheck
- Coverity Free online check
</td>
<td>25-Jun-20</td>
<td>In Progress</td>
</tr>
<tr>
<td>M3 & M4</td>
<td>**TF-A Tests**
- Create CI loop for TF-A Tests (TF-A ID2)
- Ability to build multiple configurations of TF-A Tests (TF-A ID12)
- CI results for TF-A and TF-TF must stay available for a minimum duration (eg. 1 week) (TF-A ID21)
- Run TF-TF tests "bare metal" on FVP (TF-A ID24)
**Test Levels**
- Provide facility for a job to pass the "level" of testing required, eg. minimal, full, etc., where different tests are executed depending on the level passed into (TF-M ID10, TF-A ID31)
</td>
<td>23-Jul-20</td>
<td></td>
</tr>
<tr>
<td>M5</td>
<td>**Specify FVP Versions (TF-A ID13)**
- Update FVP support to host multiple versions of models
- Allow jobs to specify which version of FVP models are used
**Compilers accessed via volumes mounted in the docker containers**
- Ability to integrate alternative compilers into builds (TF-M ID9, TF-A ID10) (2 man days)
- Ability to use different versions of a compiler for builds (TF-A ID11) (2 man days)
- Integrate one alternative compiler and have two versions of the standard Arm GCC compiler to demonstrate how the functionality works. Compilers should be secure, preventing users from accessing them directly, and should only be used for building TF CI jobs
</td>
<td>5-Aug-20</td>
<td></td>
</tr>
<tr>
<td>M6, M7 & M8</td>
<td> **Musca A/B1 Support (TF-M ID5)**
- Musca A board installed in Linaro Cambridge LAVA lab.
- Musca A board support integrated into the CI loop.
- Musca B1 board installed in Linaro Cambridge LAVA lab.
- Musca B1 board support integrated into the CI loop.
**Dashboard configured in SQUAD instance (TF-M ID2, TF-A ID32)**
- Metrics and test results from LAVA jobs visible in the SQUAD dashboard
**Deploy HTML Reports (TF-A ID23)**
- Deliver ongoing Linaro internal work to produce HTML reports from SQUAD data
**Boot Results passed to Gerrit (No ID)**
- Use the LAVA notification service to pass boot results back to the review that triggered the job(s)
**QEMU Support (TF-M ID4)**
- Integrate the QEMU SSE-200 v8m machine into the CI loop.
</td>
<td>21-Jul-20</td>
<td></td>
</tr>
<tr>
<td>M9</td>
<td>**Integrate PSA compliance tests (TF-M ID6)**
- Provide a build option to run PSA API tests
- Ensures patches will not break PSA compliance
</td>
<td>24-Aug-20</td>
<td></td>
</tr>
<tr>
<td>M10</td>
<td>**Modularise Build and Test Process**
- Remove all configuration out of the scripts and into the YAML provided to control the job. (TF-M ID14)
- Allow the user to trigger a job with default, custom or release parameters. This gives limited permissions to the user to create jobs. (TF-M ID18)
</td>
<td>10-Sep-20</td>
<td></td>
</tr>
<tr>
<td>M11</td>
<td>**Documentation and User Guide (TF-M ID8)**
- How to use the complete CI loop
- How to integrate a new platform, including boards in a LAVA Federated lab
- How to deploy your own instance
</td>
<td>29-Sep-20</td>
<td></td>
</tr>
</table>
<table>
<tr>
<td>Completed {icon check-circle color=green} </td>
<td>In Progress {icon cogs color=blue} </td>
<td>Blocked {icon minus-circle color=red} </td>
</tr>
</table>