From Fedora Project Wiki

Revision as of 17:02, 3 April 2012 by Nehaljwani (talk | contribs) (Created page with "=On-Demand Fedora Build Service= {{:GSOC_2012/Student_Application_nehaljwani}} === Proposal Description === This page shall describe the proposed project. == Overview and The ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

On-Demand Fedora Build Service

Contact Information

  • Email Address: nehaljw.kkd1@gmail.com
  • Telephone: +919052480529
  • Blog URL: commandlinewani.blogspot.com
  • Freenode IRC Nick: nehaljwani

NOTE: We require all students to blog about the progress of their project time to time.

You are strongly encouraged to register on the Freenode network and participate in our IRC channels. For more information and other instructions, see:

https://fedoraproject.org/wiki/GSOC_2012

Please answer following questions.

Why do you want to work with the Fedora Project?

I was introduced to linux last year. Out of all the available distros out there, because of it's simple UI and ease of administrative tasks, I liked Fedora the most. Working with fedora project will enhance my skills and I will be able to acquire more knowledge of open source programs. My interest lies in contributing to open source software programs and Fedora Project is a very nice platform for it. I have been, in the past year exploring the operating system and the way in which it is managed by developers. While using the OS, I found that having desired packages at one place is very difficult. The proposed project will help in creating ready-made image(s) with the required packages and pose a solution for the problem. Hence, I would like to contribute to the proposed project. Also, I will continue to contribute to the project, regardless of the status of my proposal.

Do you have any past involvement with the Fedora project or with any another open source project as a contributor (if possible please add some references as well)?

1. No, this is my first time.

Did you participate with the past GSoC programs, if so which years, which organizations?

1. No, this is my first time.

Will you continue contributing/ supporting the Fedora project after the GSoC 2012 program, if yes, which team(s)/area(s), you are interested with?

1. Yes, Definitely I would like to contribute to:

Fedora Packaging

Why should we choose you over the other applicants?

  • I have 3 months free during this summer, so I'll be able to donate as much time as possible on the project that I choose.
  • I have hands on experience in C, HTML, python, bash.
  • I have played quite a lot with source codes of programs, because in my institution, root access is not provided to undergrads. So, I have tweaked a lot of programs to suite our needs and compiled them for use on our workspace machines.
  • I posses knowledge of subversion systems[SVN,git] and building Fedora live CDs.
  • I am dedicated to the work I do and believe in "Do what you love, love what you do!". I am quite confident that I'll be able to contribute to this project with my efforts at their best!

Proposal Description

This page shall describe the proposed project.

Overview and The Need

On-Demand build service seeks to build Fedora LiveCDs and installation CDs for developers, testers and Fedora consumers.

During the testing of Fedora releases, test images are often useful as smoke tests before full TC/RC composes, as baselines for specific test days or for automated installation testing in AutoQA. The idea is to make an on-demand Web-based build service which users/developers can use to make custom Fedora based distributions.

The service would be capable of building and hosting images (boot iso, installation DVDs and live images) made up of builds from stable repositories in addition to side repos containing specific builds from both updates-testing and koji builds that have yet to be pushed to any repos. The service will also also have a RESTful API which will make it accessible from command-line clients as well.


Any relevant experience you have

As the creator and maintainer of the Fedora Scientific Spin, I am well aware of the LiveCD creation tool chain. I am also knowledgeable about creating local repositories (side repositories) and pulling in packages from there into the installer/Live CD. I am currently exploring building installers.


How do you intend to implement your proposal

  • Creation of side-repositories

As a first step, I am experimenting with creating a local repository (side repo) with builds of packages, which are not yet available in the main (either updates/updates-testing or Koji). So far, I have experimented with creating a Live CD having packages from this repository. The next step is to attempt to create installer images.

  • Web-based Interface and Job delegation

The next step would be to implement an interface (web-based) whereby the user can select the packages he/she wants to be in the installer/live CD. If these packages are available in the main, they are taken from there, else a side repository is built using the packages from updates/updates-testing or Koji. Once the packages are all available, a kickstart file will be generated at the master node. The master node then delegates this job to a job queue. The job queue management system will be responsible for handing over the jobs to a free build node.

  • Image Hosting

Once the image is built successfully, the image is pushed by the slave to an image hosting provider along with the logs.

  • Notification

On successful/unsuccessful build, an email is sent to the user with appropriate information. If the build was successful, a link is sent to the user to download the image and logs.

Final deliverable of the proposal at the end of the period

  • A build service running as Python web application on the master node
  • Client build services running on designated build nodes
  • A REST API to the build service

A rough timeline for your progress

  • Current - May 21: Implementing an automated script which if given a list of packages, retrieves the ones not available in the main and creates a side-repository, and building the web interface.
  • May 21 - June 10: Finalize the image creation scripts and have a system containing a master node and a single build node in place. Work on implementing the client service which will run on the build node.
  • June 28 - Mid-term evaluation: Evaluate and implement a job queueing system and formalize a way to distribute build jobs. Formalize the Image hosting node specifications - FTP/HTTP interface.
  • July 20 - August 10: REST API implementation to the build service (running off master node), final testing and documentation.

Any other details you feel we should consider

Have you communicated with a potential mentor? If so, who?

Tim Flink