vagrant 0.8.7 → 0.8.8
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +21 -0
- data/CHANGELOG.md +25 -0
- data/README.md +38 -8
- data/Rakefile +13 -6
- data/bin/vagrant +6 -1
- data/config/default.rb +2 -2
- data/lib/vagrant/action/box/download.rb +14 -2
- data/lib/vagrant/action/vm/check_box.rb +8 -1
- data/lib/vagrant/action/vm/check_guest_additions.rb +6 -3
- data/lib/vagrant/action/vm/share_folders.rb +12 -1
- data/lib/vagrant/command/init.rb +1 -1
- data/lib/vagrant/downloaders/http.rb +29 -2
- data/lib/vagrant/hosts.rb +1 -0
- data/lib/vagrant/hosts/bsd.rb +1 -0
- data/lib/vagrant/hosts/freebsd.rb +51 -0
- data/lib/vagrant/provisioners/chef.rb +6 -5
- data/lib/vagrant/provisioners/chef_client.rb +1 -1
- data/lib/vagrant/provisioners/chef_solo.rb +13 -4
- data/lib/vagrant/ssh.rb +24 -49
- data/lib/vagrant/ssh/session.rb +1 -1
- data/lib/vagrant/systems/solaris.rb +57 -11
- data/lib/vagrant/test_helpers.rb +23 -0
- data/lib/vagrant/ui.rb +1 -1
- data/lib/vagrant/util.rb +0 -1
- data/lib/vagrant/util/file_checksum.rb +38 -0
- data/lib/vagrant/util/platform.rb +1 -1
- data/lib/vagrant/util/safe_exec.rb +2 -1
- data/lib/vagrant/version.rb +1 -1
- data/tasks/acceptance.rake +113 -0
- data/tasks/bundler.rake +3 -0
- data/tasks/test.rake +15 -0
- data/templates/commands/init/Vagrantfile.erb +3 -0
- data/templates/locales/en.yml +1 -1
- data/test/acceptance/base.rb +48 -0
- data/test/acceptance/box_test.rb +77 -0
- data/test/acceptance/destroy_test.rb +37 -0
- data/test/acceptance/halt_test.rb +72 -0
- data/test/acceptance/init_test.rb +33 -0
- data/test/acceptance/resume_test.rb +17 -0
- data/test/acceptance/ssh_test.rb +41 -0
- data/test/acceptance/support/config.rb +42 -0
- data/test/acceptance/support/isolated_environment.rb +226 -0
- data/test/acceptance/support/matchers/have_color.rb +9 -0
- data/test/acceptance/support/matchers/match_output.rb +14 -0
- data/test/acceptance/support/output.rb +87 -0
- data/test/acceptance/support/shared/base_context.rb +65 -0
- data/test/acceptance/support/shared/command_examples.rb +33 -0
- data/test/acceptance/support/tempdir.rb +34 -0
- data/test/acceptance/support/virtualbox.rb +36 -0
- data/test/acceptance/suspend_test.rb +56 -0
- data/test/acceptance/up_basic_test.rb +58 -0
- data/test/acceptance/up_with_box_url.rb +40 -0
- data/test/acceptance/vagrant_test.rb +47 -0
- data/test/acceptance/version_test.rb +20 -0
- data/test/buildbot/README.md +72 -0
- data/test/buildbot/buildbot_config/__init__.py +0 -0
- data/test/buildbot/buildbot_config/config/__init__.py +0 -0
- data/test/buildbot/buildbot_config/config/loader.py +24 -0
- data/test/buildbot/buildbot_config/config/master.py +24 -0
- data/test/buildbot/buildbot_config/config/slave.py +22 -0
- data/test/buildbot/buildbot_config/master/__init__.py +6 -0
- data/test/buildbot/buildbot_config/master/builders.py +78 -0
- data/test/buildbot/buildbot_config/master/buildsteps.py +100 -0
- data/test/buildbot/buildbot_config/master/change_sources.py +8 -0
- data/test/buildbot/buildbot_config/master/schedulers.py +32 -0
- data/test/buildbot/buildbot_config/master/slaves.py +60 -0
- data/test/buildbot/buildbot_config/master/status.py +52 -0
- data/test/buildbot/master/Makefile.sample +28 -0
- data/test/buildbot/master/buildbot.tac +36 -0
- data/test/buildbot/master/master.cfg +67 -0
- data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
- data/test/buildbot/master/public_html/default.css +545 -0
- data/test/buildbot/master/public_html/favicon.ico +0 -0
- data/test/buildbot/master/public_html/robots.txt +10 -0
- data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +356 -0
- data/test/buildbot/master/public_html/static/css/prettify.css +97 -0
- data/test/buildbot/master/public_html/static/css/syntax.css +60 -0
- data/test/buildbot/master/public_html/static/css/vagrant.base.css +205 -0
- data/test/buildbot/master/public_html/static/images/base_box_mac.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/getting-started/success.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/icons/error.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_chilling.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_holding.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_looking.png +0 -0
- data/test/buildbot/master/public_html/static/images/windows/alter_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/edit_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/save_result.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg +0 -0
- data/test/buildbot/master/public_html/static/js/bootstrap-tabs.js +80 -0
- data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +4 -0
- data/test/buildbot/master/templates/authfail.html +9 -0
- data/test/buildbot/master/templates/build.html +205 -0
- data/test/buildbot/master/templates/builder.html +118 -0
- data/test/buildbot/master/templates/builders.html +33 -0
- data/test/buildbot/master/templates/buildslave.html +72 -0
- data/test/buildbot/master/templates/buildslaves.html +70 -0
- data/test/buildbot/master/templates/change.html +15 -0
- data/test/buildbot/master/templates/layouts/base.html +58 -0
- data/test/buildbot/master/templates/macros/box.html +37 -0
- data/test/buildbot/master/templates/macros/build_line.html +50 -0
- data/test/buildbot/master/templates/macros/change.html +81 -0
- data/test/buildbot/master/templates/macros/forms.html +300 -0
- data/test/buildbot/master/templates/root.html +42 -0
- data/test/buildbot/master/templates/waterfall.html +53 -0
- data/test/buildbot/requirements.txt +4 -0
- data/test/buildbot/scripts/deploy.sh +38 -0
- data/test/buildbot/scripts/setup.sh +107 -0
- data/test/buildbot/slave/buildbot.tac +43 -0
- data/test/buildbot/slave/info/admin +1 -0
- data/test/buildbot/slave/info/host +1 -0
- data/test/buildbot/tests/__init__.py +0 -0
- data/test/buildbot/tests/master/__init__.py +0 -0
- data/test/buildbot/tests/master/test_slaves.py +41 -0
- data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
- data/test/config/acceptance_boxes.yml +7 -0
- data/test/unit/test_helper.rb +4 -0
- data/test/unit/vagrant/action/box/download_test.rb +2 -2
- data/test/unit/vagrant/action/vm/check_box_test.rb +6 -1
- data/test/unit/vagrant/action/vm/share_folders_test.rb +1 -1
- data/test/unit/vagrant/command/init_test.rb +10 -0
- data/test/unit/vagrant/downloaders/http_test.rb +12 -1
- data/test/unit/vagrant/provisioners/chef_test.rb +7 -0
- data/test/unit/vagrant/ssh/session_test.rb +2 -2
- data/test/unit/vagrant/ssh_test.rb +5 -8
- data/vagrant.gemspec +6 -0
- metadata +195 -7
@@ -0,0 +1,118 @@
|
|
1
|
+
{% import 'macros/forms.html' as forms %}
|
2
|
+
{% from 'macros/build_line.html' import build_table %}
|
3
|
+
|
4
|
+
{% extends "layouts/base.html" %}
|
5
|
+
|
6
|
+
{% block content %}
|
7
|
+
<h1>Builder: {{ name }}</h1>
|
8
|
+
|
9
|
+
<ul class="tabs" data-tabs="tabs">
|
10
|
+
<li class="active"><a href="#builds">Builds</a></li>
|
11
|
+
<li><a href="#slaves">Build Slaves</a></li>
|
12
|
+
<li><a href="#force-build">Force Build</a></li>
|
13
|
+
</ul>
|
14
|
+
|
15
|
+
<div class="tab-content">
|
16
|
+
<div class="active" id="builds">
|
17
|
+
<h3>Current Builds:</h3>
|
18
|
+
{% if current %}
|
19
|
+
<ul>
|
20
|
+
{% for b in current %}
|
21
|
+
<li><a href="{{ b.link }}">{{ b.num }}</a>
|
22
|
+
{% if b.when %}
|
23
|
+
ETA: {{ b.when_time }} [{{ b.when }}]
|
24
|
+
{% endif %}
|
25
|
+
|
26
|
+
{{ b.current_step }}
|
27
|
+
|
28
|
+
{% if authz.advertiseAction('stopBuild') %}
|
29
|
+
{{ forms.stop_build(b.stop_url, authz, on_all=False, short=True, label='Build') }}
|
30
|
+
{% endif %}
|
31
|
+
</li>
|
32
|
+
{% endfor %}
|
33
|
+
</ul>
|
34
|
+
{% else %}
|
35
|
+
<p>No current builds.</p>
|
36
|
+
{% endif %}
|
37
|
+
|
38
|
+
<h3>Pending Build Requests:</h3>
|
39
|
+
{% if pending %}
|
40
|
+
<ul>
|
41
|
+
{% for b in pending %}
|
42
|
+
<li>{{ b.when }}, waiting {{ b.delay }}
|
43
|
+
|
44
|
+
{% if authz.advertiseAction('cancelPendingBuild') %}
|
45
|
+
{{ forms.cancel_pending_build(builder_url+"/cancelbuild", authz, short=True, id=b.id) }}
|
46
|
+
{% endif %}
|
47
|
+
|
48
|
+
{% if b.num_changes < 4 %}
|
49
|
+
{% for c in b.changes %}{{ c.revision|shortrev(c.repo) }}
|
50
|
+
(<a href="{{ c.url }}">{{ c.who }}</a>){% if not loop.last %},{% endif %}
|
51
|
+
{% endfor %}
|
52
|
+
{% else %}
|
53
|
+
({{ b.num_changes }} changes)
|
54
|
+
{% endif %}
|
55
|
+
|
56
|
+
</li>
|
57
|
+
{% endfor %}
|
58
|
+
</ul>
|
59
|
+
|
60
|
+
{% if authz.advertiseAction('cancelPendingBuild') %}
|
61
|
+
{{ forms.cancel_pending_build(builder_url+"/cancelbuild", authz, short=False, id='all') }}
|
62
|
+
{% endif %}
|
63
|
+
|
64
|
+
{% else %}
|
65
|
+
<p>
|
66
|
+
No pending build requests.
|
67
|
+
</p>
|
68
|
+
{% endif %}
|
69
|
+
|
70
|
+
<h3>Recent Builds:</h3>
|
71
|
+
|
72
|
+
{{ build_table(recent) }}
|
73
|
+
</div>
|
74
|
+
|
75
|
+
<div id="slaves">
|
76
|
+
<h3>Buildslaves:</h3>
|
77
|
+
<table class="info">
|
78
|
+
{% if slaves %}
|
79
|
+
<thead>
|
80
|
+
<tr>
|
81
|
+
<th>Name</th>
|
82
|
+
<th>Status</th>
|
83
|
+
<th>Admin</th>
|
84
|
+
</tr>
|
85
|
+
</thead>
|
86
|
+
{% endif %}
|
87
|
+
<tbody>
|
88
|
+
{% for s in slaves %}
|
89
|
+
<tr class="{{ loop.cycle('alt', '') }}">
|
90
|
+
<td><b><a href="{{ s.link|e }}">{{ s.name|e }}</a></b></td>
|
91
|
+
{% if s.connected %}
|
92
|
+
<td class="idle">connected</td>
|
93
|
+
<td>{{ s.admin|email if s.admin else ""}}</td>
|
94
|
+
{% else %}
|
95
|
+
<td class="offline">offline</td>
|
96
|
+
<td/>
|
97
|
+
{% endif %}
|
98
|
+
</tr>
|
99
|
+
{% else %}
|
100
|
+
<td>no slaves attached</td>
|
101
|
+
{% endfor %}
|
102
|
+
</tbody>
|
103
|
+
</table>
|
104
|
+
|
105
|
+
{% if authz.advertiseAction('pingBuilder') %}
|
106
|
+
<h3>Ping slaves</h3>
|
107
|
+
{{ forms.ping_builder(builder_url+"/ping", authz) }}
|
108
|
+
{% endif %}
|
109
|
+
</div>
|
110
|
+
|
111
|
+
<div id="force-build">
|
112
|
+
{% if authz.advertiseAction('forceBuild') %}
|
113
|
+
<h3>Force build</h3>
|
114
|
+
{{ forms.force_build(builder_url+"/force", authz, False) }}
|
115
|
+
{% endif %}
|
116
|
+
</div>
|
117
|
+
</div>
|
118
|
+
{% endblock %}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
{% extends "layouts/base.html" %}
|
2
|
+
{% from "macros/box.html" import box %}
|
3
|
+
|
4
|
+
{% block content %}
|
5
|
+
<h1>Builders</h1>
|
6
|
+
|
7
|
+
<table class="Module builders">
|
8
|
+
<thead>
|
9
|
+
<tr>
|
10
|
+
<th>Builder Name</th>
|
11
|
+
<th>Last Build</th>
|
12
|
+
<th>Current Status</th>
|
13
|
+
</tr>
|
14
|
+
</thead>
|
15
|
+
|
16
|
+
<tbody>
|
17
|
+
{% for b in builders %}
|
18
|
+
<tr>
|
19
|
+
<td class="box"><a href="{{ b.link }}">{{ b.name|e }}</a></td>
|
20
|
+
{% if b.build_url %}
|
21
|
+
<td class="LastBuild box {{ b.build_css_class }}">
|
22
|
+
<a href="{{ b.build_url }}">{{ b.build_label }}</a>
|
23
|
+
<br/>{{ b.build_text }}
|
24
|
+
</td>
|
25
|
+
{% else %}
|
26
|
+
<td class="LastBuild box">no build</td>
|
27
|
+
{% endif %}
|
28
|
+
{{ box(**b.current_box) }}
|
29
|
+
</tr>
|
30
|
+
{% endfor %}
|
31
|
+
</tbody>
|
32
|
+
</table>
|
33
|
+
{% endblock %}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
{% import 'macros/forms.html' as forms %}
|
2
|
+
{% from 'macros/build_line.html' import build_table, build_line %}
|
3
|
+
|
4
|
+
{% extends "layouts/base.html" %}
|
5
|
+
{% block content %}
|
6
|
+
<h1>Buildslave: {{ slavename|e }}</h1>
|
7
|
+
|
8
|
+
<ul class="tabs" data-tabs="tabs">
|
9
|
+
<li class="active"><a href="#current">Current Builds</a></li>
|
10
|
+
<li><a href="#recent">Recent Builds</a></li>
|
11
|
+
<li><a href="#info">Slave Info</a></li>
|
12
|
+
</ul>
|
13
|
+
|
14
|
+
<div class="tab-content">
|
15
|
+
<div class="active" id="current">
|
16
|
+
{% if current %}
|
17
|
+
<h3>Currently building:</h3>
|
18
|
+
<ul>
|
19
|
+
{% for b in current %}
|
20
|
+
<li>{{ build_line(b, True) }}
|
21
|
+
<form method="post" action="{{ b.buildurl }}/stop" class="command stopbuild" style="display:inline">
|
22
|
+
<input type="submit" value="Stop Build" />
|
23
|
+
<input type="hidden" name="url" value="{{ this_url }}" />
|
24
|
+
</form>
|
25
|
+
</li>
|
26
|
+
{% endfor %}
|
27
|
+
</ul>
|
28
|
+
{% else %}
|
29
|
+
<h3>No current builds</h3>
|
30
|
+
{% endif %}
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div id="recent">
|
34
|
+
<h3>Recent builds</h3>
|
35
|
+
{{ build_table(recent, True) }}
|
36
|
+
</div>
|
37
|
+
|
38
|
+
<div id="info">
|
39
|
+
{% if access_uri %}
|
40
|
+
<a href="{{ access_uri|e }}">Click to Access Slave</a>
|
41
|
+
{% endif %}
|
42
|
+
|
43
|
+
{% if admin %}
|
44
|
+
<h3>Administrator</h3>
|
45
|
+
<p>{{ admin|email }}</p>
|
46
|
+
{% endif %}
|
47
|
+
|
48
|
+
{% if host %}
|
49
|
+
<h3>Slave information</h3>
|
50
|
+
Buildbot-Slave {{ slave_version }}
|
51
|
+
<pre>{{ host|e }}</pre>
|
52
|
+
{% endif %}
|
53
|
+
|
54
|
+
<h2>Connection Status</h3>
|
55
|
+
<p>
|
56
|
+
{{ connect_count }} connection(s) in the last hour
|
57
|
+
{% if not slave.isConnected() %}
|
58
|
+
(not currently connected)
|
59
|
+
{% else %}
|
60
|
+
</p>
|
61
|
+
{% if authz.advertiseAction('gracefulShutdown') %}
|
62
|
+
<h2>Graceful Shutdown</h2>
|
63
|
+
{% if slave.getGraceful() %}
|
64
|
+
<p>Slave will shut down gracefully when it is idle.</p>
|
65
|
+
{% else %}
|
66
|
+
{{ forms.graceful_shutdown(shutdown_url, authz) }}
|
67
|
+
{% endif %}
|
68
|
+
{% endif %}
|
69
|
+
{% endif %}
|
70
|
+
</div>
|
71
|
+
</div>
|
72
|
+
{% endblock %}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
{% extends "layouts/base.html" %}
|
2
|
+
|
3
|
+
{% block content %}
|
4
|
+
<h1>Buildslaves</h1>
|
5
|
+
|
6
|
+
<table class="zebra-striped">
|
7
|
+
<thead>
|
8
|
+
<tr>
|
9
|
+
<th>Name</th>
|
10
|
+
{%- if show_builder_column %}
|
11
|
+
<th>Builders</th>
|
12
|
+
{%- endif %}
|
13
|
+
<th>BuildBot</th>
|
14
|
+
<th>Admin</th>
|
15
|
+
<th>Last heard from</th>
|
16
|
+
<th>Connects/Hour</th>
|
17
|
+
<th>Status</th>
|
18
|
+
</tr>
|
19
|
+
</thead>
|
20
|
+
|
21
|
+
<tbody>
|
22
|
+
{% for s in slaves %}
|
23
|
+
<tr class="{{ loop.cycle('alt','') }}">
|
24
|
+
<td><b><a href="{{ s.link }}">{{ s.name }}</a></b></td>
|
25
|
+
|
26
|
+
{%- if show_builder_column %}
|
27
|
+
<td>
|
28
|
+
{%- if s.builders %}
|
29
|
+
{%- for b in s.builders %}
|
30
|
+
<a href="{{ b.link }}">{{ b.name }}</a><br />
|
31
|
+
{%- endfor %}
|
32
|
+
{%- else %}
|
33
|
+
<span class="Warning">no builders</span>
|
34
|
+
{%- endif -%}
|
35
|
+
</td>
|
36
|
+
{%- endif %}
|
37
|
+
|
38
|
+
<td>{{ (s.version or '-')|e }}</td>
|
39
|
+
|
40
|
+
{%- if s.admin -%}
|
41
|
+
<td>{{ s.admin|email }}</td>
|
42
|
+
{%- else -%}
|
43
|
+
<td>-</td>
|
44
|
+
{%- endif -%}
|
45
|
+
|
46
|
+
<td>
|
47
|
+
{%- if s.last_heard_from_age -%}
|
48
|
+
{{ s.last_heard_from_age }}
|
49
|
+
{%- endif -%}
|
50
|
+
</td>
|
51
|
+
<td>
|
52
|
+
{{ s.connectCount }}
|
53
|
+
</td>
|
54
|
+
|
55
|
+
{% if s.connected %}
|
56
|
+
{% if s.running_builds %}
|
57
|
+
<td class="building">Running {{ s.running_builds }} build(s)</td>
|
58
|
+
{% else %}
|
59
|
+
<td class="idle">Idle</td>
|
60
|
+
{% endif %}
|
61
|
+
|
62
|
+
{% else %}
|
63
|
+
<td class="offline">Not connected</td>
|
64
|
+
{% endif %}
|
65
|
+
|
66
|
+
</tr>
|
67
|
+
{% endfor %}
|
68
|
+
</tbody>
|
69
|
+
</table>
|
70
|
+
{% endblock %}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{% import 'macros/forms.html' as forms %}
|
2
|
+
{% from "macros/change.html" import change with context %}
|
3
|
+
|
4
|
+
{% extends "layouts/base.html" %}
|
5
|
+
{% block content %}
|
6
|
+
|
7
|
+
<h1>{{ pageTitle }}</h1>
|
8
|
+
|
9
|
+
{{ change(c) }}
|
10
|
+
|
11
|
+
{% if authz.advertiseAction('stopChange') %}
|
12
|
+
<h3>Cancel Builds For Change:</h3>
|
13
|
+
{{ forms.stop_change_builds("/builders/_all/stopchangeall", c.number, authz) }}
|
14
|
+
{% endif %}
|
15
|
+
{% endblock %}
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
5
|
+
<title>Vagrant CI</title>
|
6
|
+
|
7
|
+
<meta name="description" content="CI website for Vagrant, a tool for creating and distributing virtualized environments.">
|
8
|
+
|
9
|
+
<link rel="stylesheet" href="/static/css/bootstrap-1.4.0.min.css" type="text/css" media="screen" />
|
10
|
+
<link rel="stylesheet" href="/static/css/syntax.css" type="text/css" media="screen" />
|
11
|
+
<link rel="stylesheet" href="/static/css/vagrant.base.css" type="text/css" media="screen" />
|
12
|
+
<script src="/static/js/jquery-1.7.min.js" type="text/javascript" charset="utf-8"></script>
|
13
|
+
<script src="/static/js/bootstrap-tabs.js" type="text/javascript" charset="utf-8"></script>
|
14
|
+
</head>
|
15
|
+
<body>
|
16
|
+
<div class="container">
|
17
|
+
<div class="row Header">
|
18
|
+
<div class="span4 Module logo">
|
19
|
+
<h1><a href="/">Vagrant <span class="subtype">CI</span></a></h1>
|
20
|
+
</div>
|
21
|
+
<div class="span12">
|
22
|
+
<div class="Module navigation">
|
23
|
+
<ul>
|
24
|
+
<li><a href="/">home</a></li>
|
25
|
+
<li><a href="/builders">builders</a></li>
|
26
|
+
<li><a href="/waterfall">waterfall</a></li>
|
27
|
+
<li><a href="/buildslaves">build slaves</a></li>
|
28
|
+
</ul>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div class="row">
|
34
|
+
<div class="span16">
|
35
|
+
{%- block content -%}
|
36
|
+
{%- endblock -%}
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
<div class="row Footer">
|
41
|
+
<div class="span16">
|
42
|
+
Copyright <a href="/license.html">©</a> 2009-2011. <a href="http://mitchellhashimoto.com">Mitchell Hashimoto</a> and <a href="http://nickelcode.com">John Bender</a>. Design by <a href="http://www.simonecarletti.com/">Simone Carletti</a>.
|
43
|
+
</div>
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<script type="text/javascript">
|
47
|
+
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
48
|
+
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
49
|
+
</script>
|
50
|
+
<script type="text/javascript">
|
51
|
+
try {
|
52
|
+
var pageTracker = _gat._getTracker("UA-15091924-1");
|
53
|
+
pageTracker._trackPageview();
|
54
|
+
} catch(err) {}
|
55
|
+
</script>
|
56
|
+
</div>
|
57
|
+
</body>
|
58
|
+
</html>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
{% macro box(text=[], comment=None) -%}
|
2
|
+
|
3
|
+
{%- if comment -%}<!-- {{ comment }} -->{%- endif -%}
|
4
|
+
<td class="{{ kwargs.class or kwargs.class_ or "" }}"
|
5
|
+
{%- for prop in ("align", "colspan", "rowspan", "border", "valign", "halign") -%}
|
6
|
+
{%- if prop in kwargs %} {{ prop }}="{{ kwargs[prop] }}"{% endif -%}
|
7
|
+
{%- endfor -%}>
|
8
|
+
|
9
|
+
{%- if text is string -%}
|
10
|
+
{{ text }}
|
11
|
+
{%- else -%}
|
12
|
+
{{- text|join("<br/>") -}}
|
13
|
+
{%- endif -%}
|
14
|
+
</td>
|
15
|
+
{% endmacro %}
|
16
|
+
|
17
|
+
{# this is currently just the text part of the boxes #}
|
18
|
+
|
19
|
+
{% macro build_box(reason, url, number) -%}
|
20
|
+
<a title="Reason: {{ reason|e }}" href="{{ url }}">Build {{ number }}</a>
|
21
|
+
{%- endmacro %}
|
22
|
+
|
23
|
+
{% macro step_box(text, logs, urls) -%}
|
24
|
+
{%- if text is string -%}
|
25
|
+
{{ text }}
|
26
|
+
{%- else -%}
|
27
|
+
{{- text|join("<br/>") -}}
|
28
|
+
{%- endif -%}
|
29
|
+
<br/>
|
30
|
+
{%- for l in logs %}
|
31
|
+
<a {% if l.url %}href="{{ l.url }}"{% endif %}>{{ l.name|e }}</a><br/>
|
32
|
+
{%- endfor -%}
|
33
|
+
|
34
|
+
{%- for u in urls %}
|
35
|
+
[<a href="{{ u.link }}" class="BuildStep external">{{ u.name|e }}</a>]<br/>
|
36
|
+
{%- endfor -%}
|
37
|
+
{%- endmacro %}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
{% macro build_line(b, include_builder=False) %}
|
2
|
+
<small>({{ b.time }})</small>
|
3
|
+
Rev: {{ b.rev|shortrev(b.rev_repo) }}
|
4
|
+
<span class="{{ b.class }}">{{ b.results }}</span>
|
5
|
+
{% if include_builder %}
|
6
|
+
<a href="{{ b.builderurl }}">{{ b.builder_name }}</a>
|
7
|
+
{% endif %}
|
8
|
+
<a href="{{ b.buildurl }}">#{{ b.buildnum }}</a> -
|
9
|
+
{{ b.text|capitalize }}
|
10
|
+
{% endmacro %}
|
11
|
+
|
12
|
+
{% macro build_tr(b, include_builder=False, loop=None) %}
|
13
|
+
<tr class="{{ loop.cycle('alt', '') if loop }}">
|
14
|
+
<td>{{ b.time }}</td>
|
15
|
+
<td>{{ b.rev|shortrev(b.rev_repo) }}</td>
|
16
|
+
<td class="results {{ b.class }}">{{ b.results }}</td>
|
17
|
+
{%- if include_builder %}
|
18
|
+
<td><a href="{{ b.builderurl }}">{{ b.builder_name }}</a></td>
|
19
|
+
{% endif %}
|
20
|
+
<td><a href="{{ b.buildurl }}">#{{ b.buildnum }}</a></td>
|
21
|
+
<td class="left">{{ b.text|capitalize }}</td>
|
22
|
+
</tr>
|
23
|
+
{% endmacro %}
|
24
|
+
|
25
|
+
{% macro build_table(builds, include_builder=False) %}
|
26
|
+
{% if builds %}
|
27
|
+
<table class="zebra-striped Module buildtable">
|
28
|
+
<thead>
|
29
|
+
<tr>
|
30
|
+
<th>Time</th>
|
31
|
+
<th>Revision</th>
|
32
|
+
<th>Result</th>
|
33
|
+
{%- if include_builder %}
|
34
|
+
<th>Builder</th>
|
35
|
+
{% endif %}
|
36
|
+
<th>Build #</th>
|
37
|
+
<th>Info</th>
|
38
|
+
</tr>
|
39
|
+
</thead>
|
40
|
+
|
41
|
+
<tbody>
|
42
|
+
{% for b in builds %}
|
43
|
+
{{ build_tr(b, include_builder, loop) }}
|
44
|
+
{% endfor %}
|
45
|
+
</tbody>
|
46
|
+
</table>
|
47
|
+
{% else %}
|
48
|
+
No matching builds found
|
49
|
+
{% endif %}
|
50
|
+
{% endmacro %}
|