vagrantup 0.8.7 → 0.8.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- 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 +177 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""
|
|
2
|
+
This module returns the given status handlers to enable for the
|
|
3
|
+
buildbot master.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from buildbot.status import html, words
|
|
7
|
+
from buildbot.status.web.authz import Authz
|
|
8
|
+
from buildbot.status.web.auth import BasicAuth
|
|
9
|
+
|
|
10
|
+
def get_status(options):
|
|
11
|
+
"""
|
|
12
|
+
Returns a list of status targets for the build master.
|
|
13
|
+
"""
|
|
14
|
+
# Load the users that are allowed to perform authenticated
|
|
15
|
+
# actions from the configuration
|
|
16
|
+
auth_users = []
|
|
17
|
+
if options.http_users is not None:
|
|
18
|
+
for pair in options.http_users.split(","):
|
|
19
|
+
user, password = pair.split(":")
|
|
20
|
+
auth_users.append((user, password))
|
|
21
|
+
|
|
22
|
+
# Setup the rules for who can do what to the WebStatus
|
|
23
|
+
authz = Authz(
|
|
24
|
+
auth = BasicAuth(auth_users),
|
|
25
|
+
gracefulShutdown = False,
|
|
26
|
+
forceBuild = 'auth',
|
|
27
|
+
forceAllBuilds = 'auth',
|
|
28
|
+
pingBuilder = True,
|
|
29
|
+
stopBuild = 'auth',
|
|
30
|
+
stopAllBuilds = 'auth',
|
|
31
|
+
cancelPendingBuild = 'auth',
|
|
32
|
+
stopChange = 'auth',
|
|
33
|
+
cleanShutdown= False
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
# The web status gives us the nice web interface to our buildbot
|
|
37
|
+
web_status = html.WebStatus(
|
|
38
|
+
http_port = options.web_port,
|
|
39
|
+
authz = authz,
|
|
40
|
+
order_console_by_time = True,
|
|
41
|
+
change_hook_dialects=dict(github=True)
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
# Hook up an IRC bot into our channel
|
|
45
|
+
irc = words.IRC("irc.freenode.net", "vagrant-ci",
|
|
46
|
+
channels=[{"channel": "#vagrant"}],
|
|
47
|
+
notify_events={
|
|
48
|
+
'exception': 1,
|
|
49
|
+
'successToFailure': 1,
|
|
50
|
+
'failureToSuccess': 1})
|
|
51
|
+
|
|
52
|
+
return [web_status, irc]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# -*- makefile -*-
|
|
2
|
+
|
|
3
|
+
# This is a simple makefile which lives in a buildmaster
|
|
4
|
+
# directory (next to the buildbot.tac file). It allows you to start/stop the
|
|
5
|
+
# master by doing 'make start' or 'make stop'.
|
|
6
|
+
|
|
7
|
+
# The 'reconfig' target will tell a buildmaster to reload its config file.
|
|
8
|
+
|
|
9
|
+
start:
|
|
10
|
+
twistd --no_save -y buildbot.tac
|
|
11
|
+
|
|
12
|
+
stop:
|
|
13
|
+
if [ -e twistd.pid ]; \
|
|
14
|
+
then kill `cat twistd.pid`; \
|
|
15
|
+
else echo "Nothing to stop."; \
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
reconfig:
|
|
19
|
+
if [ -e twistd.pid ]; \
|
|
20
|
+
then kill -HUP `cat twistd.pid`; \
|
|
21
|
+
else echo "Nothing to reconfig."; \
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
log:
|
|
25
|
+
if [ -e twistd.log ]; \
|
|
26
|
+
then tail -f twistd.log; \
|
|
27
|
+
else echo "Nothing to tail."; \
|
|
28
|
+
fi
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
from twisted.application import service
|
|
5
|
+
from buildbot.master import BuildMaster
|
|
6
|
+
|
|
7
|
+
basedir = r'.'
|
|
8
|
+
rotateLength = 10000000
|
|
9
|
+
maxRotatedFiles = 10
|
|
10
|
+
|
|
11
|
+
# if this is a relocatable tac file, get the directory containing the TAC
|
|
12
|
+
if basedir == '.':
|
|
13
|
+
import os.path
|
|
14
|
+
basedir = os.path.abspath(os.path.dirname(__file__))
|
|
15
|
+
|
|
16
|
+
# note: this line is matched against to check that this is a buildmaster
|
|
17
|
+
# directory; do not edit it.
|
|
18
|
+
application = service.Application('buildmaster')
|
|
19
|
+
|
|
20
|
+
try:
|
|
21
|
+
from twisted.python.logfile import LogFile
|
|
22
|
+
from twisted.python.log import ILogObserver, FileLogObserver
|
|
23
|
+
logfile = LogFile.fromFullPath(os.path.join(basedir, "twistd.log"), rotateLength=rotateLength,
|
|
24
|
+
maxRotatedFiles=maxRotatedFiles)
|
|
25
|
+
application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
|
|
26
|
+
except ImportError:
|
|
27
|
+
# probably not yet twisted 8.2.0 and beyond, can't set log yet
|
|
28
|
+
pass
|
|
29
|
+
|
|
30
|
+
configfile = r'master.cfg'
|
|
31
|
+
|
|
32
|
+
m = BuildMaster(basedir, configfile)
|
|
33
|
+
m.setServiceParent(application)
|
|
34
|
+
m.log_rotation.rotateLength = rotateLength
|
|
35
|
+
m.log_rotation.maxRotatedFiles = maxRotatedFiles
|
|
36
|
+
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# -*- python -*-
|
|
2
|
+
# ex: set syntax=python:
|
|
3
|
+
|
|
4
|
+
from buildbot_config.config.master import options
|
|
5
|
+
from buildbot_config.master import (
|
|
6
|
+
get_builders,
|
|
7
|
+
get_change_sources,
|
|
8
|
+
get_schedulers,
|
|
9
|
+
get_slaves_from_config,
|
|
10
|
+
get_status)
|
|
11
|
+
|
|
12
|
+
# This is the special key that Buildbot looks for. We use
|
|
13
|
+
# an alias to ``c`` to save us a lot of typing.
|
|
14
|
+
c = BuildmasterConfig = {}
|
|
15
|
+
|
|
16
|
+
#----------------------------------------------------------------------
|
|
17
|
+
# Project Identity and Basic Configuration
|
|
18
|
+
#----------------------------------------------------------------------
|
|
19
|
+
# Title and URL of project
|
|
20
|
+
c['title'] = options.title
|
|
21
|
+
c['titleURL'] = options.title_url
|
|
22
|
+
|
|
23
|
+
# URL to the actual buildbot installation
|
|
24
|
+
c['buildbotURL'] = options.buildbot_url
|
|
25
|
+
|
|
26
|
+
# This specifies what database buildbot uses to store change and scheduler
|
|
27
|
+
# state. You can leave this at its default for all but the largest
|
|
28
|
+
# installations.
|
|
29
|
+
c['db_url'] = "sqlite:///state.sqlite"
|
|
30
|
+
|
|
31
|
+
#----------------------------------------------------------------------
|
|
32
|
+
# Data Storage and Caching
|
|
33
|
+
#----------------------------------------------------------------------
|
|
34
|
+
# Time horizons. These specify the number of items that are kept
|
|
35
|
+
# persisted on disk before being pruned away. See the buildbot
|
|
36
|
+
# documentation for more information on each horizon setting.
|
|
37
|
+
c['changeHorizon'] = 0
|
|
38
|
+
c['buildHorizon'] = 0
|
|
39
|
+
c['eventHorizon'] = 0
|
|
40
|
+
c['logHorizon'] = 0
|
|
41
|
+
|
|
42
|
+
# Cache sizes. These are the number of the respective objects to
|
|
43
|
+
# hold in memory while buildbot is running. By default buildbot
|
|
44
|
+
# only stores 1, so all the numbers are greatly increased.
|
|
45
|
+
c['caches'] = {
|
|
46
|
+
'Changes' : 100,
|
|
47
|
+
'chdicts' : 100,
|
|
48
|
+
'BuildRequests' : 10,
|
|
49
|
+
'SourceStamps' : 20,
|
|
50
|
+
'ssdicts' : 20,
|
|
51
|
+
'objectids' : 10,
|
|
52
|
+
'usdicts' : 100,
|
|
53
|
+
}
|
|
54
|
+
c['buildCacheSize'] = 500
|
|
55
|
+
|
|
56
|
+
#----------------------------------------------------------------------
|
|
57
|
+
# Build Slaves
|
|
58
|
+
#----------------------------------------------------------------------
|
|
59
|
+
# The port that the buildmaster listens for buildslaves on.
|
|
60
|
+
c['slavePortnum'] = 9989
|
|
61
|
+
|
|
62
|
+
# The actual list of slave machines we have.
|
|
63
|
+
c['slaves'] = get_slaves_from_config(options.slaves)
|
|
64
|
+
c['status'] = get_status(options)
|
|
65
|
+
c['builders'] = get_builders(c['slaves'])
|
|
66
|
+
c['schedulers'] = get_schedulers(c['builders'])
|
|
67
|
+
c['change_source'] = get_change_sources()
|
|
Binary file
|
|
@@ -0,0 +1,545 @@
|
|
|
1
|
+
body.interface {
|
|
2
|
+
margin-left: 30px;
|
|
3
|
+
margin-right: 30px;
|
|
4
|
+
margin-top: 20px;
|
|
5
|
+
margin-bottom: 50px;
|
|
6
|
+
padding: 0;
|
|
7
|
+
background: url(bg_gradient.jpg) repeat-x;
|
|
8
|
+
font-family: Verdana, sans-serif;
|
|
9
|
+
font-size: 10px;
|
|
10
|
+
background-color: #fff;
|
|
11
|
+
color: #333;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
a:link,a:visited,a:active {
|
|
15
|
+
color: #444;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
table {
|
|
19
|
+
border-spacing: 1px 1px;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
table td {
|
|
23
|
+
padding: 3px 4px 3px 4px;
|
|
24
|
+
text-align: center;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.Project {
|
|
28
|
+
min-width: 6em;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.LastBuild,.Activity {
|
|
32
|
+
padding: 0 0 0 4px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.LastBuild,.Activity,.Builder,.BuildStep {
|
|
36
|
+
min-width: 5em;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Chromium Specific styles */
|
|
40
|
+
div.BuildResultInfo {
|
|
41
|
+
color: #444;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
div.Announcement {
|
|
45
|
+
margin-bottom: 1em;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
div.Announcement>a:hover {
|
|
49
|
+
color: black;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
div.Announcement>div.Notice {
|
|
53
|
+
background-color: #afdaff;
|
|
54
|
+
padding: 0.5em;
|
|
55
|
+
font-size: 16px;
|
|
56
|
+
text-align: center;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
div.Announcement>div.Open {
|
|
60
|
+
border: 3px solid #8fdf5f;
|
|
61
|
+
padding: 0.5em;
|
|
62
|
+
font-size: 16px;
|
|
63
|
+
text-align: center;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
div.Announcement>div.Closed {
|
|
67
|
+
border: 5px solid #e98080;
|
|
68
|
+
padding: 0.5em;
|
|
69
|
+
font-size: 24px;
|
|
70
|
+
font-weight: bold;
|
|
71
|
+
text-align: center;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
td.Time {
|
|
75
|
+
color: #000;
|
|
76
|
+
border-bottom: 1px solid #aaa;
|
|
77
|
+
background-color: #eee;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
td.Activity,td.Change,td.Builder {
|
|
81
|
+
color: #333333;
|
|
82
|
+
background-color: #CCCCCC;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
td.Change {
|
|
86
|
+
border-radius: 5px;
|
|
87
|
+
-webkit-border-radius: 5px;
|
|
88
|
+
-moz-border-radius: 5px;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
td.Event {
|
|
92
|
+
color: #777;
|
|
93
|
+
background-color: #ddd;
|
|
94
|
+
border-radius: 5px;
|
|
95
|
+
-webkit-border-radius: 5px;
|
|
96
|
+
-moz-border-radius: 5px;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
td.Activity {
|
|
100
|
+
border-top-left-radius: 10px;
|
|
101
|
+
-webkit-border-top-left-radius: 10px;
|
|
102
|
+
-moz-border-radius-topleft: 10px;
|
|
103
|
+
min-height: 20px;
|
|
104
|
+
padding: 2px 0 2px 0;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
td.idle,td.waiting,td.offline,td.building {
|
|
108
|
+
border-top-left-radius: 0px;
|
|
109
|
+
-webkit-border-top-left-radius: 0px;
|
|
110
|
+
-moz-border-radius-topleft: 0px;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.LastBuild {
|
|
114
|
+
border-top-left-radius: 5px;
|
|
115
|
+
-webkit-border-top-left-radius: 5px;
|
|
116
|
+
-moz-border-radius-topleft: 5px;
|
|
117
|
+
border-top-right-radius: 5px;
|
|
118
|
+
-webkit-border-top-right-radius: 5px;
|
|
119
|
+
-moz-border-radius-topright: 5px;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* Console view styles */
|
|
123
|
+
td.DevRev {
|
|
124
|
+
padding: 4px 8px 4px 8px;
|
|
125
|
+
color: #333333;
|
|
126
|
+
border-top-left-radius: 5px;
|
|
127
|
+
-webkit-border-top-left-radius: 5px;
|
|
128
|
+
-moz-border-radius-topleft: 5px;
|
|
129
|
+
background-color: #eee;
|
|
130
|
+
width: 1%;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
td.DevRevCollapse {
|
|
134
|
+
border-bottom-left-radius: 5px;
|
|
135
|
+
-webkit-border-bottom-left-radius: 5px;
|
|
136
|
+
-moz-border-radius-bottomleft: 5px;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
td.DevName {
|
|
140
|
+
padding: 4px 8px 4px 8px;
|
|
141
|
+
color: #333333;
|
|
142
|
+
background-color: #eee;
|
|
143
|
+
width: 1%;
|
|
144
|
+
text-align: left;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
td.DevStatus {
|
|
148
|
+
padding: 4px 4px 4px 4px;
|
|
149
|
+
color: #333333;
|
|
150
|
+
background-color: #eee;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
td.DevSlave {
|
|
154
|
+
padding: 4px 4px 4px 4px;
|
|
155
|
+
color: #333333;
|
|
156
|
+
background-color: #eee;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
td.first {
|
|
160
|
+
border-top-left-radius: 5px;
|
|
161
|
+
-webkit-border-top-left-radius: 5px;
|
|
162
|
+
-moz-border-radius-topleft: 5px;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
td.last {
|
|
166
|
+
border-top-right-radius: 5px;
|
|
167
|
+
-webkit-border-top-right-radius: 5px;
|
|
168
|
+
-moz-border-radius-topright: 5px;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
td.DevStatusCategory {
|
|
172
|
+
border-radius: 5px;
|
|
173
|
+
-webkit-border-radius: 5px;
|
|
174
|
+
-moz-border-radius: 5px;
|
|
175
|
+
border-width: 1px;
|
|
176
|
+
border-style: solid;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
td.DevStatusCollapse {
|
|
180
|
+
border-bottom-right-radius: 5px;
|
|
181
|
+
-webkit-border-bottom-right-radius: 5px;
|
|
182
|
+
-moz-border-radius-bottomright: 5px;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
td.DevDetails {
|
|
186
|
+
font-weight: normal;
|
|
187
|
+
padding: 8px 8px 8px 8px;
|
|
188
|
+
color: #333333;
|
|
189
|
+
background-color: #eee;
|
|
190
|
+
text-align: left;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
td.DevDetails li a {
|
|
194
|
+
padding-right: 5px;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
td.DevComment {
|
|
198
|
+
font-weight: normal;
|
|
199
|
+
padding: 8px 8px 8px 8px;
|
|
200
|
+
color: #333333;
|
|
201
|
+
border-bottom-right-radius: 5px;
|
|
202
|
+
-webkit-border-bottom-right-radius: 5px;
|
|
203
|
+
-moz-border-radius-bottomright: 5px;
|
|
204
|
+
border-bottom-left-radius: 5px;
|
|
205
|
+
-webkit-border-bottom-left-radius: 5px;
|
|
206
|
+
-moz-border-radius-bottomleft: 5px;
|
|
207
|
+
background-color: #eee;
|
|
208
|
+
text-align: left;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
td.Alt {
|
|
212
|
+
background-color: #ddd;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.legend {
|
|
216
|
+
border-radius: 5px;
|
|
217
|
+
-webkit-border-radius: 5px;
|
|
218
|
+
-moz-border-radius: 5px;
|
|
219
|
+
width: 100px;
|
|
220
|
+
max-width: 100px;
|
|
221
|
+
text-align: center;
|
|
222
|
+
padding: 2px 2px 2px 2px;
|
|
223
|
+
height: 14px;
|
|
224
|
+
white-space: nowrap;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.DevStatusBox {
|
|
228
|
+
text-align: center;
|
|
229
|
+
height: 20px;
|
|
230
|
+
padding: 0 2px;
|
|
231
|
+
line-height: 0;
|
|
232
|
+
white-space: nowrap;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.DevStatusBox a {
|
|
236
|
+
opacity: 0.85;
|
|
237
|
+
border-width: 1px;
|
|
238
|
+
border-style: solid;
|
|
239
|
+
border-radius: 4px;
|
|
240
|
+
-webkit-border-radius: 4px;
|
|
241
|
+
-moz-border-radius: 4px;
|
|
242
|
+
display: block;
|
|
243
|
+
width: 90%;
|
|
244
|
+
height: 20px;
|
|
245
|
+
line-height: 20px;
|
|
246
|
+
margin-left: auto;
|
|
247
|
+
margin-right: auto;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.DevSlaveBox {
|
|
251
|
+
text-align: center;
|
|
252
|
+
height: 10px;
|
|
253
|
+
padding: 0 2px;
|
|
254
|
+
line-height: 0;
|
|
255
|
+
white-space: nowrap;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.DevSlaveBox a {
|
|
259
|
+
opacity: 0.85;
|
|
260
|
+
border-width: 1px;
|
|
261
|
+
border-style: solid;
|
|
262
|
+
border-radius: 4px;
|
|
263
|
+
-webkit-border-radius: 4px;
|
|
264
|
+
-moz-border-radius: 4px;
|
|
265
|
+
display: block;
|
|
266
|
+
width: 90%;
|
|
267
|
+
height: 10px;
|
|
268
|
+
line-height: 20px;
|
|
269
|
+
margin-left: auto;
|
|
270
|
+
margin-right: auto;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
a.noround {
|
|
274
|
+
border-radius: 0px;
|
|
275
|
+
-webkit-border-radius: 0px;
|
|
276
|
+
-moz-border-radius: 0px;
|
|
277
|
+
position: relative;
|
|
278
|
+
margin-top: -8px;
|
|
279
|
+
margin-bottom: -8px;
|
|
280
|
+
height: 36px;
|
|
281
|
+
border-top-width: 0;
|
|
282
|
+
border-bottom-width: 0;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
a.begin {
|
|
286
|
+
border-top-width: 1px;
|
|
287
|
+
position: relative;
|
|
288
|
+
margin-top: 0px;
|
|
289
|
+
margin-bottom: -7px;
|
|
290
|
+
height: 27px;
|
|
291
|
+
border-top-left-radius: 4px;
|
|
292
|
+
-webkit-border-top-left-radius: 4px;
|
|
293
|
+
-moz-border-radius-topleft: 4px;
|
|
294
|
+
border-top-right-radius: 4px;
|
|
295
|
+
-webkit-border-top-right-radius: 4px;
|
|
296
|
+
-moz-border-radius-topright: 4px;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
a.end {
|
|
300
|
+
border-bottom-width: 1px;
|
|
301
|
+
position: relative;
|
|
302
|
+
margin-top: -7px;
|
|
303
|
+
margin-bottom: 0px;
|
|
304
|
+
height: 27px;
|
|
305
|
+
border-bottom-left-radius: 4px;
|
|
306
|
+
-webkit-border-bottom-left-radius: 4px;
|
|
307
|
+
-moz-border-radius-bottomleft: 4px;
|
|
308
|
+
border-bottom-right-radius: 4px;
|
|
309
|
+
-webkit-border-bottom-right-radius: 4px;
|
|
310
|
+
-moz-border-radius-bottomright: 4px;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.center_align {
|
|
314
|
+
text-align: center;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.right_align {
|
|
318
|
+
text-align: right;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.left_align {
|
|
322
|
+
text-align: left;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
div.BuildWaterfall {
|
|
326
|
+
border-radius: 7px;
|
|
327
|
+
-webkit-border-radius: 7px;
|
|
328
|
+
-moz-border-radius: 7px;
|
|
329
|
+
position: absolute;
|
|
330
|
+
left: 0px;
|
|
331
|
+
top: 0px;
|
|
332
|
+
background-color: #FFFFFF;
|
|
333
|
+
padding: 4px 4px 4px 4px;
|
|
334
|
+
float: left;
|
|
335
|
+
display: none;
|
|
336
|
+
border-width: 1px;
|
|
337
|
+
border-style: solid;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/* LastBuild, BuildStep states */
|
|
341
|
+
.success {
|
|
342
|
+
color: #000;
|
|
343
|
+
background-color: #8d4;
|
|
344
|
+
border-color: #4F8530;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.failure {
|
|
348
|
+
color: #000;
|
|
349
|
+
background-color: #e88;
|
|
350
|
+
border-color: #A77272;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.warnings {
|
|
354
|
+
color: #FFFFFF;
|
|
355
|
+
background-color: #fa3;
|
|
356
|
+
border-color: #C29D46;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.skipped {
|
|
360
|
+
color: #000;
|
|
361
|
+
background: #AADDEE;
|
|
362
|
+
border-color: #AADDEE;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.exception,.retry {
|
|
366
|
+
color: #FFFFFF;
|
|
367
|
+
background-color: #c6c;
|
|
368
|
+
border-color: #ACA0B3;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.start {
|
|
372
|
+
color: #000;
|
|
373
|
+
background-color: #ccc;
|
|
374
|
+
border-color: #ccc;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.running,.waiting,td.building {
|
|
378
|
+
color: #000;
|
|
379
|
+
background-color: #fd3;
|
|
380
|
+
border-color: #C5C56D;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.offline,td.offline {
|
|
384
|
+
color: #FFFFFF;
|
|
385
|
+
background-color: #777777;
|
|
386
|
+
border-color: #dddddd;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
.start {
|
|
391
|
+
border-bottom-left-radius: 10px;
|
|
392
|
+
-webkit-border-bottom-left-radius: 10px;
|
|
393
|
+
-moz-border-radius-bottomleft: 10px;
|
|
394
|
+
border-bottom-right-radius: 10px;
|
|
395
|
+
-webkit-border-bottom-right-radius: 10px;
|
|
396
|
+
-moz-border-radius-bottomright: 10px;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
.notstarted {
|
|
400
|
+
border-width: 1px;
|
|
401
|
+
border-style: solid;
|
|
402
|
+
border-color: #aaa;
|
|
403
|
+
background-color: #fff;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.closed {
|
|
407
|
+
background-color: #ff0000;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.closed .large {
|
|
411
|
+
font-size: 1.5em;
|
|
412
|
+
font-weight: bolder;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
td.Project a:hover,td.start a:hover {
|
|
416
|
+
color: #000;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.mini-box {
|
|
420
|
+
text-align: center;
|
|
421
|
+
height: 20px;
|
|
422
|
+
padding: 0 2px;
|
|
423
|
+
line-height: 0;
|
|
424
|
+
white-space: nowrap;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
.mini-box a {
|
|
428
|
+
border-radius: 0;
|
|
429
|
+
-webkit-border-radius: 0;
|
|
430
|
+
-moz-border-radius: 0;
|
|
431
|
+
display: block;
|
|
432
|
+
width: 100%;
|
|
433
|
+
height: 20px;
|
|
434
|
+
line-height: 20px;
|
|
435
|
+
margin-top: -30px;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
.mini-closed {
|
|
439
|
+
-box-sizing: border-box;
|
|
440
|
+
-webkit-box-sizing: border-box;
|
|
441
|
+
border: 4px solid red;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/* grid styles */
|
|
445
|
+
table.Grid {
|
|
446
|
+
border-collapse: collapse;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
table.Grid tr td {
|
|
450
|
+
padding: 0.2em;
|
|
451
|
+
margin: 0px;
|
|
452
|
+
text-align: center;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
table.Grid tr td.title {
|
|
456
|
+
font-size: 90%;
|
|
457
|
+
border-right: 1px gray solid;
|
|
458
|
+
border-bottom: 1px gray solid;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
table.Grid tr td.sourcestamp {
|
|
462
|
+
font-size: 90%;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
table.Grid tr td.builder {
|
|
466
|
+
text-align: right;
|
|
467
|
+
font-size: 90%;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
table.Grid tr td.build {
|
|
471
|
+
border: 1px gray solid;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/* column container */
|
|
475
|
+
div.column {
|
|
476
|
+
margin: 0 2em 2em 0;
|
|
477
|
+
float: left;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/* info tables */
|
|
481
|
+
table.info {
|
|
482
|
+
border-spacing: 1px;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
table.info td {
|
|
486
|
+
padding: 0.1em 1em 0.1em 1em;
|
|
487
|
+
text-align: center;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
table.info th {
|
|
491
|
+
padding: 0.2em 1.5em 0.2em 1.5em;
|
|
492
|
+
text-align: center;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
table.info td.left {
|
|
496
|
+
text-align: left
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
.alt {
|
|
500
|
+
background-color: #f6f6f6;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
li {
|
|
504
|
+
padding: 0.1em 1em 0.1em 1em;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
.result {
|
|
508
|
+
padding: 0.3em 1em 0.3em 1em;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
/* log view */
|
|
512
|
+
.log * {
|
|
513
|
+
vlink: #800080;
|
|
514
|
+
font-family: "Courier New", courier, monotype, monospace;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
span.stdout {
|
|
518
|
+
color: black;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
span.stderr {
|
|
522
|
+
color: red;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
span.header {
|
|
526
|
+
color: blue;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
/* revision & email */
|
|
530
|
+
.revision .full {
|
|
531
|
+
display: none;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
.user .email {
|
|
535
|
+
display: none;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
/* change comments (use regular colors here) */
|
|
539
|
+
pre.comments>a:link,pre.comments>a:visited {
|
|
540
|
+
color: blue;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
pre.comments>a:active {
|
|
544
|
+
color: purple;
|
|
545
|
+
}
|