aboutsummaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorPeter Wilmott <p@p8952.info>2015-03-21 19:14:59 +0000
committerPeter Wilmott <p@p8952.info>2015-03-21 19:14:59 +0000
commita3f5c572716a481b7dcc0f9dcc45179a5b00bc02 (patch)
treeed7443edfb96afc14b476701aa1348159ddc0b92 /web
parentChange the format used to store log files on disk. (diff)
downloadruby-tinderbox-a3f5c572716a481b7dcc0f9dcc45179a5b00bc02.tar.gz
ruby-tinderbox-a3f5c572716a481b7dcc0f9dcc45179a5b00bc02.tar.bz2
ruby-tinderbox-a3f5c572716a481b7dcc0f9dcc45179a5b00bc02.zip
Bring build scripts and web interface inline with 7266717147d
In addition to brining the build scripts inline with 7266717147d7998b86386f3e73667f0460b2a57a this change also removes the "Passed / Passed" format from the repoman page. This is to bring it inline with the style of the builds page and prepare for the new layout of hypothetical packages.
Diffstat (limited to 'web')
-rw-r--r--web/Rakefile41
-rw-r--r--web/app.rb74
-rw-r--r--web/db/migrations/018_new_targets.rb22
-rw-r--r--web/lib/ci.rb85
-rw-r--r--web/lib/models.rb4
-rw-r--r--web/lib/packages.rb13
-rw-r--r--web/lib/repoman.rb99
-rw-r--r--web/repo-logs/.gitignore2
-rw-r--r--web/views/build/build_history.erb20
-rw-r--r--web/views/build/build_logs.erb (renamed from web/views/build_logs.erb)4
-rw-r--r--web/views/build/build_status.erb (renamed from web/views/build_status.erb)18
-rw-r--r--web/views/build_history.erb24
-rw-r--r--web/views/layout.erb23
-rw-r--r--web/views/new_keywords.erb4
-rw-r--r--web/views/new_targets.erb4
-rw-r--r--web/views/new_versions.erb4
-rw-r--r--web/views/overview/visualizations.erb (renamed from web/views/visualizations.erb)0
-rw-r--r--web/views/package/outdated_gems.erb (renamed from web/views/outdated_gems.erb)0
-rw-r--r--web/views/package/ruby_targets.erb (renamed from web/views/ruby_targets.erb)1
-rw-r--r--web/views/repoman/repoman_checks.erb (renamed from web/views/repoman_checks.erb)19
-rw-r--r--web/views/repoman/repoman_history.erb20
-rw-r--r--web/views/repoman/repoman_logs.erb16
-rw-r--r--web/views/repoman_history.erb25
-rw-r--r--web/views/repoman_logs.erb31
24 files changed, 247 insertions, 306 deletions
diff --git a/web/Rakefile b/web/Rakefile
index 7f52636..27525e0 100644
--- a/web/Rakefile
+++ b/web/Rakefile
@@ -7,17 +7,6 @@ task :test do
Dir.glob('./test/test_*.rb') { |f| require f }
end
-desc 'Run : update_packages => run_ci_untested => update_ci => run_repoman => update_repoman'
-task :nightly do
- Rake::Task['db:update_packages'].invoke
- Rake::Task['docker:setup'].invoke
- Rake::Task['docker:run_ci_untested'].invoke
- Rake::Task['db:update_ci'].invoke
- Rake::Task['docker:run_repoman_all'].invoke
- Rake::Task['db:update_repoman'].invoke
- Rake::Task['docker:teardown'].invoke
-end
-
namespace :db do
DB.loggers << Logger.new($stdout)
@@ -53,8 +42,11 @@ namespace :db do
end
namespace :docker do
- num_of_packages = ENV['NUM_OF_PACKAGES'].to_i
- num_of_packages = 5 if num_of_packages == 0
+ num_of_packages = ENV['NUM_OF_PACKAGES']
+ begin
+ num_of_packages = Integer(num_of_packages)
+ rescue
+ end
desc 'Build a docker image to use with subsequent tasks'
task :setup do
@@ -84,28 +76,13 @@ namespace :docker do
@volume_image.delete
end
- desc 'Build and test all packages'
- task :run_ci_all do
- run_ci(@volume_container, @ci_image, :all)
- end
-
- desc 'Build and test a fixed number of packages (NUM_OF_PACKAGES=5)'
- task :run_ci_some do
+ desc 'Build test packages ( NUM_OF_PACKAGES={5,all,untested} )'
+ task :run_build do
run_ci(@volume_container, @ci_image, num_of_packages)
end
- desc 'Build and test all untested packages and their reverse dependencies'
- task :run_ci_untested do
- run_ci(@volume_container, @ci_image, :untested)
- end
-
- desc 'QA test all packages'
- task :run_repoman_all do
- run_repoman(@ci_image, :all)
- end
-
- desc 'QA test a fixed number of packages (NUM_OF_PACKAGES=5)'
- task :run_repoman_some do
+ desc 'QA test packages ( NUM_OF_PACKAGES={5,all} )'
+ task :run_repoman do
run_repoman(@ci_image, num_of_packages)
end
end
diff --git a/web/app.rb b/web/app.rb
index 6e578e1..04512e5 100644
--- a/web/app.rb
+++ b/web/app.rb
@@ -22,61 +22,61 @@ class RubyTinderbox < Sinatra::Base
get '/ruby_targets' do
update_timestamp = Package.first[:update_timestamp]
portage_timestamp = Package.first[:portage_timestamp]
- packages = Package.order { [category, lower(name), version, revision] }.to_hash_groups(:identifier)
- erb :ruby_targets, locals: { packages: packages, update_timestamp: update_timestamp, portage_timestamp: portage_timestamp }
+ packages = Package.distinct(:sha1, :identifier).order(:identifier)
+ erb :'package/ruby_targets', locals: { packages: packages, update_timestamp: update_timestamp, portage_timestamp: portage_timestamp }
end
get '/outdated_gems' do
update_timestamp = Package.first[:update_timestamp]
portage_timestamp = Package.first[:portage_timestamp]
packages = Package.distinct(:category, :name).order(:category, :name, Sequel.desc(:version), Sequel.desc(:revision)).exclude(gem_version: 'nil')
- erb :outdated_gems, locals: { packages: packages, update_timestamp: update_timestamp, portage_timestamp: portage_timestamp }
+ erb :'package/outdated_gems', locals: { packages: packages, update_timestamp: update_timestamp, portage_timestamp: portage_timestamp }
end
get '/build_status' do
- update_timestamp = Build.order(:time).last[:time]
+ update_timestamp = Build.order(:timestamp).last[:timestamp]
portage_timestamp = Package.first[:portage_timestamp]
- builds = Build.distinct(:package_id).order(:package_id, Sequel.desc(:time))
- erb :build_status, locals: { builds: builds, update_timestamp: update_timestamp, portage_timestamp: portage_timestamp }
+ builds = []
+ Package.each do |package|
+ builds << package.build_dataset.where(target: 'current').reverse_order(:timestamp).first
+ end
+ builds = builds.compact.sort_by { |build| build.package[:identifier] }
+ erb :'build/build_status', locals: { builds: builds, update_timestamp: update_timestamp, portage_timestamp: portage_timestamp }
end
- get '/build_history/:category/:package' do
- builds = Build.where(package_id: params[:category] + '/' + params[:package]).reverse_order(:time)
- erb :build_history, locals: { builds: builds }
+ get '/build_logs/:sha1/:timestamp' do
+ package = Package.where(sha1: params[:sha1]).first
+ build = package.build_dataset.where(timestamp: params[:timestamp]).first
+ erb :'build/build_logs', locals: { package: package, build: build }
end
- get '/build_logs/:category/:package/:time' do
- build = Build.where(package_id: params[:category] + '/' + params[:package], time: params[:time]).first
- erb :build_logs, locals: { build: build }
+ get '/build_history/:sha1' do
+ package = Package.where(sha1: params[:sha1]).first
+ builds = package.build_dataset.where(target: 'current').reverse_order(:timestamp)
+ erb :'build/build_history', locals: { builds: builds }
end
get '/repoman_checks' do
- update_timestamp = Repoman.order(:time).last[:time]
+ update_timestamp = Build.order(:timestamp).last[:timestamp]
portage_timestamp = Package.first[:portage_timestamp]
- repomans = Repoman.distinct(:package_id).order(:package_id, Sequel.desc(:time))
- erb :repoman_checks, locals: { repomans: repomans, update_timestamp: update_timestamp, portage_timestamp: portage_timestamp }
+ repomans = []
+ Package.each do |package|
+ repomans << package.repoman_dataset.where(target: 'current').reverse_order(:timestamp).first
+ end
+ repomans = repomans.compact.sort_by { |repoman| repoman.package[:identifier] }
+ erb :'repoman/repoman_checks', locals: { repomans: repomans, update_timestamp: update_timestamp, portage_timestamp: portage_timestamp }
end
- get '/repoman_logs/:category/:package/:time' do
- repomans = Repoman.where(package_id: params[:category] + '/' + params[:package], time: params[:time]).first
- erb :repoman_logs, locals: { repomans: repomans }
+ get '/repoman_logs/:sha1/:timestamp' do
+ package = Package.where(sha1: params[:sha1]).first
+ repoman = package.repoman_dataset.where(timestamp: params[:timestamp]).first
+ erb :'repoman/repoman_logs', locals: { package: package, repoman: repoman }
end
- get '/repoman_history/:category/:package' do
- repomans = Repoman.where(package_id: params[:category] + '/' + params[:package]).reverse_order(:time)
- erb :repoman_history, locals: { repomans: repomans }
- end
-
- get '/new_targets' do
- erb :new_targets
- end
-
- get '/new_versions' do
- erb :new_versions
- end
-
- get '/new_keywords' do
- erb :new_keywords
+ get '/repoman_history/:sha1' do
+ package = Package.where(sha1: params[:sha1]).first
+ repomans = package.repoman_dataset.where(target: 'current').reverse_order(:timestamp)
+ erb :'repoman/repoman_history', locals: { repomans: repomans }
end
get '/visualizations' do
@@ -101,11 +101,11 @@ class RubyTinderbox < Sinatra::Base
Package.distinct(:category, :name).reverse_order(:category, :name, :version).exclude(gem_version: 'nil').each { |p| outdated << p if p[:version] < p[:gem_version] }
# Build Status
- succeeded = Build.distinct(:package_id).order(:package_id, Sequel.desc(:time)).where(result: 'succeeded').count
- failed = Build.distinct(:package_id).order(:package_id, Sequel.desc(:time)).where(result: 'failed').count
- timed_out = Build.distinct(:package_id).order(:package_id, Sequel.desc(:time)).where(result: 'timed out').count
+ succeeded = Build.distinct(:package_id).order(:package_id, Sequel.desc(:timestamp)).where(result: "succeeded\n").count
+ failed = Build.distinct(:package_id).order(:package_id, Sequel.desc(:timestamp)).where(result: "failed\n").count
+ timed_out = Build.distinct(:package_id).order(:package_id, Sequel.desc(:timestamp)).where(result: "timed out\n").count
- erb :visualizations, locals: {
+ erb :'overview/visualizations', locals: {
portage_timestamp: portage_timestamp,
update_timestamp: update_timestamp,
ruby_1_9_amd64: ruby_1_9_amd64,
diff --git a/web/db/migrations/018_new_targets.rb b/web/db/migrations/018_new_targets.rb
new file mode 100644
index 0000000..b04ccac
--- /dev/null
+++ b/web/db/migrations/018_new_targets.rb
@@ -0,0 +1,22 @@
+Sequel.migration do
+ change do
+ add_column :packages, :sha1, String
+ add_column :builds, :target, String
+ add_column :repomans, :target, String
+ rename_column :builds, :time, :timestamp
+ rename_column :repomans, :time, :timestamp
+ rename_column :repomans, :current_result, :result
+ rename_column :repomans, :current_log, :log
+ drop_column :repomans, :next_result
+ drop_column :repomans, :next_log
+ drop_column :builds, :package_id
+ drop_column :repomans, :package_id
+ alter_table(:builds) do
+ add_foreign_key :package_id, :packages
+ end
+ alter_table(:repomans) do
+ add_foreign_key :package_id, :packages
+ end
+ end
+
+end
diff --git a/web/lib/ci.rb b/web/lib/ci.rb
index 3805b90..13e7ac0 100644
--- a/web/lib/ci.rb
+++ b/web/lib/ci.rb
@@ -1,22 +1,22 @@
def run_ci(volume_container, ci_image, num_of_packages)
packages = []
- Package.order { [category, lower(name), version] }.each do |package|
+ Package.each do |package|
packages << package[:identifier]
end
- if num_of_packages == :all
+ if num_of_packages == 'all'
packages = packages
- elsif num_of_packages == :untested
+ elsif num_of_packages == 'untested'
packages = []
- Package.exclude(tested: true).order { [category, lower(name), version] }.each do |package|
+ Package.each do |package|
+ next if package.build.count > 0
+ next if "#{package[:category]}/#{package[:name]}" == 'virtual/rubygems'
+ next if "#{package[:category]}/#{package[:name]}" == 'dev-ruby/rake'
+ next if "#{package[:category]}/#{package[:name]}" == 'dev-ruby/rspec'
+ next if "#{package[:category]}/#{package[:name]}" == 'dev-ruby/rspec-core'
+ next if "#{package[:category]}/#{package[:name]}" == 'dev-ruby/rdoc'
+
packages << package[:identifier]
- next if [
- 'virtual/rubygems',
- 'dev-ruby/rake',
- 'dev-ruby/rspec',
- 'dev-ruby/rspec-core',
- 'dev-ruby/rdoc'
- ].include?("#{package[:category]}/#{package[:name]}")
Package.where(Sequel.like(
:dependencies,
"#{package[:category]}/#{package[:name]} %",
@@ -26,8 +26,11 @@ def run_ci(volume_container, ci_image, num_of_packages)
packages << rdep[:identifier]
end
end
- else
+ elsif num_of_packages.is_a?(Integer)
packages = packages.sample(num_of_packages)
+ else
+ puts 'ERROR: Invalid value for NUM_OF_PACKAGES'
+ exit
end
packages = packages.uniq
@@ -54,37 +57,37 @@ def run_ci(volume_container, ci_image, num_of_packages)
end
def update_ci
- Dir.glob('ci-logs/*/*/*') do |build|
- build_array = build.split('/')
- package_id = "#{build_array[1]}/#{build_array[2]}"
- time = build_array[3]
-
- if File.exist?("#{build}/succeeded")
- result = 'succeeded'
- elsif File.exist?("#{build}/failed")
- result = 'failed'
- elsif File.exist?("#{build}/timedout")
- result = 'timed out'
- end
+ Dir.glob('ci-logs/*/*/builds/*') do |build|
+ begin
+ build_array = build.split('/')
+ sha1 = build_array[1]
+ timestamp = build_array[4]
+ target = build_array[2].sub('_target', '')
- emerge_info = File.read("#{build}/emerge-info") if File.exist?("#{build}/emerge-info")
- emerge_pqv = File.read("#{build}/emerge-pqv") if File.exist?("#{build}/emerge-pqv")
- build_log = File.read("#{build}/build.log") if File.exist?("#{build}/build.log")
- gem_list = File.read("#{build}/gem-list") if File.exist?("#{build}/gem-list")
+ result = File.read("#{build}/result")
+ emerge_info = File.read("#{build}/emerge-info") if File.exist?("#{build}/emerge-info")
+ emerge_pqv = File.read("#{build}/emerge-pqv") if File.exist?("#{build}/emerge-pqv")
+ build_log = File.read("#{build}/build.log") if File.exist?("#{build}/build.log")
+ gem_list = File.read("#{build}/gem-list") if File.exist?("#{build}/gem-list")
- Build.find_or_create(
- package_id: package_id,
- time: time,
- result: result,
- emerge_info: emerge_info,
- emerge_pqv: emerge_pqv,
- build_log: build_log,
- gem_list: gem_list
- )
- end
-
- Build.each do |build|
- Package.where(identifier: build[:package_id]).update(tested: true)
+ package = Package.where(sha1: sha1).first
+ unless package.nil?
+ package.add_build(
+ Build.find_or_create(
+ timestamp: timestamp,
+ target: target,
+ result: result,
+ emerge_info: emerge_info,
+ emerge_pqv: emerge_pqv,
+ build_log: build_log,
+ gem_list: gem_list
+ )
+ )
+ end
+ rescue => e
+ puts "ERROR: #{e}"
+ next
+ end
end
end
diff --git a/web/lib/models.rb b/web/lib/models.rb
index 667e54f..68e0127 100644
--- a/web/lib/models.rb
+++ b/web/lib/models.rb
@@ -1,10 +1,14 @@
DB = Sequel.connect(ENV['DATABASE_URL'], max_connections: 12, pool_timeout: 60)
class Package < Sequel::Model
+ one_to_many :build
+ one_to_many :repoman
end
class Build < Sequel::Model
+ many_to_one :package
end
class Repoman < Sequel::Model(:repomans)
+ many_to_one :package
end
diff --git a/web/lib/packages.rb b/web/lib/packages.rb
index e703b26..eb62883 100644
--- a/web/lib/packages.rb
+++ b/web/lib/packages.rb
@@ -5,21 +5,22 @@ def update_packages
identifier = category + '/' + name + '-' + version + (revision == 'r0' ? '' : "-#{revision}")
gem_version = Gems.info(name)['version']
gem_version = 'nil' if gem_version.nil?
- # ebuild = "/usr/portage/#{category}/#{name}/#{identifier.split('/')[1]}.ebuild"
- # ebuild_hash = Digest::MD5.hexdigest(File.read(ebuild))
+ ebuild = "/usr/portage/#{category}/#{name}/#{identifier.split('/')[1]}.ebuild"
+ sha1 = Digest::SHA1.hexdigest(File.read(ebuild))
Package.find_or_create(
+ sha1: sha1,
category: category,
name: name,
version: version,
revision: revision,
slot: slot,
- amd64_keyword: amd64_keyword,
identifier: identifier,
- gem_version: gem_version,
+ amd64_keyword: amd64_keyword,
r19_target: r19_target,
r20_target: r20_target,
r21_target: r21_target,
- r22_target: r22_target
+ r22_target: r22_target,
+ gem_version: gem_version
)
end
@@ -27,6 +28,8 @@ def update_packages
if packages_txt.include?("#{package[:category]} #{package[:name]} #{package[:version]} #{package[:revision]} #{package[:slot]} #{package[:amd64_keyword]} #{package[:r19_target]} #{package[:r20_target]} #{package[:r21_target]} #{package[:r22_target]}")
package.update(dependencies: `python3 lib/deps.py #{package[:identifier]}`)
else
+ package.build.map(&:delete)
+ package.repoman.map(&:delete)
package.delete
end
end
diff --git a/web/lib/repoman.rb b/web/lib/repoman.rb
index 1185d2a..1a44177 100644
--- a/web/lib/repoman.rb
+++ b/web/lib/repoman.rb
@@ -1,6 +1,6 @@
def run_repoman(ci_image, num_of_packages)
packages = []
- Package.order { [category, lower(name), version] }.each do |package|
+ Package.each do |package|
target = ''
target = package[:r19_target] unless package[:r19_target] == 'nil'
target = package[:r20_target] unless package[:r20_target] == 'nil'
@@ -14,24 +14,26 @@ def run_repoman(ci_image, num_of_packages)
next_target = 'ruby22' if target == 'ruby21'
next if next_target.empty?
- category = package[:category]
- name = package[:name]
- version = package[:version]
- revision = package[:revision] == 'r0' ? '' : "-#{package[:revision]}"
-
- packages << "#{category} #{name} #{version}#{revision} #{target} #{next_target}"
+ packages << "#{package[:identifier]} #{target} #{next_target}"
end
- if num_of_packages == :all
+ if num_of_packages == 'all'
packages = packages
- else
+ elsif num_of_packages.is_a?(Integer)
packages = packages.sample(num_of_packages)
+ else
+ puts 'ERROR: Invalid value for NUM_OF_PACKAGES'
+ exit
end
packages = packages.uniq
packages.peach(8) do |package|
+ package = package.split(' ')
+ identifier = package[0]
+ current_target = package[1]
+ next_target = package[2]
ci_container = Docker::Container.create(
- Cmd: %W[/ruby-tinderbox/repoman.sh #{package}],
+ Cmd: %W[/ruby-tinderbox/repoman.sh #{identifier} #{current_target} #{next_target}],
Image: ci_image.id
)
ci_container.start
@@ -39,7 +41,7 @@ def run_repoman(ci_image, num_of_packages)
tar = Tempfile.new('tar')
File.open(tar, 'w') do |file|
- ci_container.copy('/ruby-tinderbox/repo-logs') do |chunk|
+ ci_container.copy('/ruby-tinderbox/ci-logs') do |chunk|
file.write(chunk)
end
end
@@ -52,59 +54,34 @@ def run_repoman(ci_image, num_of_packages)
end
def update_repoman
- Dir.glob('repo-logs/*/*/*') do |repoman|
- repoman_array = repoman.split('/')
- package_id = "#{repoman_array[1]}/#{repoman_array[2]}"
- time = repoman_array[3]
+ Dir.glob('ci-logs/*/*/repomans/*') do |repoman|
+ begin
+ repoman_array = repoman.split('/')
+ sha1 = repoman_array[1]
+ timestamp = repoman_array[4]
+ target = repoman_array[2].sub('_target', '')
- current_log = File.read("#{repoman}/current.txt") if File.exist?("#{repoman}/current.txt")
- next_log = File.read("#{repoman}/next.txt") if File.exist?("#{repoman}/next.txt")
+ log = File.read("#{repoman}/repoman_log")
- current_result = 'unknown'
- if current_log.include?('If everyone were like you, I\'d be out of business!')
- current_result = 'passed'
- elsif current_log.include?('You\'re only giving me a partial QA payment?')
- current_result = 'partial'
- elsif current_log.include?('Make your QA payment on time and you\'ll never see the likes of me.')
- current_result = 'failed'
- end
-
- next_result = 'unknown'
- if next_log.include?('If everyone were like you, I\'d be out of business!')
- next_result = 'passed'
- elsif next_log.include?('You\'re only giving me a partial QA payment?')
- next_result = 'partial'
- elsif next_log.include?('Make your QA payment on time and you\'ll never see the likes of me.')
- next_result = 'failed'
- end
-
- Repoman.find_or_create(
- package_id: package_id,
- time: time,
- current_result: current_result,
- current_log: current_log,
- next_result: next_result,
- next_log: next_log
- )
- end
-
- Package.order { [category, lower(name), version] }.each do |package|
- target = ''
- target = package[:r19_target] unless package[:r19_target] == 'nil'
- target = package[:r20_target] unless package[:r20_target] == 'nil'
- target = package[:r21_target] unless package[:r21_target] == 'nil'
- target = package[:r22_target] unless package[:r22_target] == 'nil'
- if target.empty?
- Repoman.where(package_id: package[:identifier]).delete
- next
- end
+ result = 'unknown'
+ if log.include?('If everyone were like you, I\'d be out of business!')
+ result = 'passed'
+ elsif log.include?('You\'re only giving me a partial QA payment?')
+ result = 'partial'
+ elsif log.include?('Make your QA payment on time and you\'ll never see the likes of me.')
+ result = 'failed'
+ end
- next_target = ''
- next_target = 'ruby20' if target == 'ruby19'
- next_target = 'ruby21' if target == 'ruby20'
- next_target = 'ruby22' if target == 'ruby21'
- if next_target.empty?
- Repoman.where(package_id: package[:identifier]).delete
+ Package.where(sha1: sha1).first.add_repoman(
+ Repoman.find_or_create(
+ timestamp: timestamp,
+ target: target,
+ result: result,
+ log: log
+ )
+ )
+ rescue => e
+ puts "ERROR: #{e}"
next
end
end
diff --git a/web/repo-logs/.gitignore b/web/repo-logs/.gitignore
deleted file mode 100644
index d6b7ef3..0000000
--- a/web/repo-logs/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/web/views/build/build_history.erb b/web/views/build/build_history.erb
new file mode 100644
index 0000000..f6af24a
--- /dev/null
+++ b/web/views/build/build_history.erb
@@ -0,0 +1,20 @@
+<h1 class="text-center"><%=builds.first.package[:identifier]%></h1>
+
+<table id="sortable" class="table table-bordered table-condensed">
+ <thead>
+ <tr>
+ <th class="width-50">Build Date</th>
+ <th class="width-50">Build Result</th>
+ </tr>
+ </thead>
+ <%builds.each do |build|%>
+ <tr>
+ <td class="width-50">
+ <%=Time.at(build[:timestamp].to_i).strftime('%Y-%m-%d')%>
+ </td>
+ <td class="width-50 <%=build[:result]%>">
+ <a href="/build_logs/<%=build.package[:sha1]%>/<%=build[:timestamp]%>"><%=build[:result].camelcase%></a>
+ </td>
+ </tr>
+ <%end%>
+</table>
diff --git a/web/views/build_logs.erb b/web/views/build/build_logs.erb
index 547b205..fb5bf3d 100644
--- a/web/views/build_logs.erb
+++ b/web/views/build/build_logs.erb
@@ -1,6 +1,6 @@
<div class="text-center">
- <h1><%=build[:package_id]%></h1>
- <h3><%=Time.at(build[:time].to_i).strftime('%Y-%m-%d')%></h3>
+ <h1><%=package[:identifier]%></h1>
+ <h3><%=Time.at(build[:timestamp].to_i).strftime('%Y-%m-%d')%></h3>
<div class="btn-group btn-group-justified">
<a class="btn btn-default <%="disabled" if build[:emerge_info].nil?%>" href="#emerge_info">Emerge Info</a>
<a class="btn btn-default <%="disabled" if build[:emerge_pqv].nil?%>" href="#emerge_pqv">Emerge PQV</a>
diff --git a/web/views/build_status.erb b/web/views/build/build_status.erb
index 13d7434..04ab1d8 100644
--- a/web/views/build_status.erb
+++ b/web/views/build/build_status.erb
@@ -23,26 +23,22 @@
</tr>
</thead>
<%builds.each do |build|%>
- <%package = Package.where(identifier: build[:package_id]).first%>
- <%next if package.nil?%>
- <%result = 'success' if build[:result] == 'succeeded'%>
- <%result = 'info' if build[:result] == 'timed out'%>
- <%result = 'danger' if build[:result] == 'failed'%>
+ <%next if build.nil?%>
<tr>
<td class="width-52">
- <%=build[:package_id]%>
+ <%=build.package[:identifier]%>
</td>
<td class="width-14">
- <%=Time.at(build[:time].to_i).strftime('%Y-%m-%d')%>
+ <%=Time.at(build[:timestamp].to_i).strftime('%Y-%m-%d')%>
</td>
- <td class="width-17 <%=result%>">
- <a href="/build_logs/<%=build[:package_id]%>/<%=build[:time]%>"><%=build[:result].camelcase%></a>
+ <td class="width-17 <%=build[:result]%>">
+ <a href="/build_logs/<%=build.package[:sha1]%>/<%=build[:timestamp]%>"><%=build[:result].camelcase%></a>
</td>
<td class="width-17">
- <a href="/build_history/<%=build[:package_id]%>"><%=Build.where(package_id: build[:package_id]).count%> Build(s)</a>
+ <a href="/build_history/<%=build.package[:sha1]%>"><%=build.package.build_dataset.where(target: 'current').count%> Build(s)</a>
</td>
<td style="display:none;">
- +<%=package[:amd64_keyword]%>
+ +<%=build.package[:amd64_keyword]%>
</td>
</tr>
<%end%>
diff --git a/web/views/build_history.erb b/web/views/build_history.erb
deleted file mode 100644
index fde2445..0000000
--- a/web/views/build_history.erb
+++ /dev/null
@@ -1,24 +0,0 @@
-<h1 class="text-center"><%=builds.first[:package_id]%></h1>
-
-<table id="sortable" class="table table-bordered table-condensed">
- <thead>
- <tr>
- <th class="width-50">Build Date</th>
- <th class="width-50">Build Result</th>
- </tr>
- </thead>
- <%builds.each do |build|%>
- <%next if build.nil?%>
- <%result = 'success' if build[:result] == 'succeeded'%>
- <%result = 'info' if build[:result] == 'timed out'%>
- <%result = 'danger' if build[:result] == 'failed'%>
- <tr>
- <td class="width-50">
- <%=Time.at(build[:time].to_i).strftime('%Y-%m-%d')%>
- </td>
- <td class="width-50 <%=result%>">
- <a href="/build_logs/<%=build[:package_id]%>/<%=build[:time]%>"><%=build[:result].camelcase%></a>
- </td>
- </tr>
- <%end%>
-</table>
diff --git a/web/views/layout.erb b/web/views/layout.erb
index bf747d6..98d60ec 100644
--- a/web/views/layout.erb
+++ b/web/views/layout.erb
@@ -11,7 +11,7 @@
<script src="https://1b9a50f4f9de4348cd9f-e703bc50ba0aa66772a874f8c7698be7.ssl.cf5.rackcdn.com/jquery.min.js"></script>
<script src="https://1b9a50f4f9de4348cd9f-e703bc50ba0aa66772a874f8c7698be7.ssl.cf5.rackcdn.com/bootstrap.min.js"></script>
<script src="https://1b9a50f4f9de4348cd9f-e703bc50ba0aa66772a874f8c7698be7.ssl.cf5.rackcdn.com/retina.min.js"></script>
-<script src='/js/tablesort.min.js'></script>
+<script src="/js/tablesort.min.js"></script>
<link rel="icon" href="http://www.gentoo.org/favicon.ico" type="image/x-icon">
</head>
<body>
@@ -34,7 +34,7 @@
<li><a href="http://packages.gentoo.org/" title="Find software for your Gentoo"><span class="fa fa-hdd-o fa-fw"></span> Packages</a></li>
<li class="divider"></li>
<li><a href="http://overlays.gentoo.org/" title="Collaborate on maintaining packages"><span class="fa fa-code-fork fa-fw"></span> Overlays</a></li>
- <li><a href="http://planet.gentoo.org/" title="Find out what's going on in the developer community"><span class="fa fa-rss fa-fw"></span> Planet</a></li>
+ <li><a href="http://planet.gentoo.org/" title="Find out what"s going on in the developer community"><span class="fa fa-rss fa-fw"></span> Planet</a></li>
<li><a href="http://archives.gentoo.org/" title="Read up on past discussions"><span class="fa fa-archive fa-fw"></span> Archives</a></li>
<li><a href="http://sources.gentoo.org/" title="Browse our source code"><span class="fa fa-code fa-fw"></span> Sources</a></li>
<li class="divider"></li>
@@ -67,13 +67,6 @@
<li><a href="/outdated_gems">Outdated Gems</a></li>
<li><a href="/build_status">Build Status (CI)</a></li>
<li><a href="/repoman_checks">Repoman Checks (QA)</a></li>
- <li class="dropdown">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">Package Bumps <span class="caret"></span></a>
- <ul class="dropdown-menu" role="menu">
- <li><a href="/new_targets">New Targets</a></li>
- <li><a href="/new_versions">New Versions</a></li>
- <li><a href="/new_keywords">New Keywords</a></li>
- </ul>
<li><a href="/visualizations">Visualizations</a></li>
</li>
@@ -108,7 +101,17 @@
</div>
</footer>
<script>
-new Tablesort(document.getElementById("sortable"));
+$(document).ready(function() {
+ new Tablesort(document.getElementById("sortable"), {
+ descending: true
+ });
+});
+$(".succeeded").addClass("success");
+$(".passed").addClass("success");
+$(".timed").addClass("info");
+$(".partial").addClass("info");
+$(".unknown").addClass("warning");
+$(".failed").addClass("danger");
</script>
</body>
</html>
diff --git a/web/views/new_keywords.erb b/web/views/new_keywords.erb
deleted file mode 100644
index 9f96c63..0000000
--- a/web/views/new_keywords.erb
+++ /dev/null
@@ -1,4 +0,0 @@
-<div id="new_keywords">
- <h1>New Keywords</h1>
-</div>
-<h2>This page is a work in progress</h2>
diff --git a/web/views/new_targets.erb b/web/views/new_targets.erb
deleted file mode 100644
index 8ae1218..0000000
--- a/web/views/new_targets.erb
+++ /dev/null
@@ -1,4 +0,0 @@
-<div id="new_targets">
- <h1>New Targets</h1>
-</div>
-<h2>This page is a work in progress</h2>
diff --git a/web/views/new_versions.erb b/web/views/new_versions.erb
deleted file mode 100644
index 0477f38..0000000
--- a/web/views/new_versions.erb
+++ /dev/null
@@ -1,4 +0,0 @@
-<div id="new_versions">
- <h1>New Versions</h1>
-</div>
-<h2>This page is a work in progress</h2>
diff --git a/web/views/visualizations.erb b/web/views/overview/visualizations.erb
index 9b22e6e..9b22e6e 100644
--- a/web/views/visualizations.erb
+++ b/web/views/overview/visualizations.erb
diff --git a/web/views/outdated_gems.erb b/web/views/package/outdated_gems.erb
index fc298a9..fc298a9 100644
--- a/web/views/outdated_gems.erb
+++ b/web/views/package/outdated_gems.erb
diff --git a/web/views/ruby_targets.erb b/web/views/package/ruby_targets.erb
index 5db7a13..fcd54fc 100644
--- a/web/views/ruby_targets.erb
+++ b/web/views/package/ruby_targets.erb
@@ -24,7 +24,6 @@
</tr>
</thead>
<%packages.each do |package|%>
- <%package = package[1][0]%>
<tr>
<td class="width-52">
<%=package[:identifier]%>
diff --git a/web/views/repoman_checks.erb b/web/views/repoman/repoman_checks.erb
index 01de59d..a8ffc34 100644
--- a/web/views/repoman_checks.erb
+++ b/web/views/repoman/repoman_checks.erb
@@ -23,27 +23,22 @@
</tr>
</thead>
<%repomans.each do |repoman|%>
- <%package = Package.where(identifier: repoman[:package_id]).first%>
- <%next if package.nil?%>
- <%result = 'info'%>
- <%result = 'success' if repoman[:next_result] == 'passed'%>
- <%result = 'danger' if repoman[:current_result] == 'failed'%>
- <%result = 'danger' if repoman[:current_result] == 'partial'%>
+ <%next if repoman.nil?%>
<tr>
<td class="width-52">
- <%=repoman[:package_id]%>
+ <%=repoman.package[:identifier]%>
</td>
<td class="width-14">
- <%=Time.at(repoman[:time].to_i).strftime('%Y-%m-%d')%>
+ <%=Time.at(repoman[:timestamp].to_i).strftime('%Y-%m-%d')%>
</td>
- <td class="width-17 <%=result%>">
- <a href="/repoman_logs/<%=repoman[:package_id]%>/<%=repoman[:time]%>"><%=repoman[:current_result].camelcase%> / <%=repoman[:next_result].camelcase%></a>
+ <td class="width-17 <%=repoman[:result]%>">
+ <a href="/repoman_logs/<%=repoman.package[:sha1]%>/<%=repoman[:timestamp]%>"><%=repoman[:result].camelcase%></a>
</td>
<td class="width-17">
- <a href="/repoman_history/<%=repoman[:package_id]%>"><%=Repoman.where(package_id: repoman[:package_id]).count%> Check(s)</a>
+ <a href="/repoman_history/<%=repoman.package[:sha1]%>"><%=repoman.package.repoman_dataset.where(target: 'current').count%> Checks(s)</a>
</td>
<td style="display:none;">
- +<%=package[:amd64_keyword]%>
+ +<%=repoman.package[:amd64_keyword]%>
</td>
</tr>
<%end%>
diff --git a/web/views/repoman/repoman_history.erb b/web/views/repoman/repoman_history.erb
new file mode 100644
index 0000000..bc26cd8
--- /dev/null
+++ b/web/views/repoman/repoman_history.erb
@@ -0,0 +1,20 @@
+<h1 class="text-center"><%=repomans.first.package[:identifier]%></h1>
+
+<table id="sortable" class="table table-bordered table-condensed">
+ <thead>
+ <tr>
+ <th class="width-50">Check Date</th>
+ <th class="width-5o">Check Result</th>
+ </tr>
+ </thead>
+ <%repomans.each do |repoman|%>
+ <tr>
+ <td class="width-50">
+ <%=Time.at(repoman[:timestamp].to_i).strftime('%Y-%m-%d')%>
+ </td>
+ <td class="width-50 <%=repoman[:result]%>">
+ <a href="/repoman_logs/<%=repoman.package[:sha1]%>/<%=repoman[:timestamp]%>"><%=repoman[:result].camelcase%></a>
+ </td>
+ </tr>
+ <%end%>
+</table>
diff --git a/web/views/repoman/repoman_logs.erb b/web/views/repoman/repoman_logs.erb
new file mode 100644
index 0000000..52faecc
--- /dev/null
+++ b/web/views/repoman/repoman_logs.erb
@@ -0,0 +1,16 @@
+<div class="text-center">
+ <h1><%=package[:identifier]%></h1>
+ <h3><%=Time.at(repoman[:timestamp].to_i).strftime('%Y-%m-%d')%></h3>
+</div>
+<br>
+
+<%unless repoman[:log].nil?%>
+<div class="panel panel-default">
+ <div class="panel-heading">
+ <h4><a name="current_log">Repoman Full</a></h4>
+ </div>
+ <div class="panel-body">
+ <pre><%=repoman[:log]%></pre>
+ </div>
+</div>
+<%end%>
diff --git a/web/views/repoman_history.erb b/web/views/repoman_history.erb
deleted file mode 100644
index 50c8a65..0000000
--- a/web/views/repoman_history.erb
+++ /dev/null
@@ -1,25 +0,0 @@
-<h1 class="text-center"><%=repomans.first[:package_id]%></h1>
-
-<table id="sortable" class="table table-bordered table-condensed">
- <thead>
- <tr>
- <th class="width-50">Check Date</th>
- <th class="width-5o">Check Result</th>
- </tr>
- </thead>
- <%repomans.each do |repoman|%>
- <%next if repoman.nil?%>
- <%result = 'info'%>
- <%result = 'success' if repoman[:next_result] == 'passed'%>
- <%result = 'danger' if repoman[:current_result] == 'failed'%>
- <%result = 'danger' if repoman[:current_result] == 'partial'%>
- <tr>
- <td class="width-50">
- <%=Time.at(repoman[:time].to_i).strftime('%Y-%m-%d')%>
- </td>
- <td class="width-50 <%=result%>">
- <a href="/repoman_logs/<%=repoman[:package_id]%>/<%=repoman[:time]%>"><%=repoman[:current_result].camelcase%> / <%=repoman[:next_result].camelcase%></a>
- </td>
- </tr>
- <%end%>
-</table>
diff --git a/web/views/repoman_logs.erb b/web/views/repoman_logs.erb
deleted file mode 100644
index 544db7a..0000000
--- a/web/views/repoman_logs.erb
+++ /dev/null
@@ -1,31 +0,0 @@
-<div class="text-center">
- <h1><%=repomans[:package_id]%></h1>
- <h3><%=Time.at(repomans[:time].to_i).strftime('%Y-%m-%d')%></h3>
- <div class="btn-group btn-group-justified">
- <a class="btn btn-default <%="disabled" if repomans[:current_log].nil?%>" href="#current_log">Current Ruby Target(s)</a>
- <a class="btn btn-default <%="disabled" if repomans[:next_log].nil?%>" href="#next_log">Next Ruby Target</a>
- </div>
-</div>
-<br>
-
-<%unless repomans[:current_log].nil?%>
-<div class="panel panel-default">
- <div class="panel-heading">
- <h4><a name="current_log">Current Ruby Target(s)</a></h4>
- </div>
- <div class="panel-body">
- <pre><%=repomans[:current_log]%></pre>
- </div>
-</div>
-<%end%>
-
-<%unless repomans[:next_log].nil?%>
-<div class="panel panel-default">
- <div class="panel-heading">
- <h4><a name="next_log">Next Ruby Target</a></h4>
- </div>
- <div class="panel-body">
- <pre><%=repomans[:next_log]%></pre>
- </div>
-</div>
-<%end%>