GithubHelp home page GithubHelp logo

b59118 / fuego Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 91.97 MB

License: BSD 3-Clause "New" or "Revised" License

Dockerfile 0.57% Shell 3.69% Java 0.24% JavaScript 1.27% CSS 0.02% HTML 0.01% Python 94.20%

fuego's Introduction

Fuego
=======================

Fuego is a test system designed specifically for embedded Linux testing.
It supports automated testing of embedded targets (boards or products)
from a host system.  This is it's primary method of test execution.

A quick introduction to Fuego is that is consists of a host/target script
engine, and ver 100 pre-packaged tests.  These are installed in a docker
container, along with a Jenkins web interface and job control system, ready
for out-of-the-box Continuous Integration testing of your embedded Linux
project.

To use Fuego, you need to install it, then add a board file to let
Fuego know information about the board you are testing. You also add
a toolchain (if needed) for your board, and then populate the Jenkins
interface with test jobs that you are interested in.

Then start testing!

Getting Started
---------------
The first thing to do with Fuego is to create your own Docker container
with the Fuego distribution of host-side packages (including Jenkins)
and tests.

Fuego currently comes in 2 source repositories: one for building the
container, and one with the tests.  This README is in the 'fuego' repository.
You also need the 'fuego-core' repository, in a directory parallel to this
one.

Installing Fuego to a docker container
-------------------------------------------------------------------------------
Run install.sh from the top directory. This launches the ``docker build''
command to create a docker image - named 'fuego' by default.
It also creates a container from this image, called 'fuego-container'

Note that if you have tests or test infrastructure that requires
access to USB or serial ports, you should run install.sh with the
'--priv' option, like so:
  ./install.sh --priv

Running
-------------------------------------------------------------------------------
To start your Fuego container, issue the following command top directory:

  ./start.sh fuego-container

(or, use the name of whatever container was created in the install stop).

The shell used to start the container will enter a shell inside the
container.  If you exit that shell, the container will stop, and you
will be returned to the host shell.

Once the container is started, a web interface to the test system will
be available at: http://localhost:8080/fuego


Configuration
-------------------------------------------------------------------------------
Please see the docs (docs/fuego-docs.pdf) for configuration and usage.

By default, Fuego configures Docker to use the host network.
(See the --net="host" option in fuego-host-scripts/docker-create-container.sh.)
Please see the Docker manual for different network setup options.

Updating fuego-core and fuego
-------------------------------------------------------------------------------
The repository fuego-core is mounted as a external docker volume. All you
need to do is to issue a ``git pull'' from the host directory. This will
update the following components:
- Fuego engine
- tests
- overlays

Board configurations and toolchain setup can be updated by doing ``git pull''
from within the fuego host directory.

Updating the Jenkins version
-------------------------------------------------------------------------------

Modify the version and checksum
    $ vi Dockerfile
        ARG JENKINS_VERSION=2.32.1
        ARG JENKINS_SHA=3cbe9b6d4d82c975642ea4409e21e087

Re-build the flot plugin
    $ sudo apt-get install maven
    $ vi pom.xml
        -> change the jenkins version
    $ mvn install
    $ cp target/flot.hpi

Re-build Jenkins' config.xml (if necessary):
    + Install fuego as usual with the new Jenkins version
    + Manual configuration (click on 'Manage jenkins')
        - configure system
            + environment variables
                FUEGO_CORE /fuego-core
                FUEGO_RW /fuego-rw
                FUEGO_RO /fuego-ro
        - Configure global security
            + plain text => safe html
    + Copy the new config.xml (/var/lib/jenkins/config.xml) to frontend-install

Rewrite Jobs config.xml (if necessary):
    + Configure the job manually and save it
    + Get the xml file
         java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://localhost:8080/fuego get-job docker.default.Benchmark.Dhrystone
    + Modify ftc add-jobs (do_add_jobs()) as necessary

Initial test
------------
You can use the docker container as a fuego target in order to confirm that
the installation was successful.

# ftc add-nodes docker
# ftc add-jobs -b docker -p testplan_docker
# ftc add-jobs -b docker -t Benchmark.Dhrystone -s default

On the Jenkins interface, build the "docker.testplan_docker.batch" job.
It will trigger the rest of the jobs. To remove the jobs use:

# ftc rm-jobs docker.testplan_docker.*.*

License
-------------------------------------------------------------------------------
Fuego is licensed under the 3-clause BSD license. Please refer to LICENSE
for details. Jenkins is licensed under the MIT license.

fuego's People

Contributors

tbird20d avatar 4da avatar sangorrin avatar guiccbr avatar tuyenhv avatar fboudra avatar qiu-tt avatar mvfnst avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.