Coder Social home page Coder Social logo

zalando / zappr Goto Github PK

View Code? Open in Web Editor NEW
542.0 35.0 70.0 9.47 MB

An agent that enforces guidelines for your GitHub repositories

Home Page: https://zappr.opensource.zalan.do

License: Other

JavaScript 97.48% HTML 0.18% CSS 0.66% Shell 1.56% Dockerfile 0.13%
github integration repository agent guidelines developer-infrastructure

zappr's Introduction

zappr

Approval checks for GitHub pull requests.

Build Status Code Climate Dependencies Gitter

Zappr is a GitHub integration built to enhance your project workflow. Built by open-source enthusiasts, it's aimed at helping developers to increase productivity and improve open-source project quality. It does this primarily by removing bottlenecks around pull request approval and helping project owners to halt "rogue" pull requests before they're merged into the master branch.

Setup, FAQ and further information

Please refer to our documentation.

Zappr local development

Please refer to local development.

Contributing to Zappr

Please read our contributor guidelines for more details. And please check these open issues for specific tasks.

License

The MIT License (MIT)

Copyright (c) 2016 Zalando SE

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

zappr's People

Contributors

aermakov-zalando avatar akhomchenko avatar christianlohmann avatar drummerwolli avatar ekaterinaserga avatar error418 avatar fokusferit avatar frometor avatar greenkeeperio-bot avatar hjacobs avatar jmcs avatar kgalli avatar lappleapple avatar lotharschulz avatar luisfarzati avatar m4ntr4 avatar mfellner avatar omartrigui avatar prayerslayer avatar rashamalek avatar rechi avatar rkeytacked avatar scherniavsky avatar sebastianpoeplau avatar spaudanjo avatar startnow65 avatar stoewer avatar tunix avatar vecmezoni 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zappr's Issues

Development Documentation

Create a complete documentation for the contributors and developers of Zappr.

Tasks

  • instructions on testing in README.md

Ticket reference checks

Main obstacle: Tickets that do not live in same Github installation. Not the common case, but might happen.

User Documentation

Create a complete documentation for the users of Zappr.

Tasks

  • project summary in README.md

Use ZAPPR database

Currently we're just using default postgres database out of comfort, but in anticipation of #44, where we require yet another schema, it would be beneficial to switch to a dedicated zappr database as long as it's easy.

Improve landing page

It's just a sign-in button now without any hint what's behind. Before go-live we should put some love into that.

Approvals for releases and deployments

Some people I've talked to say that approving releases and/or deployments is very important to them. How could we address this?

What we need to understand

  • how do teams prepare a release?
  • how do teams deploy a release?
  • which steps should be automated and which need to be manual?

Notes

Syntax error during server build

When building the server npm run build-server there is an error (but the build completes nominally):

ERROR in ./server/service/EncryptionService.js
Module parse failed: /Users/mfellner/Code/Github/zalando/zappr/node_modules/babel-loader/index.js?{"presets":["node5","stage-3"]}!/Users/mfellner/Code/Github/zalando/zappr/server/service/EncryptionService.js Line 28: Unexpected token ;
You may need an appropriate loader to handle this file type.
|
| class EncryptionService {
|   static instance;
|
|   static create() {
 @ ./server/model/Check.js 25:25-64

The semicolon after instance gets automatically injected, even if it is removed (failing the eslint check).

Suggestion: refactor the singleton pattern (which is strange anyway) to simply leverage the Node module.

Invalid HttpResponse for hooks.

Registered a repository for zappr and had a look into 'webhooks'-settings the hook was marked red.

screen shot 2016-03-04 at 08 23 27

Maybe this is a issue, maybe not.

Encryption of tokens

Maybe with KMS so we don't have to take care of the encryption key.

  • A token is saved inside each check (#25)
  • Tokens are handled by the NullEncryptionService for development
  • Tokens hare handled by the KmsEncryptionService in production

Token revocation scenario

In worst case we would have to revoke all access tokens we got via Github web UI and delete them from our database.

Think of a way to restore functionality with minimal user effort (ie ideally not more than logging in).

Label state machine

Figure out a way for people to define state transitions for issues via labels. The main obstacle here is the feedback loop: One adds a label, representing an invalid transition, and then what? Just remove it again? If so, how to inform user about invalid transition? Email?

Daily commit summary as email

For different branches on enabled repos, send a daily (configurable) commit summary from other people to encourage code review prior to PR.

Main question is how to organise it as its possibly lots of information.

Proper issue templates

  • Ability to put templates (mustache?) in a .zappr folder in the project
  • New issues are checked against templates and labeled accordingly
  • Option to autoclose issues that do not match any template
  • Figure out what to do with info that can be extracted from templates, like version numbers, most common words in stack trace…

Make RepositoryList less jumpy

When updating repositories from Github the whole list is replaced with a giant spinner. We can make this more subtle, I guess. Also I think "load all" does not really transport what it does / is slightly confusing, so we should stick to the wording that Travis uses: sync. And thinking about it, is there a specific reason why one cannot work with the UI during a sync?

  • Subtle spinner that doesn't render the whole UI useless
  • Align wording with Travis, ie change "load all" to "sync"

Automatic branch creation

Should be relatively easy and we identified this as a nice ticketing/scm integration feature.

  • If enabled creates branch based on newly opened ticket
  • Name pattern is configurable with sane defaults
  • New checkbox in frontend

In-person interviews with actual people, user journey comparison

Create and compare user journeys about their development workflows.

  • create examples of workflows
  • identify contacts
  • hold interviews
  • summarise results

Workflow & Interviews: https://docs.google.com/document/d/16jHNJrsM1X0mMkTbizgRZbsxkr7MZrvJMyWTLQ8pS3M/edit

Most active teams on Stash and possible contacts:

  • AST: Zalando Stock — jrempe
  • BRAND: Brand Solutions
  • BZR: Bazaar
  • CEP: Logistics — yvandecnocke
  • DIPA: DI Payment Analytics
  • DISFC: DI SCF ???
  • JUS: Just Buy — Gökhan, oekarahan
  • ORDER: Order ^^ — lniemeier
  • PPDBACKEND: Zaster — mschumacher, ohuelscher
  • PPDEXPERIENCE: lbrueder, dodebrecht
  • SHTRACK: rschaarschmi
  • SHOP-ENGAGEMENT: rgritti
  • SHOP-EDITORIAL: MyFeed — azarutsky
  • TRUX: cpeikert, rwitzel

Support for Reactions

Github just announced support for reactions.

d55b8b7e-e6ba-11e5-9b31-59a8db92e456

I did not see any API support yet, but that could be a great interface for approvals.

Store user's OAUTH token in each check

For certain API operations that are automatically performed by the web service in response to a webhook we need a valid OAUTH token.

The webhook events and resulting operations are always associated with a check. So it would make sense to save the current user's token in each check that gets turned on.

Google survey form

Create a Google survey about Github, Stash and general workflow habits.

Require less permissions for Zappr

It should be possible to give Zappr only a minimal set of permissions initally and then upgrade.

Braindumping how it could work

  • Store consented scopes in a new column in User (first* db migration!)
  • Change config options to accomodate new premium/advanced/god mode.
  • Set cookie to indicate that god mode is used.
  • Dropdown in nav header to change mode.
  • Bonus points: When a check is enabled, it should then show a) who the token belongs to and b) what scopes it has / which mode it was created for and c) if it's valid (see below).
  • Figure out how to obtain consented scopes, should somehow work with the passport plugin: Does not currently work with the passport plugin. Workaround: Make HTTP request to Github API with token, read X-OAuth-Scopes response header.
  • Figure out how we can change consented scopes: Just do another login with more scopes. This won't work for removing scopes though, the users will have to revoke access (effectively invalidating all previously issued tokens) and log in again.
  • Figure out what happens to the old token when a user changes modes: Nothing, stays valid.

STUPS integration

  • Create review approvals in Kio automatically after they were given in Zappr.

Reminders about open PRs

When a PR in my project is open for longer than n time units, Zappr should send a reminder email to a configured email address. If no action is taken by the receiver(s), Zappr should close the PR after m time units. An example for such action could be a button in the email "keep PR open".

Repository Paging

  • initially, load n (e.g. 20) repositories from Github
  • when a special parameter is provided (e.g. 'all') load n + k = all repositories from Github

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.