Giter VIP home page Giter VIP logo

buildbot-macports-custom-views's Introduction

buildbot-macports-custom-views

Custom views plugin for MacPorts Buildbot.

Getting Started

Set up a buildbot environment

Install python37 & create a virtual environment:

sudo port install python37
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip

Install buildbot dependencies & create buildmaster:

pip install 'buildbot[bundle]'
buildbot create-master master
mv master/master.cfg.sample master/master.cfg

Set up this plugin

Activate the python virtual environment created in the above step, then:

git clone https://github.com/macports/buildbot-macports-custom-views
cd buildbot-macports-custom-views
npm install
pip install -e .

For a production build:

npm run build

To run a development server:

npm run watch

Include it in the buildbot master.cfg:

c['www']['plugins']['buildbot_macports_custom_views'] = {}

Or directly use the ports

sudo port install buildbot-2 py-buildbot-macports-custom-views
buildbot create-master master

Start buildbot

buildbot start

buildbot-macports-custom-views's People

Contributors

dependabot-preview[bot] avatar raimue avatar rajgoesout avatar

Stargazers

 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

buildbot-macports-custom-views's Issues

Performance testing

I believe it would be essential to provide and test the following setup:

  • Just do the ports (leave out anything that doesn't have anything to do with port building; no base, no other strange jobs).
  • When building a port do one single thing: calculate a random number between 1 and 100 and exit with 0 if that number is smaller than, say, 90, else exit with non-zero.
    • It can be a simple bash or python script or whatever.
    • Pick the easiest that gets the job done.
    • You may start with exit 0 without the random number generator.
    • You may even perform this step on the master without even calling the worker.
  • In "port watcher" we should provide two different fields for manually triggering. One is "port list" and the other one is "port expression". If "port expression" is specified, run port info --index --line --name <expression> to extract the list of all ports and schedule all the ports you get as a result. Example: port info --index --line --name 'category:shells'. See also https://trac.macports.org/ticket/52989 and note that mpbb performs one sorting step for dependencies that's terribly slow. If you do end up using mpbb, make sure to avoid running that step (but maybe you can do it without mpbb anyway). We can help you with this part (I can definitely help, but it makes more sense to ask on the macports development mailing list).
    • No need to actually watch the changes from github, to avoid the extra complexity of figuring out which ports were changed. Force build functionality should be sufficient.
    • A potentially easier alternative would be to instead provide a field "number of builds" which would ask the API for the first N port names (or you can simply get the first N words from some dictionary), and pretend to build those. This would give you a complete independence of MacPorts, making it also much easier for the buildbot developers to test.
  • Start testing by running a simple example like the above (specify category:shells as expression), but then try specifying all, and repeat that ten times.
  • If the above is successful, try to connect a couple of workers from the same machine. The worker needs to have macports installed if you want to run port info, but it doesn't need root permissions, it doesn't need to install anything etc., and it won't burn the processor. (If you go with the second idea of just providing the number of ports and fetch the first N names from somewhere, you don't even need macports installed on the worker.)

The visual controls should ideally be tested on the results you get, which should by that time have a sufficient number of builds to get a good idea what the performance will be.

Improve UI

  • Add builds', workers' status badges (with result colors)
  • Set up angularjs $location
  • Fix styling
  • [ ] Add sorting by different parameters in FilterBuilds.vue
  • [ ] Add summary table to Change.vue

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.