GSOC2020AppStore

From Nsnam
Revision as of 12:27, 15 July 2020 by Shivamanipatil (Talk | contribs) (Week 6: 6th July - 12th July)

Jump to: navigation, search

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

Back to GSoC 2020 projects

Project Overview

  • Project Name: App Store improvements
  • Student: Shivamani Patil
  • Mentors: Abhijith Anilkumar, Ankit Deepak, Mishal Shah, Tom Henderson
  • Project Goals: This project aims to develop a Jenkins automation server and add necessary updates to ns-3 AppStore to check if available, uploaded or updated apps/modules to AppStore build and pass tests successfully for the given ns-3 versions and display that information on AppStore. It also aims to make App Store aware of new ns-3 releases for calling build/test on all available App Store modules from Jenkins server, in turn, displaying build/test status for that ns-3 release on App Store. Ideally, it is about making App Store aware and capable of interacting with the newly developed Jenkins server.
  • Repository: https://gitlab.com/shivamanipatil/ns-3-AppStore
  • About Me: I am a second-year Information Technology undergraduate student from National Institute of Technology Karnataka(NITK), India. I am interested in computer systems, operating systems, and backend development. I have been working with Django and python for the past 1 year. I have previously worked on App Store for migrating Elasticsearch to the latest version.

Milestones and Deliverables

The whole GSoC period is divided into 3 phases. The deliverables of each phase are mentioned below:

Phase 1

  • Adding Build model to AppStore, writing tests for it and its documentation
  • Jenkins local installation
  • Building pipelines in Jenkins

Phase 2

  • Build status window on App page
  • REST API creation in AppStore, adding tests and its documentation
  • Build trigger scripts/functions

Phase 3

  • Gitlab webhooks for new ns releases
  • Deploying Jenkins on a dedicated server
  • Comprehensive App user and developer guide


Phase reports

Phase 1

  • Adding Build model to AppStore and it's test.
  • Jenkins local installation and Building pipelines in Jenkins.
  • Merge request for phase 1 work - link
  • Doc for pipelines workflow and code explanations - link
  • Doc regarding limitations of current pipeline scripts and guidelines for App release if they wish to use Jenkins server for build statuses - link

Phase 2

  • to be added

Phase 3

  • to be added

Weekly Reports

Community Bonding Period

  • Database migration for ns-3 AppStore from SQLite to Mysql/Postgres(waiting for mentors to try it on deployed site).Steps followed by me are documented in this doc.
  • Participated in the coding sprint and have provided 3 merge requests for the ns-3 app store.
  • Reviewed dependencies(doc) and provided 2 merge requests for package replacements - python-dotenv, django-admin-bootstrapped.

Week 1: 1st June - 7th June

  • The Build model to store information about the build info for an app/module was created.
  • Tests for the Build model were also added.
  • Commit for the work : link

Week 2: 8th June - 14th June

  • Couldn't work due to examinations and submissions(had pre-notified to mentors).

Week 3: 15th June - 21st June

  • Installed Jenkins on the local machine.
  • Read Jenkins documentation about pipeline building and its terminologies.
  • Explored bake for fetching and building ns-3/modules/forks.
  • Set up my local environment for pipeline building.

Week 4: 22nd June - 28th June

  • Added scripts that will be used by modules/forks with bakefile.
  • Added scripts that will be used by modules/forks providing repo link/ direct download link.

Week 5: 2th July - 5th July

  • Planned and discussed with mentors about Build triggers, who can call build on releases and overall workflow for App Store side of pipeline triggering using Jenkins APIs.

Week 6: 6th July - 12th July

  • Added functions in the App Store to call the Jenkins builds on app releases.
  • Added some guideline checks in the App Store itself so that unnecessary builds are not triggered which would surely fail due to pipeline requirements:-
   1. Check for git repo link structure - if not in standard form modify it. 
   2. Check if tag/version used for that repo exists in the git repo.
   3. Check if direct link response content-type can actually be extracted/uncompressed in the pipeline.
  • Added pipeline script support for more direct link download types zip, gzip, tar, tar.gz and tar.bz2 (first it was just tar.gz).

Week 7: 13th July - 19th July

  • to be added

Week 8: 20th July - 26th July

  • to be added

Week 9: 27th July - 2nd August

  • to be added

Week 10: 3rd August - 9th August

  • to be added

Week 11: 10th August - 16th August

  • to be added

Week 12: 17th August - 23rd August

  • to be added