Re: [Fuego] How run Fuego tools on a Jenkins slave node

<[email protected]> Fri, 27 Aug 2021 16:17:41 +0000
Newsgroups dev.linux.lists.fuego
Message-ID <BYAPR13MB250375DC20FD7543D4C02CA2FDC89@BYAPR13MB2503.namprd13.prod.outlook.com>
I just realized you might be asking about how to make the Fuego Jenkins instance a slave
to your already-existing Jenkins instance master.  I have not done a configuration of
Jenkins master/slave like this, but here are some instructions for doing this.
https://baykara.medium.com/part-ii-add-a-jenkins-slave-to-jenkins-master-857ef055122d


> -----Original Message-----
> From: Fuego <[email protected]> On Behalf Of [email protected]
> 
> > -----Original Message-----
> > From: Fuego <[email protected]> On Behalf Of Michael Nazzareno Trimarchi
> >
> > Hi
> >
> > I have already a ci setup but i would like to use Fuego and run script on slave and get results on master node. Is there a way to configure
> it?
> 
> I believe so.  Other Fuego users have used Fuego with CI systems other than the
> default one included (the Jenkins instance inside the Fuego docker container).
> 
> You can perform tests using Fuego, using the 'ftc' command line tool.
> 
> The default installation of Fuego creates a docker container where Fuego core
> scripts and Jenkins are installed.  You can run 'ftc' from inside this container
> (which is where the included Jenkins will execute test jobs from), or from outside
> the container, from the command line.
> 
> When you install Fuego, you have the option to build the container without Jenkins
> (so it just consist of the build environment for the tests, and the Fuego core scripts).
> See http://fuegotest.org/wiki/Installing_Fuego#without_Jenkins for a description
> of the install option used for this.
> 
> By way of example, when Fuego is run with Jenkins, it creates Jenkins jobs with
> the following command sequence for the "build" attribute (this example is for
> the test Functional.hello_world):
> 
> 
> #logging areas=pre_test,pre_check,build,makepkg,deploy,snapshot,run,
> #    post_test,processing, parser,criteria,charting
> #logging levels=debug,verbose,info,warning,error
> #export FUEGO_LOGLEVELS="run:debug,parser:verbose"
> export FUEGO_CALLER="jenkins"
> ftc run-test -b $NODE_NAME -t Functional.hello_world -s default \
>     --timeout 6m \
>     --reboot false \
>     --rebuild false \
>     --precleanup true \
>     --postcleanup true
> 
> If the environment variable FUEGO_CALLER is set to "jenkins", then ftc and the
> core test system perform additional steps with the integrated
> Jenkins system (such as augmenting the Jenkins build with pointers to Fuego
> test artifacts, so they are accessible in the Jenkins interface).  However, if you
> are running Jenkins somewhere else (not in the
> Fuego container), then I think the jobs and build data will not be in the
> expected directories for Fuego to operate on.  So this aspect of Fuego/Jenkins
> integration would be lost (or you would have to recreate it).
> 
> If FUEGO_CALLER is not set, then ftc and the core test system will just output
> the test execution to stdout, and deposit test artifacts in the fuego-rw/logs
> directory.  Build artifacts (e.g. the test program source and build directories
> are under fuego-rw/buildzone).
> 
> See 'ftc run-test help' for information about the arguments used in the above
> example ftc invocation. Not all of these arguments are required (in fact, most
> of those will default to the values shown above, but they are placed in the Jenkins
> job definition to allow users to more easily remember and edit them for a particular job.)
> 
> If I had a BeagleBone Black board in my lab, named 'bbb', I could execute
> a test at the command line with: "ftc run-test -b bbb -t hello_world"
> 
> By default, visualization of Fuego results (tables and plots) are prepared
> for use in the integrated Jenkins interface.  However, you can also generate reports
> in various formats, that might be useful with your Jenkins (or whatever other CI
> system one might use).
> 
> Look at the options for 'ftc gen-report', particularly the 'txt', 'html', or 'csv' output
> formats, which might be import-able into your CI system, for generating your
> own results data displays.
> 
> The graphical results (measure plots) for Benchmark data is generated in a json
> format which is interpreted by a javascript module called 'mod.js', which uses
> a graphing module called 'flot' that is installed as a Jenkins plugin.  'flot' and 'mod.js'
> might be usable with other CI systems that have a web-based user interface
> (as they are just javascript (well, jquery)) but it would take some work to perform
> that integration.
> 
> It sounds like part of your question is about how the host/target relationship is
> handled in Fuego. By default, a Fuego test runs on a host, and the test programs
> are actually transferred to the device under test and executed there, during test
> execution.  However, some Fuego users install the Fuego core system on the actual
> device under test, and execute it locally.  In this case, the remote aspect of the
> test would be handled by the calling CI system, not by Fuego.
> 
> Normally, with the integrated version of Jenkins (the one in the Fuego docker container),
> there is a slave used that is assigned to each node (board).  This ends up serializing
> the access to that board.  But this slave runs on the host machine, where Jenkins
> and Fuego are installed.  Are you asking about executing a Jenkins slave on a remote
> machine (perhaps the device under test), and having Fuego installed there?
> 
> Hopefully the information above  is helpful.
> 
> I'm not sure exactly what you are asking, but please let me know if you need more
> information.  I am happy to discuss your configuration, and see if Fuego would work
> for you.
>  -- Tim
> 
> 
> _______________________________________________
> Fuego mailing list
> [email protected]
> https://lists.linuxfoundation.org/mailman/listinfo/fuego