Git Product home page Git Product logo

seaeye's Introduction

Seaeye

Background

If working closely with Github, starts with reading Github: Building a CI server as an adequate primer.

Overview

A simple continuous integration server using Hookbot to subscribe to branch changes on Github hosted repositories.

Assumptions:

  • The CI server has access to write files (git clones) to its current working directory on start time.
  • Repository branch changes are published to a topic on a Hookbot server instance the CI server can subscribe to.
  • Repositories are cloned using the git-prep-directory command instead of git clone.
  • .seaeye.yml configuration file in the root of the repository

Workflow

TBD.

When using Docker-out-of-Docker (DooD) and volume mounts are required but the paths inside and outside can't be made equal, the volume path inside must be a prefix to the outside path and the special environment variable SEAYEYE_WORKSPACE must be set. E.g.:

 -v /seaeye/workspace=/seaeye/workspace # OK
 :
 -e SEAEYE_WORKSPACE=/seaeye/workspace -v /data/seaeye/workspace=/seaeye/workspace # OK
 :
 -e SEAEYE_WORKSPACE=/seaeye/workspace -v /data/seaeye/workspace=/seaeye # NOT OK

Setup

Any interaction with Github initiated by Seaeye is authenticated and authorized against a Github user. This allows pulling from repositories and updating commit statuses. Don't add the machine user as collaborator but as a member to the new team.

  1. Generate a new SSH key
  2. Create a new Github Team (e.g. bots)
  3. Create a new Github Machine user (e.g. seaeye)
  4. Add the new organization member to the new team

Note: Adding a machine user as a collaborator always grants read/write access while adding a machine user to a team grants the permissions of the team.

Note: Automating the creation of accounts is prohibited by Github's ToS:

Accounts registered by "bots" or other automated methods are not permitted.

Note: Most private Github repositories have Git submodules linked to other private Github repositories, so using Github's Deploy keys would require a more complex setup (configuring Seaeye's access rights on the server side instead of on Github administration side, which will require e.g. CloudFormation changes) or reusing the same key. It also leaves the task of pushing commit statuses open.

Resources

seaeye's People

Contributors

djui avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

seaeye's Issues

Images built by Hanoverd are not cleaned up

This eats up the main disk space; Docker images are currently not stored on the mounted EBS volume.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
seaeye              master-0-gf0ed085   e4bd46c37f97        3 minutes ago       418.3 MB
seaeye              master-0-ga2a9e09   92eab61d8c25        5 minutes ago       418.3 MB
seaeye              master-0-gbca69a8   22c765be377a        11 minutes ago      418.3 MB
golang              1.6.2-alpine        b288b3c2037c        4 weeks ago         238.1 MB

Status updates when there is no manifest

At the moment we get a green tick in the "no manifest case".

It might be better if seaeye avoided sending status updates until it saw the manifest. A green tick feels deceptive, since in fact tests haven't run.

Just a suggestion and I'm willing to debate it.

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.