foca-integrity 0.1.0
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.
- data/README.markdown +139 -0
- data/Rakefile +87 -0
- data/app.rb +247 -0
- data/bin/integrity +60 -0
- data/config/config.sample.ru +30 -0
- data/config/config.sample.yml +8 -0
- data/config/thin.sample.yml +14 -0
- data/integrity.gemspec +65 -0
- data/lib/integrity.rb +47 -0
- data/lib/integrity/build.rb +56 -0
- data/lib/integrity/builder.rb +42 -0
- data/lib/integrity/core_ext/object.rb +6 -0
- data/lib/integrity/core_ext/string.rb +5 -0
- data/lib/integrity/core_ext/time.rb +13 -0
- data/lib/integrity/notifier.rb +49 -0
- data/lib/integrity/notifier/base.rb +56 -0
- data/lib/integrity/project.rb +83 -0
- data/lib/integrity/scm.rb +22 -0
- data/lib/integrity/scm/git.rb +72 -0
- data/lib/integrity/scm/git/uri.rb +57 -0
- data/lib/integrity/version.rb +3 -0
- data/public/buttons.css +82 -0
- data/public/reset.css +7 -0
- data/public/spinner.gif +0 -0
- data/spec/form_field_matchers.rb +91 -0
- data/spec/spec_helper.rb +131 -0
- data/vendor/sinatra-hacks/lib/hacks.rb +49 -0
- data/views/build.haml +2 -0
- data/views/build_info.haml +22 -0
- data/views/home.haml +14 -0
- data/views/integrity.sass +361 -0
- data/views/layout.haml +25 -0
- data/views/new.haml +53 -0
- data/views/not_found.haml +31 -0
- data/views/notifier.haml +7 -0
- data/views/project.haml +32 -0
- data/views/unauthorized.haml +38 -0
- metadata +197 -0
data/views/layout.haml
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
!!! Strict
|
2
|
+
%html{ :lang => "en", :"xml:lang" => "en", :xmlns => "http://www.w3.org/1999/xhtml" }
|
3
|
+
%head
|
4
|
+
%meta{ :content => "text/html; charset=utf-8", :"http-equiv" => "Content-Type" }
|
5
|
+
%meta{ :content => "en", :"http-equiv" => "Content-Language" }
|
6
|
+
%title= "#{@title.last} | integrity"
|
7
|
+
%link{ :media => "screen", :type => "text/css", :href => "/reset.css", :rel => "stylesheet" }
|
8
|
+
%link{ :media => "screen", :type => "text/css", :href => "/buttons.css", :rel => "stylesheet" }
|
9
|
+
%link{ :media => "screen", :type => "text/css", :href => "/integrity.css", :rel => "stylesheet" }
|
10
|
+
%body
|
11
|
+
#header
|
12
|
+
%h1= @title.join(" / ")
|
13
|
+
%address.watermark
|
14
|
+
checked with
|
15
|
+
%a{ :href => "http://integrityapp.com", :title => "The fun continuous integration server" } integrity
|
16
|
+
#content= yield
|
17
|
+
- if Integrity.config && Integrity.config[:use_basic_auth]
|
18
|
+
#footer
|
19
|
+
- if authorized?
|
20
|
+
Oh, hello
|
21
|
+
%strong&= current_user
|
22
|
+
- else
|
23
|
+
Hey there!
|
24
|
+
%a{ :href => "/login" } Log In
|
25
|
+
if you have a user
|
data/views/new.haml
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
%form{ :method => "post", :action => (@project.new_record? ? "/" : project_url(@project)) }
|
2
|
+
- unless @project.new_record?
|
3
|
+
.hidden
|
4
|
+
%input{ :name => "_method", :type => "hidden", :value => "put" }
|
5
|
+
|
6
|
+
%p.required{ :class => error_class(@project, :name) }
|
7
|
+
%label{ :for => "project_name" }
|
8
|
+
Name
|
9
|
+
= errors_on @project, :name
|
10
|
+
%input.text#project_name{ :name => "project_data[name]", :type => "text", :value => h(@project.name) }
|
11
|
+
|
12
|
+
%p.required{ :class => error_class(@project, :uri) }
|
13
|
+
%label{ :for => "project_repository" }
|
14
|
+
Git repository
|
15
|
+
= errors_on @project, :uri
|
16
|
+
%input.text#project_repository{ :name => "project_data[uri]", :type => "text", :value => h(@project.uri) }
|
17
|
+
|
18
|
+
%p.normal{ :class => error_class(@project, :branch) }
|
19
|
+
%label{ :for => "project_branch" }
|
20
|
+
Branch to track
|
21
|
+
= errors_on @project, :branch
|
22
|
+
%input.text#project_branch{ :name => "project_data[branch]", :type => "text", :value => "master", :value => h(@project.branch) }
|
23
|
+
|
24
|
+
%p.normal{ :class => error_class(@project, :command) }
|
25
|
+
%label{ :for => "project_build_script" }
|
26
|
+
Build script
|
27
|
+
= errors_on @project, :command
|
28
|
+
%textarea#project_build_script{ :name => "project_data[command]", :cols => 40, :rows => 1 }&= @project.command.to_s
|
29
|
+
|
30
|
+
%p.normal.checkbox
|
31
|
+
%label{ :for => "project_public" } Public project
|
32
|
+
%input.checkbox#project_public{ checkbox("project_data[public]", @project.public?) }
|
33
|
+
|
34
|
+
- Notifier.available.each do |notifier|
|
35
|
+
= notifier_form(notifier)
|
36
|
+
|
37
|
+
%p.submit
|
38
|
+
%button.positive{ :type => "submit" }= @project.new_record? ? "Create Project" : "Update Project"
|
39
|
+
|
40
|
+
- unless @project.new_record?
|
41
|
+
%h2 Push URL
|
42
|
+
%p
|
43
|
+
You can use this Push URL with your GitHub project to enable automated continuous integration.
|
44
|
+
%p
|
45
|
+
%code#push_url= push_url_for(@project)
|
46
|
+
|
47
|
+
%form{ :method => "post", :action => project_url(@project) }
|
48
|
+
.hidden
|
49
|
+
%input{ :name => "_method", :type => "hidden", :value => "delete" }
|
50
|
+
%h2 Delete this project
|
51
|
+
%p.submit.destroy
|
52
|
+
This will delete the project and all the builds in the system
|
53
|
+
%button.negative{ :type => "submit" } Yes, I'm sure, nuke it
|
@@ -0,0 +1,31 @@
|
|
1
|
+
.error
|
2
|
+
%h1
|
3
|
+
Ehm, you seem a bit lost, sir. Maybe going to the
|
4
|
+
%a{ :href => "/", :rel => "home" } list of projects
|
5
|
+
will help?
|
6
|
+
%dl
|
7
|
+
%dt Ouch. This is a 404 error-thingie, right?
|
8
|
+
%dd Yeah, you browsed to a page that doesn't exist in this server.
|
9
|
+
|
10
|
+
%dt What can I do?
|
11
|
+
%dd
|
12
|
+
As a very good book says on its cover:
|
13
|
+
= succeed "." do
|
14
|
+
%strong DON'T PANIC
|
15
|
+
/ if you didn't get the reference you aren't as nerd as you should be
|
16
|
+
You should probably just go back to
|
17
|
+
%a{ :href => "/", :rel => "home" } the projects list
|
18
|
+
or, alternatively, go
|
19
|
+
= succeed "." do
|
20
|
+
%a{ :href => request.referer } back from whence you came
|
21
|
+
|
22
|
+
%dt
|
23
|
+
What the hell is
|
24
|
+
= succeed "?" do
|
25
|
+
%strong Integrity
|
26
|
+
%dd
|
27
|
+
Integrity is your friendly
|
28
|
+
%a{ :href => "http://en.wikipedia.org/wiki/Continuous_integration" } Continuous Integration
|
29
|
+
server. If you want to know more about us, check our website at
|
30
|
+
= succeed "." do
|
31
|
+
%a{ :href => "http://integrityapp.com" } integrityapp.com
|
data/views/notifier.haml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
%h2.notifier
|
2
|
+
%label
|
3
|
+
%input.checkbox{ checkbox("enabled_notifiers[]", enabled, :value => notifier) }
|
4
|
+
== #{notifier} Notifications
|
5
|
+
%span.warning be aware that no validation will be made on these fields
|
6
|
+
%fieldset{ :id => "#{notifier.downcase}_config" }
|
7
|
+
= yield
|
data/views/project.haml
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
#administrative
|
2
|
+
%a{ :href => project_url(@project, :edit) } Edit Project
|
3
|
+
|
4
|
+
- if @project.builds.empty?
|
5
|
+
%form.blank_slate{ :action => project_url(@project, :builds), :method => :post }
|
6
|
+
%p No builds for this project, buddy
|
7
|
+
%h1
|
8
|
+
You can request a
|
9
|
+
%button{ :type => :submit } manual build
|
10
|
+
- else
|
11
|
+
- @build = @project.last_build
|
12
|
+
#last_build{ :class => @build.status }
|
13
|
+
= haml(:build_info, :layout => false)
|
14
|
+
|
15
|
+
%form{ :action => project_url(@project, :builds), :method => :post }
|
16
|
+
%p.submit
|
17
|
+
%button{ :type => :submit } Request Manual Build
|
18
|
+
|
19
|
+
- unless @project.previous_builds.empty?
|
20
|
+
%h2 Previous builds
|
21
|
+
%ul#previous_builds
|
22
|
+
- @project.previous_builds.each do |build|
|
23
|
+
%li{ :class => build.status }
|
24
|
+
%a{ :href => build_url(build) }
|
25
|
+
%strong.build
|
26
|
+
Build
|
27
|
+
&= build.short_commit_identifier
|
28
|
+
%span.attribution
|
29
|
+
by
|
30
|
+
= succeed "," do
|
31
|
+
&= build.commit_author.name
|
32
|
+
&= pretty_date build.commited_at
|
@@ -0,0 +1,38 @@
|
|
1
|
+
.error
|
2
|
+
%h1
|
3
|
+
So... you don't know the password? Hmm... You can
|
4
|
+
%a{ :href => "/login" } try again
|
5
|
+
or
|
6
|
+
= succeed "." do
|
7
|
+
%a{ :href => "/", :rel => "home" } go back
|
8
|
+
|
9
|
+
%dl
|
10
|
+
%dt Er... So... I'm trying to login without a password...
|
11
|
+
%dd
|
12
|
+
Hey pal, sorry, but I can't let in anyone that isn't
|
13
|
+
= succeed "." do
|
14
|
+
%strong on the list
|
15
|
+
I could lose my job you know? You'll have to come up with
|
16
|
+
a valid password :-(
|
17
|
+
|
18
|
+
%dt What can I do?
|
19
|
+
%dd
|
20
|
+
This just means that you can't access some part of this Integrity
|
21
|
+
server, but that shouldn't let you out of some of the
|
22
|
+
%a{ :href => "/" } awesome projects
|
23
|
+
hosted here. If this was just a misunderstanding and you
|
24
|
+
%strong do
|
25
|
+
have a password, then
|
26
|
+
= succeed "." do
|
27
|
+
%a{ :href => "/login" } click here to try again
|
28
|
+
|
29
|
+
%dt
|
30
|
+
So what the hell is
|
31
|
+
= succeed "?" do
|
32
|
+
%strong Integrity
|
33
|
+
%dd
|
34
|
+
Integrity is your friendly
|
35
|
+
%a{ :href => "http://en.wikipedia.org/wiki/Continuous_integration" } Continuous Integration
|
36
|
+
server. If you want to know more about us, check our website at
|
37
|
+
= succeed "." do
|
38
|
+
%a{ :href => "http://integrityapp.com" } integrityapp.com
|
metadata
ADDED
@@ -0,0 +1,197 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: foca-integrity
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- "Nicol\xC3\xA1s Sanguinetti"
|
8
|
+
- Simon Rozet
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2008-11-14 00:00:00 -08:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: sinatra
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.3.2
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: dm-core
|
27
|
+
version_requirement:
|
28
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.9.5
|
33
|
+
version:
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: dm-validations
|
36
|
+
version_requirement:
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 0.9.5
|
42
|
+
version:
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: dm-types
|
45
|
+
version_requirement:
|
46
|
+
version_requirements: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 0.9.5
|
51
|
+
version:
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
name: dm-timestamps
|
54
|
+
version_requirement:
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 0.9.5
|
60
|
+
version:
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: dm-aggregates
|
63
|
+
version_requirement:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.9.5
|
69
|
+
version:
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: data_objects
|
72
|
+
version_requirement:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.9.5
|
78
|
+
version:
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: do_sqlite3
|
81
|
+
version_requirement:
|
82
|
+
version_requirements: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: 0.9.5
|
87
|
+
version:
|
88
|
+
- !ruby/object:Gem::Dependency
|
89
|
+
name: json
|
90
|
+
version_requirement:
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: "0"
|
96
|
+
version:
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: foca-sinatra-diddies
|
99
|
+
version_requirement:
|
100
|
+
version_requirements: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 0.0.2
|
105
|
+
version:
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
name: rspec_hpricot_matchers
|
108
|
+
version_requirement:
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: "0"
|
114
|
+
version:
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: thor
|
117
|
+
version_requirement:
|
118
|
+
version_requirements: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: "0"
|
123
|
+
version:
|
124
|
+
description: Your Friendly Continuous Integration server. Easy, fun and painless!
|
125
|
+
email: contacto@nicolassanguinetti.info
|
126
|
+
executables:
|
127
|
+
- integrity
|
128
|
+
extensions: []
|
129
|
+
|
130
|
+
extra_rdoc_files: []
|
131
|
+
|
132
|
+
files:
|
133
|
+
- README.markdown
|
134
|
+
- Rakefile
|
135
|
+
- app.rb
|
136
|
+
- bin/integrity
|
137
|
+
- config/config.sample.ru
|
138
|
+
- config/config.sample.yml
|
139
|
+
- config/thin.sample.yml
|
140
|
+
- integrity.gemspec
|
141
|
+
- lib/integrity.rb
|
142
|
+
- lib/integrity/build.rb
|
143
|
+
- lib/integrity/builder.rb
|
144
|
+
- lib/integrity/core_ext/object.rb
|
145
|
+
- lib/integrity/core_ext/string.rb
|
146
|
+
- lib/integrity/core_ext/time.rb
|
147
|
+
- lib/integrity/notifier.rb
|
148
|
+
- lib/integrity/notifier/base.rb
|
149
|
+
- lib/integrity/project.rb
|
150
|
+
- lib/integrity/scm.rb
|
151
|
+
- lib/integrity/scm/git.rb
|
152
|
+
- lib/integrity/scm/git/uri.rb
|
153
|
+
- lib/integrity/version.rb
|
154
|
+
- public/buttons.css
|
155
|
+
- public/reset.css
|
156
|
+
- public/spinner.gif
|
157
|
+
- vendor/sinatra-hacks/lib/hacks.rb
|
158
|
+
- views/build.haml
|
159
|
+
- views/build_info.haml
|
160
|
+
- views/home.haml
|
161
|
+
- views/integrity.sass
|
162
|
+
- views/layout.haml
|
163
|
+
- views/new.haml
|
164
|
+
- views/not_found.haml
|
165
|
+
- views/notifier.haml
|
166
|
+
- views/project.haml
|
167
|
+
- views/unauthorized.haml
|
168
|
+
- spec/spec_helper.rb
|
169
|
+
- spec/form_field_matchers.rb
|
170
|
+
has_rdoc: false
|
171
|
+
homepage: http://integrityapp.com
|
172
|
+
post_install_message:
|
173
|
+
rdoc_options: []
|
174
|
+
|
175
|
+
require_paths:
|
176
|
+
- lib
|
177
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: "0"
|
182
|
+
version:
|
183
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: "0"
|
188
|
+
version:
|
189
|
+
requirements: []
|
190
|
+
|
191
|
+
rubyforge_project: integrity
|
192
|
+
rubygems_version: 1.2.0
|
193
|
+
signing_key:
|
194
|
+
specification_version: 2
|
195
|
+
summary: The easy and fun Continuous Integration server
|
196
|
+
test_files: []
|
197
|
+
|