Samsung / ONE

On-device Neural Engine
Other
429 stars 157 forks source link

[onert-micro] Create and integrate to CI cortex-m device farm for testing #10579

Open SlavikMIPT opened 1 year ago

SlavikMIPT commented 1 year ago

What

Need to create and integrate to CI cortex-m device farm for testing

Why

We need tests for cortex-m platform

Possible solution

We can use a PC with development boards connected to it (raspberry pi for example or office PC) with Jenkins on it. Jenkins polls SCM for changes, builds tests for different cortex-m platforms and runs it on physical boars, After this it publishes report to github via comments (using github API plugins for jenkins) and permits or forbids merging of this PR.

We need to be careful with automatic builds of PRs - because everyone can make a PR and make an injection of malicious code(for example automatically run builds for PRs from users in white list). Also we need a github bot with the necessary access rights to the repo.

@seanshpark @hseok-oh @soldatov-a

hseok-oh commented 1 year ago

Where are your planing to place the main server of Jenkins?

SlavikMIPT commented 1 year ago

Where are your planing to place the main server of Jenkins?

  • http://13.125.34.93:8080/ ?

    • Then please let me know your plan to define and add new test job to Jenkins
  • New Jenkins main server for onert-micro?

    • Then please let us know your new Jenkins server's webhook address secretly

Unfortunately we cant use white IP address - so we a going to poll SCM

SlavikMIPT commented 1 year ago

@hseok-oh

SlavikMIPT commented 1 year ago

I suggest to implement it following way:

  1. PC with development boards connected to it (raspberry pi for example or office PC) with Jenkins on it. Jenkins polls SCM for changes, builds tests for different cortex-m platforms and runs it on physical boars, After this it pushes logs to the separate repo created for logs.
  2. Github workflow triggered by PR is waiting for the changes in this repo (with timeout) and runs the script for published logs which ends correctly or fails if logs contain errors (and blocks merging of PR)