GithubHelp home page GithubHelp logo

canary-builder's Introduction

This is a new recreation of my old daily build system for blead I'm rewriting it to take advantage of things I've learned and some changes in the setup for everything to be more robust and nicer to work on. The original is at ... and was mostly written as some bash scripts. This version will be almost entirely in perl and directly depend on App::EvalServerAdvanced to be running to perform the testing and fuzzing functionality. This will enable the tests to run in parallel and also better handle some patholigical timeout cases that I've run into issues with. I'll also be doing the builds via Perl::Build instead of perlbrew, to enable more fine grained control over things, and enable testing the unthreaded version of perl while the threaded is being built. This will also enable me to do better reporting than just a dump from cron.

Tasks:

  1. Move Perl::Build code into library utilizing Future
  2. Use IO::Async::Function or ::Routine to enable doing tasks in parallel
  3. Use Email::Stuffer to report failures to mailing list
  4. Report on CPAN module installs and failures individually
  5. Run filesystem shrinking script after all is said and done
  6. Keep logs in compressed form (zstd) available on webserver
  7. Automatic cleanup of logs after 30 days
  8. Automatic cleanup of perls, keep last 5 successful builds of threaded and unthreaded
  9. Use secondary evalserver, configured for batch mode scheduling so that it can't overload the system
  10. Allow for specific commits/tags/branches of perl to be built and tested

canary-builder's People

Contributors

simcop2387 avatar

Watchers

 avatar James Cloos avatar

canary-builder's Issues

Support log compression

It'd be good to support something for compressing log files to tiny sizes. I think zstd with a dictionary trained on a build should be perfect. This then needs a mojo app to send them off

Need a configuration file

A base configuration file of some kind to go along with the command line options. This way I can setup a few regular builds to handle

Sequencing issue with perl builds

Right now it won't do cpanm and other testing concurrently.

It should be able to build each perl in sequence and then do cpanm and testing while building other perls

Logs are broken

They need to be rewritten and written for each cpan and perl build. This way they are archived in a way that lets me report failures to cpanreporters

Flexible build option handling

Right now I hard code threaded and unthreaded builds, this needs to be flexible and support a few other options.

Likely an option for usemymalloc and maybe something for cflags.

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.