integrity 0.1.8 → 0.1.9.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.
Files changed (77) hide show
  1. data/README.markdown +7 -0
  2. data/Rakefile +77 -124
  3. data/config/config.ru +29 -0
  4. data/config/config.sample.ru +6 -16
  5. data/config/config.sample.yml +15 -12
  6. data/config/config.yml +34 -0
  7. data/lib/integrity.rb +13 -13
  8. data/lib/integrity/app.rb +138 -0
  9. data/lib/integrity/author.rb +39 -0
  10. data/lib/integrity/build.rb +54 -31
  11. data/lib/integrity/commit.rb +71 -0
  12. data/lib/integrity/helpers.rb +3 -3
  13. data/lib/integrity/helpers/authorization.rb +2 -2
  14. data/lib/integrity/helpers/forms.rb +3 -3
  15. data/lib/integrity/helpers/pretty_output.rb +1 -1
  16. data/lib/integrity/helpers/rendering.rb +6 -1
  17. data/lib/integrity/helpers/resources.rb +9 -3
  18. data/lib/integrity/helpers/urls.rb +15 -13
  19. data/lib/integrity/installer.rb +43 -60
  20. data/lib/integrity/migrations.rb +31 -48
  21. data/lib/integrity/notifier.rb +14 -16
  22. data/lib/integrity/notifier/base.rb +29 -19
  23. data/lib/integrity/notifier/test_helpers.rb +100 -0
  24. data/lib/integrity/project.rb +69 -33
  25. data/lib/integrity/project_builder.rb +23 -14
  26. data/lib/integrity/scm/git.rb +15 -14
  27. data/lib/integrity/scm/git/uri.rb +9 -9
  28. data/test/acceptance/api_test.rb +97 -0
  29. data/test/acceptance/browse_project_builds_test.rb +65 -0
  30. data/test/acceptance/browse_project_test.rb +95 -0
  31. data/test/acceptance/build_notifications_test.rb +42 -0
  32. data/test/acceptance/create_project_test.rb +97 -0
  33. data/test/acceptance/delete_project_test.rb +53 -0
  34. data/test/acceptance/edit_project_test.rb +117 -0
  35. data/test/acceptance/error_page_test.rb +18 -0
  36. data/test/acceptance/helpers.rb +2 -0
  37. data/test/acceptance/installer_test.rb +62 -0
  38. data/test/acceptance/manual_build_project_test.rb +82 -0
  39. data/test/acceptance/notifier_test.rb +109 -0
  40. data/test/acceptance/project_syndication_test.rb +30 -0
  41. data/test/acceptance/stylesheet_test.rb +18 -0
  42. data/test/helpers.rb +59 -26
  43. data/test/helpers/acceptance.rb +19 -65
  44. data/test/helpers/acceptance/email_notifier.rb +55 -0
  45. data/test/helpers/acceptance/git_helper.rb +15 -15
  46. data/test/helpers/acceptance/textfile_notifier.rb +3 -3
  47. data/test/helpers/expectations.rb +0 -1
  48. data/test/helpers/expectations/be_a.rb +4 -4
  49. data/test/helpers/expectations/change.rb +5 -5
  50. data/test/helpers/expectations/have.rb +4 -4
  51. data/test/helpers/expectations/predicates.rb +4 -4
  52. data/test/helpers/fixtures.rb +44 -18
  53. data/test/helpers/initial_migration_fixture.sql +44 -0
  54. data/test/unit/build_test.rb +51 -0
  55. data/test/unit/commit_test.rb +83 -0
  56. data/test/unit/helpers_test.rb +56 -0
  57. data/test/unit/integrity_test.rb +18 -0
  58. data/test/unit/migrations_test.rb +56 -0
  59. data/test/unit/notifier_test.rb +123 -0
  60. data/test/unit/project_builder_test.rb +108 -0
  61. data/test/unit/project_test.rb +282 -0
  62. data/test/unit/scm_test.rb +54 -0
  63. data/views/_commit_info.haml +24 -0
  64. data/views/build.haml +2 -2
  65. data/views/error.haml +4 -3
  66. data/views/home.haml +3 -5
  67. data/views/integrity.sass +19 -6
  68. data/views/new.haml +6 -6
  69. data/views/project.builder +9 -9
  70. data/views/project.haml +14 -12
  71. metadata +89 -122
  72. data/VERSION.yml +0 -4
  73. data/app.rb +0 -138
  74. data/integrity.gemspec +0 -76
  75. data/lib/integrity/core_ext/string.rb +0 -5
  76. data/test/helpers/expectations/have_tag.rb +0 -128
  77. data/views/_build_info.haml +0 -18
data/views/new.haml CHANGED
@@ -7,29 +7,29 @@
7
7
  %label{ :for => "project_name" }<
8
8
  &== Name #{errors_on @project, :name}
9
9
  %input.text#project_name{ :name => "project_data[name]", :type => "text", :value => h(@project.name) }
10
-
10
+
11
11
  %p.required{ :class => error_class(@project, :uri) }
12
12
  %label{ :for => "project_repository" }<
13
13
  &== Git repository #{errors_on @project, :uri}
14
14
  %input.text#project_repository{ :name => "project_data[uri]", :type => "text", :value => h(@project.uri) }
15
-
15
+
16
16
  %p.normal{ :class => error_class(@project, :branch) }
17
17
  %label{ :for => "project_branch" }<
18
18
  &== Branch to track #{errors_on @project, :branch}
19
19
  %input.text#project_branch{ :name => "project_data[branch]", :type => "text", :value => "master", :value => h(@project.branch) }
20
-
20
+
21
21
  %p.normal{ :class => error_class(@project, :command) }
22
22
  %label{ :for => "project_build_script" }
23
23
  &== Build script #{errors_on @project, :command}
24
- %textarea#project_build_script{ :name => "project_data[command]", :cols => 40, :rows => 1 }
24
+ %textarea#project_build_script{ :name => "project_data[command]", :cols => 40, :rows => 2 }
25
25
  &== #{@project.command.to_s}
26
26
 
27
27
  %p.normal.checkbox
28
28
  %label{ :for => "project_public" } Public project
29
29
  %input.hidden{ :name => "project_data[public]", :value => "0", :type => "hidden" }
30
30
  %input.checkbox#project_public{ checkbox("project_data[public]", @project.public?) }
31
-
32
- - Notifier.available.each do |notifier|
31
+
32
+ - Integrity::Notifier.available.each do |notifier|
33
33
  = notifier_form(notifier)
34
34
 
35
35
  %p.submit
@@ -2,20 +2,20 @@ xml.instruct!
2
2
  xml.feed :xmlns => "http://www.w3.org/2005/Atom" do
3
3
  xml.title "Build history for #{@project.name}"
4
4
  xml.subtitle @project.uri
5
- xml.updated @project.builds.first.created_at
5
+ xml.updated @project.last_commit.updated_at
6
6
  xml.link :href => "#{project_url(@project)}.atom", :rel => "self"
7
7
  xml.id "#{project_url(@project)}.atom"
8
8
 
9
- @project.builds.each do |build|
9
+ @project.commits.each do |commit|
10
10
  xml.entry do
11
- xml.id build_url(build)
12
- xml.link :href => build_url(build), :rel => "alternate", :type => "text/html"
13
- xml.updated build.created_at
14
- xml.published build.created_at
11
+ xml.id commit_url(commit)
12
+ xml.link :href => commit_url(commit), :rel => "alternate", :type => "text/html"
13
+ xml.updated commit.created_at
14
+ xml.published commit.created_at
15
15
 
16
- xml.title "Built #{build.short_commit_identifier} #{build.successful? ? "successfully" : "and failed"}"
17
- xml.author { xml.name(build.commit_author.name) }
18
- xml.content("<div>#{partial(:build_info, :build => build)}</div>", :type => "html")
16
+ xml.title commit.human_readable_status
17
+ xml.author { xml.name(commit.author.name) }
18
+ xml.content("<div>#{partial(:commit_info, :commit => commit)}</div>", :type => "html")
19
19
  end
20
20
  end
21
21
  end
data/views/project.haml CHANGED
@@ -1,28 +1,30 @@
1
1
  #administrative
2
2
  %a{ :href => project_path(@project, :edit) } Edit Project
3
3
 
4
- - if @project.builds.empty?
4
+ - if @project.commits.empty?
5
5
  %form.blank_slate{ :action => project_path(@project, :builds), :method => :post }
6
6
  %p No builds for this project, buddy
7
7
  %h1
8
8
  You can request a
9
9
  %button{ :type => :submit } manual build
10
10
  - else
11
- - @build = @project.last_build
12
- #last_build{ :class => @build.status }
13
- = partial(:build_info, :build => @build)
11
+ - @commit = @project.last_commit
12
+ #last_build{ :class => @commit.status }
13
+ = partial(:commit_info, :commit => @commit)
14
14
 
15
15
  %form{ :action => project_path(@project, :builds), :method => :post }
16
- %p.submit
17
- %button{ :type => :submit } Request Manual Build
16
+ %p.submit.manual-build
17
+ %button{ :type => :submit, :title => "Fetch the last commit and build it" }<
18
+ Build the last commit
19
+ in the repository (or rebuild the latest)
18
20
 
19
- - unless @project.previous_builds.empty?
21
+ - unless @project.previous_commits.empty?
20
22
  %h2 Previous builds
21
23
  %ul#previous_builds
22
- - @project.previous_builds.each do |build|
23
- %li{ :class => build.status }
24
- %a{ :href => build_path(build) }
24
+ - @project.previous_commits.each do |commit|
25
+ %li{ :class => commit.status }
26
+ %a{ :href => commit_path(commit) }
25
27
  %strong.build<
26
- &== Build #{build.short_commit_identifier}
28
+ &== Build #{commit.short_identifier}
27
29
  %span.attribution<
28
- == by #{build.commit_author.name}, #{pretty_date build.commited_at}
30
+ == by #{commit.author.name}, #{pretty_date commit.committed_at}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: integrity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Nicol\xC3\xA1s Sanguinetti"
@@ -10,8 +10,8 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-02-12 00:00:00 +01:00
14
- default_executable: integrity
13
+ date: 2009-03-13 00:00:00 +01:00
14
+ default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: sinatra
@@ -21,7 +21,7 @@ dependencies:
21
21
  requirements:
22
22
  - - ">="
23
23
  - !ruby/object:Gem::Version
24
- version: 0.9.0.3
24
+ version: 0.9.1.1
25
25
  version:
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: haml
@@ -34,84 +34,34 @@ dependencies:
34
34
  version: 2.0.0
35
35
  version:
36
36
  - !ruby/object:Gem::Dependency
37
- name: dm-core
37
+ name: data_mapper
38
38
  type: :runtime
39
39
  version_requirement:
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  requirements:
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- version: 0.9.5
44
+ version: 0.9.10
45
45
  version:
46
46
  - !ruby/object:Gem::Dependency
47
- name: dm-validations
48
- type: :runtime
49
- version_requirement:
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: 0.9.5
55
- version:
56
- - !ruby/object:Gem::Dependency
57
- name: dm-types
58
- type: :runtime
59
- version_requirement:
60
- version_requirements: !ruby/object:Gem::Requirement
61
- requirements:
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: 0.9.5
65
- version:
66
- - !ruby/object:Gem::Dependency
67
- name: dm-timestamps
68
- type: :runtime
69
- version_requirement:
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 0.9.5
75
- version:
76
- - !ruby/object:Gem::Dependency
77
- name: dm-aggregates
78
- type: :runtime
79
- version_requirement:
80
- version_requirements: !ruby/object:Gem::Requirement
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- version: 0.9.5
85
- version:
86
- - !ruby/object:Gem::Dependency
87
- name: dm-migrations
88
- type: :runtime
89
- version_requirement:
90
- version_requirements: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: 0.9.5
95
- version:
96
- - !ruby/object:Gem::Dependency
97
- name: data_objects
47
+ name: uuidtools
98
48
  type: :runtime
99
49
  version_requirement:
100
50
  version_requirements: !ruby/object:Gem::Requirement
101
51
  requirements:
102
52
  - - ">="
103
53
  - !ruby/object:Gem::Version
104
- version: 0.9.5
54
+ version: "0"
105
55
  version:
106
56
  - !ruby/object:Gem::Dependency
107
- name: do_sqlite3
57
+ name: bcrypt-ruby
108
58
  type: :runtime
109
59
  version_requirement:
110
60
  version_requirements: !ruby/object:Gem::Requirement
111
61
  requirements:
112
62
  - - ">="
113
63
  - !ruby/object:Gem::Version
114
- version: 0.9.5
64
+ version: "0"
115
65
  version:
116
66
  - !ruby/object:Gem::Dependency
117
67
  name: json
@@ -124,14 +74,14 @@ dependencies:
124
74
  version: "0"
125
75
  version:
126
76
  - !ruby/object:Gem::Dependency
127
- name: foca-sinatra-diddies
77
+ name: foca-sinatra-ditties
128
78
  type: :runtime
129
79
  version_requirement:
130
80
  version_requirements: !ruby/object:Gem::Requirement
131
81
  requirements:
132
82
  - - ">="
133
83
  - !ruby/object:Gem::Version
134
- version: 0.0.2
84
+ version: 0.0.3
135
85
  version:
136
86
  - !ruby/object:Gem::Dependency
137
87
  name: thor
@@ -143,28 +93,8 @@ dependencies:
143
93
  - !ruby/object:Gem::Version
144
94
  version: "0"
145
95
  version:
146
- - !ruby/object:Gem::Dependency
147
- name: uuidtools
148
- type: :runtime
149
- version_requirement:
150
- version_requirements: !ruby/object:Gem::Requirement
151
- requirements:
152
- - - ">="
153
- - !ruby/object:Gem::Version
154
- version: "0"
155
- version:
156
- - !ruby/object:Gem::Dependency
157
- name: bcrypt-ruby
158
- type: :runtime
159
- version_requirement:
160
- version_requirements: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- version: "0"
165
- version:
166
96
  description: Your Friendly Continuous Integration server. Easy, fun and painless!
167
- email: contacto@nicolassanguinetti.info
97
+ email: info@integrityapp.com
168
98
  executables:
169
99
  - integrity
170
100
  extensions: []
@@ -172,62 +102,99 @@ extensions: []
172
102
  extra_rdoc_files: []
173
103
 
174
104
  files:
175
- - README.markdown
176
105
  - Rakefile
177
- - VERSION.yml
178
- - app.rb
106
+ - README.markdown
179
107
  - bin/integrity
180
- - config/config.sample.ru
181
- - config/config.sample.yml
182
- - config/thin.sample.yml
183
- - integrity.gemspec
184
- - lib/integrity.rb
185
- - lib/integrity/build.rb
108
+ - lib/integrity
109
+ - lib/integrity/project_builder.rb
110
+ - lib/integrity/core_ext
186
111
  - lib/integrity/core_ext/object.rb
187
- - lib/integrity/core_ext/string.rb
112
+ - lib/integrity/notifier.rb
188
113
  - lib/integrity/helpers.rb
114
+ - lib/integrity/installer.rb
115
+ - lib/integrity/app.rb
116
+ - lib/integrity/build.rb
117
+ - lib/integrity/scm
118
+ - lib/integrity/scm/git.rb
119
+ - lib/integrity/scm/git
120
+ - lib/integrity/scm/git/uri.rb
121
+ - lib/integrity/author.rb
122
+ - lib/integrity/project.rb
123
+ - lib/integrity/migrations.rb
124
+ - lib/integrity/scm.rb
125
+ - lib/integrity/helpers
126
+ - lib/integrity/helpers/rendering.rb
189
127
  - lib/integrity/helpers/authorization.rb
190
- - lib/integrity/helpers/breadcrumbs.rb
191
128
  - lib/integrity/helpers/forms.rb
192
- - lib/integrity/helpers/pretty_output.rb
193
- - lib/integrity/helpers/rendering.rb
194
129
  - lib/integrity/helpers/resources.rb
130
+ - lib/integrity/helpers/breadcrumbs.rb
131
+ - lib/integrity/helpers/pretty_output.rb
195
132
  - lib/integrity/helpers/urls.rb
196
- - lib/integrity/installer.rb
197
- - lib/integrity/migrations.rb
198
- - lib/integrity/notifier.rb
133
+ - lib/integrity/notifier
199
134
  - lib/integrity/notifier/base.rb
200
- - lib/integrity/project.rb
201
- - lib/integrity/project_builder.rb
202
- - lib/integrity/scm.rb
203
- - lib/integrity/scm/git.rb
204
- - lib/integrity/scm/git/uri.rb
135
+ - lib/integrity/notifier/test_helpers.rb
136
+ - lib/integrity/commit.rb
137
+ - lib/integrity.rb
138
+ - views/not_found.haml
139
+ - views/notifier.haml
140
+ - views/new.haml
141
+ - views/error.haml
142
+ - views/unauthorized.haml
143
+ - views/layout.haml
144
+ - views/project.builder
145
+ - views/_commit_info.haml
146
+ - views/project.haml
147
+ - views/build.haml
148
+ - views/home.haml
149
+ - views/integrity.sass
205
150
  - public/buttons.css
206
- - public/reset.css
207
151
  - public/spinner.gif
152
+ - public/reset.css
153
+ - config/config.ru
154
+ - config/thin.sample.yml
155
+ - config/config.sample.ru
156
+ - config/config.yml
157
+ - config/config.sample.yml
208
158
  - test/helpers.rb
159
+ - test/acceptance
160
+ - test/acceptance/build_notifications_test.rb
161
+ - test/acceptance/notifier_test.rb
162
+ - test/acceptance/manual_build_project_test.rb
163
+ - test/acceptance/helpers.rb
164
+ - test/acceptance/stylesheet_test.rb
165
+ - test/acceptance/api_test.rb
166
+ - test/acceptance/project_syndication_test.rb
167
+ - test/acceptance/error_page_test.rb
168
+ - test/acceptance/browse_project_test.rb
169
+ - test/acceptance/edit_project_test.rb
170
+ - test/acceptance/delete_project_test.rb
171
+ - test/acceptance/create_project_test.rb
172
+ - test/acceptance/installer_test.rb
173
+ - test/acceptance/browse_project_builds_test.rb
174
+ - test/unit
175
+ - test/unit/helpers_test.rb
176
+ - test/unit/migrations_test.rb
177
+ - test/unit/notifier_test.rb
178
+ - test/unit/project_builder_test.rb
179
+ - test/unit/build_test.rb
180
+ - test/unit/project_test.rb
181
+ - test/unit/commit_test.rb
182
+ - test/unit/scm_test.rb
183
+ - test/unit/integrity_test.rb
184
+ - test/helpers
185
+ - test/helpers/expectations.rb
209
186
  - test/helpers/acceptance.rb
210
- - test/helpers/acceptance/git_helper.rb
187
+ - test/helpers/acceptance
188
+ - test/helpers/acceptance/email_notifier.rb
211
189
  - test/helpers/acceptance/textfile_notifier.rb
212
- - test/helpers/expectations.rb
213
- - test/helpers/expectations/be_a.rb
214
- - test/helpers/expectations/change.rb
190
+ - test/helpers/acceptance/git_helper.rb
191
+ - test/helpers/expectations
215
192
  - test/helpers/expectations/have.rb
216
- - test/helpers/expectations/have_tag.rb
193
+ - test/helpers/expectations/be_a.rb
217
194
  - test/helpers/expectations/predicates.rb
195
+ - test/helpers/expectations/change.rb
218
196
  - test/helpers/fixtures.rb
219
- - views/_build_info.haml
220
- - views/build.haml
221
- - views/error.haml
222
- - views/home.haml
223
- - views/integrity.sass
224
- - views/layout.haml
225
- - views/new.haml
226
- - views/not_found.haml
227
- - views/notifier.haml
228
- - views/project.builder
229
- - views/project.haml
230
- - views/unauthorized.haml
197
+ - test/helpers/initial_migration_fixture.sql
231
198
  has_rdoc: false
232
199
  homepage: http://integrityapp.com
233
200
  post_install_message: Run `integrity help` for information on how to setup Integrity.
data/VERSION.yml DELETED
@@ -1,4 +0,0 @@
1
- ---
2
- major: 0
3
- patch: 8
4
- minor: 1
data/app.rb DELETED
@@ -1,138 +0,0 @@
1
- require "sinatra"
2
-
3
- require File.dirname(__FILE__) + "/lib/integrity"
4
- require "integrity/helpers"
5
-
6
- set :root, Integrity.root
7
- set :public, Integrity.root / "public"
8
- set :views, Integrity.root / "views"
9
-
10
- enable :sessions
11
-
12
- include Integrity
13
-
14
- configure :development do
15
- config = Integrity.root / "config" / "config.yml"
16
- Integrity.config = config if File.exists? config
17
- end
18
-
19
- configure do
20
- Integrity.new
21
- end
22
-
23
- not_found do
24
- status 404
25
- show :not_found, :title => "lost, are we?"
26
- end
27
-
28
- error do
29
- @error = request.env['sinatra.error']
30
- status 500
31
- show :error, :title => "something has gone terribly wrong"
32
- end
33
-
34
- before do
35
- # The browser only sends http auth data for requests that are explicitly
36
- # required to do so. This way we get the real values of +#logged_in?+ and
37
- # +#current_user+
38
- login_required if session[:user]
39
- end
40
-
41
- get "/" do
42
- @projects = Project.only_public_unless(authorized?)
43
- show :home, :title => "projects"
44
- end
45
-
46
- get "/login" do
47
- login_required
48
- session[:user] = current_user
49
- redirect root_url
50
- end
51
-
52
- get "/new" do
53
- login_required
54
-
55
- @project = Project.new
56
- show :new, :title => ["projects", "new project"]
57
- end
58
-
59
- post "/" do
60
- login_required
61
-
62
- @project = Project.new(params[:project_data])
63
- if @project.save
64
- @project.enable_notifiers(params["enabled_notifiers[]"], params["notifiers"])
65
- redirect project_url(@project)
66
- else
67
- show :new, :title => ["projects", "new project"]
68
- end
69
- end
70
-
71
- get "/:project" do
72
- login_required unless current_project.public?
73
- show :project, :title => ["projects", current_project.name]
74
- end
75
-
76
- get "/:project.atom" do
77
- login_required unless current_project.public?
78
- response["Content-Type"] = "application/rss+xml; charset=utf-8"
79
- builder :project
80
- end
81
-
82
- put "/:project" do
83
- login_required
84
-
85
- if current_project.update_attributes(params[:project_data])
86
- current_project.enable_notifiers(params["enabled_notifiers"], params["notifiers"])
87
- redirect project_url(current_project)
88
- else
89
- show :new, :title => ["projects", current_project.permalink, "edit"]
90
- end
91
- end
92
-
93
- delete "/:project" do
94
- login_required
95
-
96
- current_project.destroy
97
- redirect root_url
98
- end
99
-
100
- get "/:project/edit" do
101
- login_required
102
-
103
- show :new, :title => ["projects", current_project.permalink, "edit"]
104
- end
105
-
106
- post "/:project/push" do
107
- login_required
108
-
109
- content_type "text/plain"
110
-
111
- begin
112
- current_project.push(params[:payload])
113
- "Thanks, build started."
114
- rescue JSON::ParserError => exception
115
- throw :halt, [422, exception.to_s]
116
- end
117
- end
118
-
119
- post "/:project/builds" do
120
- login_required
121
-
122
- current_project.build
123
- redirect project_url(@project)
124
- end
125
-
126
- get "/:project/builds/:build" do
127
- login_required unless current_project.public?
128
- show :build, :title => ["projects", current_project.permalink, current_build.short_commit_identifier]
129
- end
130
-
131
- get "/integrity.css" do
132
- response["Content-Type"] = "text/css; charset=utf-8"
133
- sass :integrity
134
- end
135
-
136
- helpers do
137
- include Helpers
138
- end