From 406a0c809b3c10d8fb2754cf626094b98ee78aeb Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 19 Nov 2012 22:34:05 +0300 Subject: [PATCH] GitLabCi Service imtegration --- app/assets/images/service-disabled-gitlab-ci.png | Bin 0 -> 2178 bytes app/assets/images/service-gitlab-ci.png | Bin 2758 -> 2393 bytes .../stylesheets/gitlab_bootstrap/common.scss | 3 ++ app/controllers/services_controller.rb | 37 ++++++++++++++++++ app/models/gitlab_ci_service.rb | 29 ++++++++++++++ app/models/project.rb | 1 + app/models/service.rb | 2 +- app/roles/push_observer.rb | 4 +- app/views/projects/_project_head.html.haml | 4 ++ app/views/services/_gitlab_ci.html.haml | 42 +++++++++++++++++++++ app/views/services/edit.html.haml | 2 + app/views/services/index.html.haml | 15 ++++++++ config/routes.rb | 6 +++ db/migrate/20121120103700_add_active_to_service.rb | 5 +++ .../20121120113838_add_project_url_to_service.rb | 5 +++ db/schema.rb | 10 +++-- 16 files changed, 158 insertions(+), 7 deletions(-) create mode 100644 app/assets/images/service-disabled-gitlab-ci.png create mode 100644 app/controllers/services_controller.rb create mode 100644 app/models/gitlab_ci_service.rb create mode 100644 app/views/services/_gitlab_ci.html.haml create mode 100644 app/views/services/edit.html.haml create mode 100644 app/views/services/index.html.haml create mode 100644 db/migrate/20121120103700_add_active_to_service.rb create mode 100644 db/migrate/20121120113838_add_project_url_to_service.rb diff --git a/app/assets/images/service-disabled-gitlab-ci.png b/app/assets/images/service-disabled-gitlab-ci.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1f9d0b50d01604383045d307369096fbfbda7f GIT binary patch literal 2178 zcma)8c{JPG7LK86C^cPkRf#sejaJn~4MiR?R1gmpQzg{!NTkF(R8*U)Xd1n=YAR}a zrV!es{e;-oJ01wa-~+ud~+K``h3C&PjE&w-Ogs5(R-k z;x^V6PQdyUu&csC!2E}h8V6YT!kw&OpqkGrY+xgVxoKqqI{tgSYAbsNctr5lsBjQS zOy+On1HH^u0GuZYHVDg;(_*rs7sY0iEM9;>!u&QC=FZWR>$x5dGAyN}0{bcAu!dI2 ziHA;VqI?zn=Z2CVML&{%8NGR%(oM$238_X^buvj{pkK{!EKvUr7xd6c_Pc-d0IX7oTM;O5T-_yv{n<87EUqaKljv3 z7%a&z@;@h0@W0Oeyul;fg+Ft0()t#=*aRm>$E2Y^zley;%*@|POG|}G?@$RZb8;?f zX)VsZBZc5_{60-nLu^9)(V+`=nR8HHQ89PGS+;X+{b(4Get88#osNkw6mo zUtoFrxHi0+H3v6@;MMg&c)$G<4s5?A7oD456q|u&PgOiIOkjJo? znCltft%Y70rwUmF0-<>N*(~}w{OkH2&~D; zfA^Six!gZ9Gx_iv)7L?&ripgCN=F+U9feaPqodS<0?I^)e{gUbP>q!p2+>TfGQr+n z;(|l|`}IiRW??~oMglLZy1H6}vWPbrWD|C{+&UWVey^XC>6buVAT>;#0*l4^P)~*z zOYyJgn}dEOn#RP$kc7U5&M?d?M=`XC5%cLY0^;K0QWB)CgLpETtgWwa1(rV8;A@%) zX=rNFu#x6)ICcmG($y7?L`qp&TJG%ZNQyqtIrL;iQ~h*$NvF@2S5>_R@N1evI5?bE zR#qmdUNJR2o8+VYsME*5amAtF2GzDiJEwnz8+*?2kS)+2lm&r640bpGapmOXejda_ zFJInX?34fGPitW$Tyk-7`B49KA)dd5{VPs@PPEVf$x~9C`Cophj z@arc`-Ba5VfVmxrcn(vzfx#emV>;P{dIlrcWf@QRoEYlZ+3YzcngJb!&9%SaTKQY$ z=;Lk-GT`lze?v)$W<)F4=IeT-oV@%+2;{Awj#R3Jgt51_!t3T{g|zOlg|G{PllNyg znQL4Oz!$;Qm6Z?WQ=Tn^)GuWY$7|VH@8(|B)lr9sogzFSvKTbl+$$`K*4Ea4cxXtc z(-k{I52q>8Hzb7}Jw3_2eumC!_dAp9%Xo#aza6{2BEY{B3=e)Cgu9}#p{1Nlfmm!e zu8DKV4entwv-9#?eBZRRwEQ5Buy;+G2u}DBafd6+$X1i$*!Jf=J#bk|baeEKy1J{# zll*R8UYaTr|3o6qvDo!O?7atOa%m@8S)WHnWD^n+LPA0uot%=H-;p;3;{?3Y;m@eC zoB6%csVOfns=n{);?K#+*^h5e2x#6BD20etI6scsoJobvZ@}hRtx>7)Vu1a3S4S$y z?oYusva+&+V`FdxLcGFxb#T(Qg}*KC`hn`$*cea<087uy@&LK3UDKd_x_Wx5&0v5# zcNkH0&t?|RyFEU}Pws_n$;yu(7R5t@!^1E%y72c3unpvKk!leNf*+D%$JqCB@1)pEJ-LtvptE&WvO;t@z(fAteUw`!aWo&PU`Jw!AI0@Q>9TuzA z>GPCIm4eFk75cs!Ujwo=j@u=3mIuDf%-E|_ePUuzM;HYk3?^Crig$TXhvZ7fhkCo; zGv}B3b0CiaP&>bGeZw34FdXE zmc)T7^8Behv`)6dnKO67!lY}*)5h1jzi&yVbpyI{NczI@=jN(xZ*Oa7+o85dvzq}}ta$BsrE9=H3MHx5DSkROfRMn8sb*?# zS65f5Crons;p$X1rS$st_RnKua`jMOo$NOgA%H0OtAwJ_L^tTeB8cF9^Tzzl=g&#+ z=Jq$#mp0ZY-5BeP6lkAY^;ng`B~{8b6B7guhlBU*kBfr$X_6h*vj5-H`YoW?1BH?* nR@+DGYG`Q8@0lf^T{6YJQEaHS-QNK|2p}6vdy5*FPx5~N!<-za literal 0 HcmV?d00001 diff --git a/app/assets/images/service-gitlab-ci.png b/app/assets/images/service-gitlab-ci.png index afaa10d02b037d1aa658c3b4eec658e2bed17224..bcb30a3fb1ada06b21c05de1814b7b6bea9e7652 100644 GIT binary patch literal 2393 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 :service, :url => project_service_path(@project, @service), :method => :put) do |f| + - if @service.errors.any? + .alert-message.block-message.error + %ul + - @service.errors.full_messages.each do |msg| + %li= msg + + + .control-group + = f.label :active, "Active", class: "control-label" + .controls + = f.check_box :active + + .control-group + = f.label :active, "Project URL", class: "control-label" + .controls + = f.text_field :project_url, class: "input-xlarge", placeholder: "http://ci.gitlabhq.com/projects/3" + + .control-group + = f.label :token, class: "control-label" do + CI Project token + .controls + = f.text_field :token, class: "input-xlarge", placeholder: "GitLab CI project specific token" + + + .form-actions + = f.submit 'Save', class: 'btn save-btn' +   + = link_to 'Test settings', test_project_service_path(@project), class: 'btn btn-small' diff --git a/app/views/services/edit.html.haml b/app/views/services/edit.html.haml new file mode 100644 index 000000000..d893847f1 --- /dev/null +++ b/app/views/services/edit.html.haml @@ -0,0 +1,2 @@ += render "projects/project_head" += render 'gitlab_ci' diff --git a/app/views/services/index.html.haml b/app/views/services/index.html.haml new file mode 100644 index 000000000..3894fcee3 --- /dev/null +++ b/app/views/services/index.html.haml @@ -0,0 +1,15 @@ += render "projects/project_head" +%h3.page_title Services +%hr + +.row + .span6 + .padded + %p.slead Continuous integration server from GitLab + .thumbnail.left + = link_to edit_project_service_path(@project, :gitlab_ci) do + - if @gitlab_ci_service.try :active + = image_tag 'service-gitlab-ci.png' + - else + = image_tag 'service-disabled-gitlab-ci.png' + diff --git a/config/routes.rb b/config/routes.rb index bf7628654..98cf7e812 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -133,6 +133,12 @@ Gitlab::Application.routes.draw do end end + resources :services, constraints: { id: /[^\/]+/ }, only: [:index, :edit, :update] do + member do + get :test + end + end + resources :deploy_keys resources :protected_branches, only: [:index, :create, :destroy] diff --git a/db/migrate/20121120103700_add_active_to_service.rb b/db/migrate/20121120103700_add_active_to_service.rb new file mode 100644 index 000000000..f45ef52e6 --- /dev/null +++ b/db/migrate/20121120103700_add_active_to_service.rb @@ -0,0 +1,5 @@ +class AddActiveToService < ActiveRecord::Migration + def change + add_column :services, :active, :boolean, default: false, null: false + end +end diff --git a/db/migrate/20121120113838_add_project_url_to_service.rb b/db/migrate/20121120113838_add_project_url_to_service.rb new file mode 100644 index 000000000..13ffbdb19 --- /dev/null +++ b/db/migrate/20121120113838_add_project_url_to_service.rb @@ -0,0 +1,5 @@ +class AddProjectUrlToService < ActiveRecord::Migration + def change + add_column :services, :project_url, :string, null: true + end +end diff --git a/db/schema.rb b/db/schema.rb index b11542704..27b1f4aa8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20121120051432) do +ActiveRecord::Schema.define(:version => 20121120113838) do create_table "events", :force => true do |t| t.string "target_type" @@ -131,9 +131,11 @@ ActiveRecord::Schema.define(:version => 20121120051432) do t.string "type" t.string "title" t.string "token" - t.integer "project_id", :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.integer "project_id", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.boolean "active", :default => false, :null => false + t.string "project_url" end create_table "snippets", :force => true do |t| -- 2.11.0