Code Monkey home page Code Monkey logo

ruby-tinderbox's Introduction

Ruby Tinderbox Build Status

Framework for testing Ruby related packages in Gentoo Linux.

Usage

Build the docker base image:

./bin/get_stage3.sh
docker build -t gentoo/ruby-tinderbox .

Run the tinderbox scripts against a single package:

docker run gentoo/ruby-tinderbox /ruby-tinderbox/tinder.sh \
	category/package-version-revision

Run the tinderbox scripts against multiple packages:

docker run gentoo/ruby-tinderbox /ruby-tinderbox/tinder.sh \
	category/package-version-revision \
	category/package-version-revision \
	category/package-version-revision

By default the tinderbox script will build binary packages which are discarded when the container is removed. If you test multiple packages at once these will be reused where possible for each of the packages.

If you want to take advantage of binary packages after a container has been removed you can persist them by bind mounting a directory on the host to /usr/portage/packages.

docker run -v /tmp/bincache:/usr/portage/packages gentoo/ruby-tinderbox \
	/ruby-tinderbox/tinder.sh category/package-version-revision

Web interface and build server built on top of the Ruby Tinderbox framework.

License

Ruby Tinderbox is licensed under the AGPL.

Some of the javascript used by the web interface is licensed under the Mozilla Public License and MIT licenses. This is noted in the headers of the relevant files.

ruby-tinderbox's People

Contributors

p8952 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

ruby-tinderbox's Issues

Too many packages are timing out

Too many packages are timing out (~25%) which leaves the dataset in a non-complete state.

Possible resolutions:

  • Use a larger AWS instance size.
  • Increase the time out value from 1000 seconds.
  • Pre-seed build instances with key binary packages (Rails, ect).

Repoman entries with the same timestamp, target, result, and log fields overwrite each other.

            package = Package.where(sha1: sha1).first
            unless package.nil?
                package.add_repoman(
                    Repoman.find_or_create(
                        timestamp: timestamp,
                        target: target,
                        result: result,
                        log: log
                    )
                )
            end

If two items in ci-logs/ have the same values for timestamp, target, result, and log fields one will overwrite the other when running rake db:update_repoman

This does not happen to build entries because the log files are always unique for different packages.

Add visualizations page

Add a visualizations page with graphs showing key stats.

Percent of stable packages with r19/r20/r21 keywords.
Percent of unstable packages with r19/r20/r21 keywords.
Percent of stable packages failing to build.
Percent of unstable packages failing to build.
Ect...

Run update packages inside a container

The update packages task should be run inside a docker container. This will allow you to sync portage on the host without affecting the application as well as run the tasks on non-gentoo systems.

If packages.py fails it will trash the packages table in the database

$ rake docker:setup docker:update_packages

!!! Invalid PORTDIR_OVERLAY (not a dir): '/ruby-tinderbox/overlay'
7225b71b51e5b20861a6360c080ab0ba12661869 app-admin mcollective 2.8.0 r0 0 amd64 ruby19 ruby20 nil nil dev-lang/ruby;dev-ruby/stomp 
67356b3735b5b5519a640e387484470f69493c0f app-admin puppet 3.7.3 r1 0 amd64 ruby19 ruby20 nil nil app-editors/xemacs;app-portage/eix;app-vim/puppet-syntax;dev-lang/ruby;dev-ruby/diff-lcs;dev-ruby/facter;dev-ruby/hiera;dev-ruby/json;dev-ruby/rake;dev-ruby/rdoc;dev-ruby/rgen;dev-ruby/rspec;dev-ruby/rspec-core;dev-ruby/ruby-augeas;dev-ruby/ruby-ldap;dev-ruby/ruby-shadow;dev-ruby/sqlite3;net-analyzer/rrdtool;sec-policy/selinux-puppet;sys-libs/libselinux;virtual/emacs;virtual/ruby-ssl;virtual/rubygems 
c074460bb5622893042bbffeb695c8c158fddee3 app-admin puppet 4.2.1 r0 0 ~amd64 nil ruby20 ruby21 nil app-editors/xemacs;app-portage/eix;app-vim/puppet-syntax;dev-lang/ruby;dev-ruby/diff-lcs;dev-ruby/facter;dev-ruby/hiera;dev-ruby/json;dev-ruby/mocha;dev-ruby/rack;dev-ruby/rake;dev-ruby/rdoc;dev-ruby/rgen;dev-ruby/rspec;dev-ruby/rspec-its;dev-ruby/ruby-augeas;dev-ruby/ruby-ldap;dev-ruby/ruby-shadow;dev-ruby/sqlite3;net-analyzer/rrdtool;sec-policy/selinux-puppet;sys-libs/libselinux;virtual/emacs;virtual/ruby-ssl;virtual/rubygems 
2989b71500fd619d67551825bff9761318d58da9 app-admin puppet-lint 1.1.0 r0 0 ~amd64 ruby19 ruby20 ruby21 nil dev-lang/ruby;dev-ruby/rdoc;dev-ruby/rspec;dev-ruby/rspec-collection_matchers;dev-ruby/rspec-its;virtual/rubygems 
bae7e5d7beca39f3151a09b834e8630eb0d294f6 app-admin r10k 1.5.1 r0 0 ~amd64 ruby19 ruby20 ruby21 nil dev-lang/ruby;dev-ruby/colored;dev-ruby/cri;dev-ruby/faraday;dev-ruby/faraday_middleware;dev-ruby/faraday_middleware-multi_json;dev-ruby/json;dev-ruby/log4r;dev-ruby/multi_json;dev-ruby/rspec;dev-ruby/rspec-core;dev-ruby/semantic_puppet;dev-ruby/systemu;dev-vcs/git;virtual/rubygems 
2f51686d28e0ba195a68cb4c7552a4095d0fad82 app-dicts prime-dict 1.0.0 r2 0 amd64 ruby19 ruby20 nil nil dev-lang/ruby 
87e41a938a45a7440cc2cf96452324edaaeb559d app-dicts prime-dict 1.0.0 r3 0 ~amd64 ruby19 ruby20 ruby21 nil dev-lang/ruby 
4c486ef25344d1a8357499f46e1a37e36a4a22d9 app-editors diakonos 0.9.4 r0 0 ~amd64 nil ruby20 ruby21 nil dev-lang/ruby;dev-ruby/bacon;dev-ruby/yard 
15b9bdd31faf778aacfe6d40da05a0ca0a1488a6 app-emulation vagrant 1.4.3 r2 0 ~amd64 nil ruby20 nil nil app-arch/libarchive;app-emulation/virtualbox;app-emulation/virtualbox-bin;dev-lang/ruby;dev-ruby/childprocess;dev-ruby/erubis;dev-ruby/i18n;dev-ruby/json;dev-ruby/log4r;dev-ruby/mocha;dev-ruby/net-scp;dev-ruby/net-ssh;dev-ruby/rake;net-misc/curl;virtual/ruby-minitest;virtual/rubygems 
328810caef012790d3cd48fbffd2424a61ec410f app-misc hivex 1.3.11 r0 0 amd64 nil ruby20 nil nil dev-lang/ocaml;dev-lang/perl;dev-lang/python;dev-lang/ruby;dev-libs/libxml2;dev-ml/findlib;dev-perl/IO-stringy;dev-perl/Pod-Coverage;dev-perl/Test-Pod-Coverage;dev-ruby/rake;dev-ruby/rdoc;sys-libs/readline;virtual/libiconv;virtual/libintl;virtual/rubygems 
20eed02dbaa25529892924644d3c3b603735c6df app-misc hivex 1.3.11 r1 0 ~amd64 nil ruby20 ruby21 nil dev-lang/ocaml;dev-lang/perl;dev-lang/python;dev-lang/ruby;dev-libs/libxml2;dev-ml/findlib;dev-perl/IO-stringy;dev-perl/Pod-Coverage;dev-perl/Test-Pod-Coverage;dev-ruby/rake;dev-ruby/rdoc;sys-libs/readline;virtual/libiconv;virtual/libintl;virtual/rubygems 
e3ab758ea71723c84da89ced2c04d6ca62ff5ff3 app-text glark 1.10.5 r0 0 amd64 ruby19 ruby20 nil nil dev-lang/ruby;dev-ruby/logue;dev-ruby/ragol;dev-ruby/rainbow;dev-ruby/rake;dev-ruby/rdoc;dev-ruby/riel;dev-ruby/rubyzip;virtual/rubygems 
8a4f61dd72a96ec0f4222dcb0091d0513b17d558 app-text glark 1.10.5 r1 0 ~amd64 ruby19 ruby20 ruby21 nil dev-lang/ruby;dev-ruby/logue;dev-ruby/ragol;dev-ruby/rainbow;dev-ruby/rake;dev-ruby/rdoc;dev-ruby/riel;dev-ruby/rubyzip;virtual/rubygems 
91f13ad9bcad99e70519d3974bbf930630a09bd1 app-text jist 1.5.1 r0 0 amd64 ruby19 ruby20 nil nil dev-lang/ruby;dev-ruby/json;virtual/rubygems 
40a161cfd7060d6e147dcebc144d7788aff98a04 app-text ronn 0.7.3 r2 0 amd64 ruby19 ruby20 nil nil dev-lang/ruby;dev-ruby/hpricot;dev-ruby/mustache;dev-ruby/rake;dev-ruby/rdiscount;virtual/rubygems 
532fa0288e4df086de47871e9104e5212842e2cf app-text ronn 0.7.3 r3 0 ~amd64 ruby19 ruby20 ruby21 ruby22 dev-lang/ruby;dev-ruby/hpricot;dev-ruby/mustache;dev-ruby/rake;dev-ruby/rdiscount;virtual/rubygems 
81c8e335a8c295309004c11be0888e14defde132 app-text webgen 1.3.0 r0 0 ~amd64 ruby19 ruby20 ruby21 nil dev-lang/ruby;dev-ruby/builder;dev-ruby/cmdparse;dev-ruby/coderay;dev-ruby/kramdown;dev-ruby/maruku;dev-ruby/minitest;dev-ruby/rake;dev-ruby/rdiscount;dev-ruby/rdoc;dev-ruby/sass;dev-ruby/systemu;virtual/rubygems 
46a9b9da8c4f4b021cd0408cd1d5ffe47c433755 app-vim command-t 1.11.4 r0 0 ~amd64 ruby19 ruby20 ruby21 nil app-editors/gvim;app-editors/vim;dev-lang/ruby 
 * Missing digest for '/usr/portage/dev-dotnet/gtk-sharp/gtk-sharp-2.12.21.ebuild'
Traceback (most recent call last):
  File "/ruby-tinderbox/packages.py", line 71, in <module>
    slot, iuse = PORTTREE.dbapi.aux_get(cpv, ['SLOT', 'IUSE'])
  File "/usr/lib64/python3.4/site-packages/portage/dbapi/porttree.py", line 537, in aux_get
    raise KeyError(mycpv)
KeyError: 'dev-dotnet/gtk-sharp-2.12.21'
rubystats=> SELECT COUNT(*) FROM packages;
 count 
-------
    18
(1 row)

Decouple from AWS

The CI build scripts need to be decoupled from relying on AWS. Perhaps abstracted through Vagrant so it can run on VBox, VMware, KVM, ect.

Run repoman against packages

Run repoman against packages to ensure no QA issues. Also run repoman against packages with the next ruby target added to see if all dependencies are satisfied.

Add stabilization graphs

Add a way to visualize what dependencies need to be stabilized in order to stabilize a specific package.

Add a timestamp

Add a timestamp to each page, that show when the data has been created.

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.