##Trusted Firmware CI Infrastructure Project - Phase 2
###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>**Arm CI Jobs migration - CR-01**
{icon check-circle color=green} Arm CI Jobs migration ([[https://review.trustedfirmware.org/c/ci/tf-a-job-configs/+/6217|6217]], [[https://review.trustedfirmware.org/c/ci/tf-a-job-configs/+/6384|6384]], [[https://review.trustedfirmware.org/c/ci/tf-a-job-configs/+/6416|6416]], [[https://review.trustedfirmware.org/c/ci/tf-a-job-configs/+/6417|6417]], [[https://review.trustedfirmware.org/c/ci/tf-a-job-configs/+/6217|6217]], [[https://review.trustedfirmware.org/c/ci/tf-a-job-configs/+/6466|6466]])
**FVP Support (TF-M ID3, TF-A ID26)**
{icon check-circle color=green} FVP models running CI jobs ([[https://projects.linaro.org/browse/LSS-1393 | LSS-1393]], [[https://review.trustedfirmware.org/c/ci/tf-a-ci-scripts/+/5180|5180]], CR-01)
**Staging Scripts (TF-M ID7, TF-A ID7)**
{icon check-circle color=green} A staging version of the scripts created on the production instance ([[https://projects.linaro.org/browse/LSS-1430 | LSS-1430]])
**Job configuration**
{icon check-circle color=green} Ability to build multiple configurations of TF-A (TF-A ID9, [[https://review.trustedfirmware.org/c/ci/tf-a-job-configs/+/4917|tf-a-job-configs/4917]] superseded by CR-01)
{icon check-circle color=green} Provide a way to re-trigger the jobs manually (TF-A ID3, [[https://projects.linaro.org/browse/LSS-1470|LSS-1470]])
{icon check-circle color=green} Ability to specify at run time that a CI job should keep all artifacts indefinitely. (TF-A ID22 [[https://projects.linaro.org/browse/LSS-1485|LSS-1485]])
** TF-A Static Analysis Integration (TF-A ID17, TF-A ID19)**
{icon check-circle color=green} Arm check scripts ([[https://review.trustedfirmware.org/c/ci/tf-a-job-configs/+/4938|4938]] superseded by CR-01)
{icon check-circle color=green} cppcheck ([[https://review.trustedfirmware.org/c/ci/tf-a-job-configs/+/4938|4938]] superseded by CR-01)
{icon check-circle color=green} Coverity Free online check ([[https://review.trustedfirmware.org/c/ci/tf-a-job-configs/+/4938|4938]] superseded by CR-01)
**TF-M Static Analysis Integration (TF-M ID1)**
{icon check-circle color=green} Arm check scripts ([[https://review.trustedfirmware.org/c/ci/tf-m-job-configs/+/4973| 4973]], [[https://review.trustedfirmware.org/c/ci/tf-m-ci-scripts/+/4972|4972]])
{icon check-circle color=green} cppcheck
{icon check-circle color=green} Coverity Free online check ([[https://review.trustedfirmware.org/c/ci/tf-m-ci-scripts/+/5293|tf-m-ci-scripts/5293]])
</td>
<td> </td>
<td>
</td>
</tr>
<tr>
<td>M3 & M4</td>
<td>**TF-A Tests**
{icon check-circle color=green} Create CI loop for TF-A Tests (TF-A ID2, [[https://review.trustedfirmware.org/c/ci/tf-a-job-configs/+/4873|4873]] superseded by CR-01)
{icon check-circle color=green} Ability to build multiple configurations of TF-A Tests (TF-A ID12, [[https://review.trustedfirmware.org/c/ci/tf-a-job-configs/+/4917|4917]] superseded by CR-01)
{icon check-circle color=green} CI results for TF-A and TF-TF must stay available for a minimum duration (eg. 1 week) (TF-A ID21)
{icon check-circle color=green} Run TF-TF tests "bare metal" on FVP (TF-A ID24 [[https://review.trustedfirmware.org/c/ci/tf-a-ci-scripts/+/5180|5180]] superseded by CR-01)
**Test Levels**
{icon check-circle color=green} 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, CR-01)
</td>
<td> </td>
<td>
</td>
</tr>
<tr>
<td>M5</td>
<td>{icon check-circle color=green} **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 in the docker containers**
{icon check-circle color=green} Ability to integrate alternative compilers into builds (TF-M ID9, TF-A ID10 ) [[https://review.trustedfirmware.org/c/ci/dockerfiles/+/5454|dockerfiles/+/5454]]
{icon cogs color=blue} Ability to use different versions of a compiler for builds (TF-A ID11)
{icon cogs color=blue} 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> </td>
<td>
</td>
</tr>
<tr>
<td>M6, M7 & M8</td>
<td> **Musca A/B1 Support (TF-M ID5)**
{icon check-circle color=green} Musca B1 board installed in Linaro Cambridge LAVA lab.
{icon check-circle color=green} Musca B1 board support integrated into the CI loop.
([[https://projects.linaro.org/browse/LSS-1414|LSS-1414]])
**Dashboard configured in SQUAD instance (TF-M ID2, TF-A ID32)**
{icon cogs color=blue} Metrics and test results from LAVA jobs visible in the SQUAD dashboard
**Deploy HTML Reports (TF-A ID23)**
{icon check-circle color=green} Deliver ongoing Linaro internal work to produce HTML reports from SQUAD data
**Boot Results passed to Gerrit (No ID)**
{icon cogs color=blue} Use the LAVA notification service to pass boot results back to the review that triggered the job(s)
**QEMU Support (TF-M ID4)**
{icon check-circle color=green} Integrate the QEMU SSE-200 v8m machine into the CI loop.
</td>
<td>Oct 21st</td>
<td>In Progress
Musca A removed and S1 on hold for Phase 3 (per 7/2 Meeting).
</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>Oct 28th</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>Nov 11th</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>Nov 25th</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>
###How to submit LSS tickets to Linaro
1) Go to https://projects.linaro.org/secure/CreateIssue!default.jspa
2) Fill in the drop down boxes:
- Project: LAB & System Software (LSS)
- Issue Type: Ticket
- Click Next
3) Fill in the required details
- Summary: You should fill in the "Summary" with a snappy title. I've started to prefix my titles with "TF CI: " to help identify them in the list of issues.
- Components: "Systems (Bugzilla, Git, Gerrit, Jenkins)"
- Client Stakeholder: "Trusted-Firmware"
4) Fill in the issue Description
- You will need to fill in the Description, even if you think the title is sufficient. Provide enough overview detail so the issue is clear to understand by management, but make sure you include all the technical details you need for the support engineer to reproduce and resolve your problem.
5) Click the "Create" button at the bottom of the page
6) Add Watchers
- It's probably a good idea to add Bill Fletcher and Ryan Harkin to the Watchers on the ticket.
If you are unable to create a ticket or have issues, you may need Jira access setup. Please contact: Glen (glen.valante@linaro.org) or Bill (bill.fletcher@linaro.org) or Ryan (ryan.harkin@linaro.org)