Skip to content

nathandyer/houston

 
 

Repository files navigation

Houston

We have liftoff.

Houston is a developer dashboard and backend for converting GitHub repos into Debian packages. Developers create a repo containing a .apphub file which is then shown on their dashboard. From there Houston will clone, test, build, and publish your application to AppHub.

Learn more about the technical details.

Architecture Overview

Houston is the glue between GitHub and our repository system. Ideally when you first create a project on GitHub, you would go to Houston and initialize the repository. This will setup Houston to monitor the repository with GitHub hooks.

When a release is created on GitHub, you will get an option to publish that release in Houston's dashboard. Houston will then clone the repository, run tests on the code, build the code with Liftoff, and publish it to a testing repository. At this point someone from elementary will install the application and continue running tests. This ensures the best performance, user experience, and desktop integration for any application in AppHub.

If any test fails, Houston will submit an issue on GitHub with detailed information on the problems, and in some cases, solutions to fix it. After fixing these issues you will be able to resubmit your application for publishing.

At this point, the approved application will be moved into the stable repo, and available to all users of elementary OS. We will be using aptly behind nginx to host the repository. Ultimately this repository will be the focus of AppCenter and the elementary OS 3rd party app ecosystem.

Hacking on Houston (how-to)

We'd love your help hacking on Houston! Getting a local development environment set up is easy, and we've prepared a short guide to walk you through step-by-step. Just follow along below, and if you have any issues, don't hesitate to ask for help.

Configuration

  1. You'll need to set up Houston's config file, config.js. Copy the config file template:

cp config.example.js config.js

  1. Then, create a GitHub OAuth application for testing Houston: https://github.com/settings/applications/new.

Name the application "Houston Local", and set the homepage and callback URLs to your local machine, like this:

Homepage URL: http://localhost:3000

Authorization callback URL: http://localhost:3000/auth/github/callback

It should look something like this:

  1. Click 'Register application', and then copy and paste the newly created application's Client ID into config.js under github.clientID and copy the Client Secret under github.secret.

    Your config.js should now include a section that looks something like this:

// https://github.com/settings/developers
export const github = {
  client: '1e9ec151a7728abaa304',
  secret: '9ccde02a1633b27232ee07662b7a688c43018b1f',

  // Post data to GitHub?
  post: false,

  // Enable GitHub hooks?
  hook: false
}

Running

  1. Install MongoDB

sudo apt-get install mongodb

  1. Install node and npm

    Depending on your distribution of choice, you might need to download and compile node from the website. Keep in mind that Houston requires node version 4.2.6 or above.

  2. run npm install to fetch needed dependencies.

  3. Start the server with npm run master and start the slave with npm run slave.

Accessing

Open up a browser and visit http://localhost:3000, and you should see the Houston website. Congratulations! Please take this time to read the contributing guidelines before submitting code or issues.

About

Backend for AppHub

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 79.5%
  • HTML 11.3%
  • CSS 9.2%