Giter VIP home page Giter VIP logo

elementary / houston Goto Github PK

View Code? Open in Web Editor NEW
163.0 20.0 32.0 7.12 MB

Debian-repository-based AppCenter Dashboard, the backend for elementary AppCenter on elementary OS 5.1 and earlier.

Home Page: https://developer.elementary.io

License: MIT License

JavaScript 2.05% TypeScript 46.98% Vue 1.19% Dockerfile 0.51% Shell 0.23% TypeScript 47.02% Vue 1.22% Dockerfile 0.50% Shell 0.23% EJS 0.06%
node appcenter aptly

houston's Introduction

This is the old AppCenter Dashboard for elementary OS 5.1 and older. You may be looking for the new Flatpak-based AppCenter Dashboard or the new AppCenter Reviews repo.


AppCenter

Houston

Backend to AppCenter



travis-ci gitter


Houston is currently undergoing a rewrite to typescript with an emphasis on testability. Currently, the only part used in production for v2 is the worker process. Everything else will be found in the master branch.

Houston is part of AppCenter, a multi component system for helping developers and making users' life easier. Houston includes processes for building, testing, and publishing packages, as well as the front end website.

For more information about the architecture and processes that make up Houston please see the architecture file.

For development information see the various readme files in the src/ directory.

For building and setting up your own instance read the install file.

houston's People

Contributors

btkostner avatar cassidyjames avatar codygarver avatar danirabbit avatar dar5hak avatar davidmhewitt avatar dependabot[bot] avatar freaktechnik avatar gamerlv avatar greenkeeper[bot] avatar kgrubb avatar lewisgoddard avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

houston's Issues

Show the app name from the .desktop

Once we've determined that there exists an app, we should grab the app's actual name (not just the raw repo name) and display that in the import

Let devs provide a suggested price

We want devs to be able to give us a suggested price we can use as the default for AppCenter. I think immediately after you choose a repo makes sense here.

"Needs Fixing" when there is no changelog

If releases.items is null, we should give a needs fixing status instead of offering to Publish. I'm pretty sure that a changelog is mandatory for debian packages.

Cannot call method 'findOrCreateGitHub' of undefined

I just went to http://server2.elementaryos.org:3000/ and tried to import a random project on my account.

Got this:

Cannot call method 'findOrCreateGitHub' of undefined
TypeError: Cannot call method 'findOrCreateGitHub' of undefined
    at Object.app.get.Project.findOrCreateGitHub.then.res.render.project [as handle] (/home/fabian/houston/houston/app/project.js:8:11)
    at next_layer (/home/fabian/houston/houston/node_modules/express/lib/router/route.js:103:13)
    at Object.module.exports.loggedIn [as handle] (/home/fabian/houston/houston/app/auth.js:62:41)
    at next_layer (/home/fabian/houston/houston/node_modules/express/lib/router/route.js:103:13)
    at Route.dispatch (/home/fabian/houston/houston/node_modules/express/lib/router/route.js:107:5)
    at /home/fabian/houston/houston/node_modules/express/lib/router/index.js:205:24
    at param (/home/fabian/houston/houston/node_modules/express/lib/router/index.js:286:14)
    at param (/home/fabian/houston/houston/node_modules/express/lib/router/index.js:298:16)
    at param (/home/fabian/houston/houston/node_modules/express/lib/router/index.js:298:16)
    at Function.proto.process_params (/home/fabian/houston/houston/node_modules/express/lib/router/index.js:314:3)

implement modular test system

Before we start making a bunch of tests for projects, we should setup a nice way of keeping them organized, instead of placing them all into model files. Right now I'm thinking of some sort of hook style system where you would have a file like desktop.js that would register different errors and warnings. Then when a repo is pulled, houston would call all these files to test the code, build app, more tests, human review, and file the issue.

Some things to consider:
Tests should be able to run in parallel for the most part
Post-build tests
tests vs houston information (apphub file)
keep tests modular (add more tests with no houston code touched)
optional tests? (is this a thing?)

Add schema for storing issues with applications

I'm thinking the way to do this is add an issues array field to ApplicationSchema, where each issue is its own IssueSchema which looks like this:

// IssueSchema
{
    githubId: 123, // e.g. github.com/user/app/issues/123
    body, // the actual content of the issue, e.g. automated output
    title, // the title of the issue, e.g. "Missing .desktop file"
}

Test Issue for formatting of Houston Bugs

Houston will file failed builds as issues, we need to establish a template for that, let's do it on github to see what it looks like:

Title:

[Apphub] 3 Issues detected on Release vX.X.X

Issue Body:

Apphub detected the following issues on Release vX.X.X

  • Build of trusty-amd64 failed Build Log
  • You are missing a .desktop file Learn More
  • Some more random stuff

Once these issues have been resolved, please do a new Release and try publishing your Application [again](link to Houston Daskboard).

Add a mechanism for approving packages

The idea is that packages are automatically built into a testing repo and then we have a human test and approve them to go into the stable repo. We'll need some kind of review queue page that:

  • Can only be accessed by members of the houston app reviewers github team
  • Lists packages that haven't yet been reviewed for that version/git tag
  • Allows the reviewer to approve and upon approval copies the package into stable
  • Allows the reviewer to reject and supply a reason why it was rejected which is filed as an issue

Something to consider is whether rejecting should always delete the package from testing or if we should provide some other mechanism for deleting. I'm thinking of a case where the reason the package is rejected it because it is malicious or otherwise dangerous to install.

Dashboard optimizations

Doing some programming and having 11 or so issues on a project slowed dashboard load times quite a bit. We should try looking at some options for making it faster, as it's only going to get slower the more stuff we add to it.

First thing that comes to mind would be to create a separate projects page. One extra click for the user, but considerably less logic for us, as we don't have to load everything for every project on the dashboard at once.

WIth 3 projects, and a total of 14 issues the dashboard takes 2.77 seconds to load

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/29594351-dashboard-optimizations?utm_campaign=plugin&utm_content=tracker%2F27692469&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F27692469&utm_medium=issues&utm_source=github).

Consider aptly instead of freight

If I remember correctly, you are planning to use freight to build the Debian repositories. Have you already seen aptly, which seems more active and also had a REST API which lets you...

upload packages using HTTP, manage your repositories, snapshots, published repositories etc.

This might better suite your needs, since you need to interface the repo anyway.

Provide bigger picture

It would be very nice, if you could provide a bigger picture of how things are (or should be) looking like and what part of the system is responsible for what.
How are the builds triggered, how and where are the builds performed, where are the information for the build process coming from, where are the deb packages pushed to, aso. Thanks!

only show repos that have top-level `.apphub`files in the repo

We should define some kind of litmus test to decide whether or not a repository is an app and if not, don't show it.

I think probably the defining test is whether the repo contains a .desktop. Specifically it might be most performant to just look for /data/.desktop

Popovers do not show if cursor enters from top

It looks like what happens is some child of the anchor is what is receiving the event (specifically i) and so the active class is given to its parent instead of to the popover. So I guess we have to make sure that children of the anchor don't receive events.

Add a way to restrict access to the development instance

It seems like not long from now we're going to want to have a couple of beta testers to work though some of the issues in actual use. We're going to need some kind of whitelist mechanism to restrict access for requesting builds on our instance of houston

File review failures as issues

Going with the "GitHub is the UI" idea, we should just use GitHub Issues for review failures. If an app fails an automated test, Houston should file a bug in that repository's issue tracker.

No .apphub helper text is wrong

An empty .elementary in the root of the repo is how houston knows which apps to look at.

should be

An empty .apphub in the root of the repo is how houston knows which apps to look at.

Validate AppStream

Just found out about "appstream-util validate" command. We should make a test with that

Process Webhooks

Process webhooks and watch for these things:

  • New Tags/Releases on Github
  • New commits on a defined branch (for daily)

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.