Difference between revisions of "Team:Waterloo/Software"

 
Line 86: Line 86:
 
   </div>
 
   </div>
  
<div class="row"><div class="col"><div class="content-main"><h3 id="-alert-">★ ALERT!</h3>
+
<div class="row"><div class="col"><div class="content-main"><h1 id="cigem">CiGEM</h1>
<p>This page is used by the judges to evaluate your team for the <a href="https://2016.igem.org/Judging/Awards">Best Software Tool award</a>.</p>
+
<p>This year, we worked with U of T to adapt their <a href="https://www.npmjs.com/package/igemwiki-api">igemwiki-api</a> into a continuous integration server. This server allows teams to edit their wikis locally and on GitHub and automatically upload them to igem.org servers when changes are made. This allows iGEM teams to write cleaner code and saves them time uploading that code manually.</p>
<p>Delete this box in order to be evaluated for this medal. See more information at <a href="https://2016.igem.org/Judging/Pages_for_Awards/Instructions">Instructions for Pages for awards</a>.</p>
+
<h2 id="continuous-integration">Continuous Integration</h2>
<p>Regardless of the topic, iGEM projects often create or adapt computational tools to move the project forward. Because they are born out of a direct practical need, these software tools (or new computational methods) can be surprisingly useful for other teams. Without necessarily being big or complex, they can make the crucial difference to a project&#39;s success. This award tries to find and honor such &quot;nuggets&quot; of computational work.</p>
+
<p>Continuous integration (CI) refers to a continuous process of integrating code after it is written. It is a very common practice in software development because it removes the unnecessary hassle of uploading by hand. It also ensures that the main repository which stores the code represents exactly what is seen on the website. This prevents confusion as to who changed what and ensures that those changes will never be lost.</p>
<h5 id="inspiration">Inspiration</h5>
+
<h2 id="nodejs">NodeJS</h2>
<p>Here are a few examples from previous teams:</p>
+
<p>NodeJS is a platform for building Javascript programs that can be run on any machine. It is a very popular tool for building web servers and was what U of T iGEM made their igemwiki-api with. We decided to build the CI server with it because it is very fast, familiar for many web developers and natively supported the igemwiki-api.</p>
<ul>
+
<h2 id="implementation">Implementation</h2>
<li><a href="https://2013.igem.org/Team:TU-Munich/Results/Software">TU Munich 2013</a></li>
+
<p>CiGEM is hosted on Google App Engine and supports two endpoints. The endpoint &quot;/payload/setup&quot; accepts a team name and GitHub repository URL and &quot;clones&quot; the code as well as adds the team to a registry. The endpoint &quot;/payload&quot; checks for a GitHub push header. If it finds one, it pulls the code from GitHub and pushes it live to iGEM&#39;s servers. The setup for the server is as easy as making a request to the setup handler and adding a WebHook on GitHub. The code for the server can be found on <a href="https://github.com/igem-waterloo/cigem">our GitHub repository</a></p>
<li><a href="https://2014.igem.org/Team:Heidelberg/Software">Heidelberg 2014</a></li>
+
<li><a href="https://2014.igem.org/Team:Aachen/Project/Measurement_Device#Software">Aachen 2014</a></li>
+
</ul>
+
 
</div></div></div>
 
</div></div></div>
 
</div>
 
</div>
 
</html>
 
</html>
 
{{Waterloo/footer}}
 
{{Waterloo/footer}}

Latest revision as of 01:10, 2 November 2017

Software

CiGEM

This year, we worked with U of T to adapt their igemwiki-api into a continuous integration server. This server allows teams to edit their wikis locally and on GitHub and automatically upload them to igem.org servers when changes are made. This allows iGEM teams to write cleaner code and saves them time uploading that code manually.

Continuous Integration

Continuous integration (CI) refers to a continuous process of integrating code after it is written. It is a very common practice in software development because it removes the unnecessary hassle of uploading by hand. It also ensures that the main repository which stores the code represents exactly what is seen on the website. This prevents confusion as to who changed what and ensures that those changes will never be lost.

NodeJS

NodeJS is a platform for building Javascript programs that can be run on any machine. It is a very popular tool for building web servers and was what U of T iGEM made their igemwiki-api with. We decided to build the CI server with it because it is very fast, familiar for many web developers and natively supported the igemwiki-api.

Implementation

CiGEM is hosted on Google App Engine and supports two endpoints. The endpoint "/payload/setup" accepts a team name and GitHub repository URL and "clones" the code as well as adds the team to a registry. The endpoint "/payload" checks for a GitHub push header. If it finds one, it pulls the code from GitHub and pushes it live to iGEM's servers. The setup for the server is as easy as making a request to the setup handler and adding a WebHook on GitHub. The code for the server can be found on our GitHub repository