summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2017-06-28 22:40:14 +0900
committerShinya Maeda <shinya@gitlab.com>2017-06-28 22:40:14 +0900
commit3a23766a3c354fb226f9826603dcb6cd529775b2 (patch)
tree499bd30e6cb9ab9c1eb20c0252ac7e04f3ee7526
parentd26e15da56739ccc3b240c9be4b52842959804bc (diff)
downloadgitlab-ce-feature/sm/33980-rename-the-domain-model-from-ci-variable-to-ci-project-variable.tar.gz
-rw-r--r--app/controllers/projects/project_variables_controller.rb50
-rw-r--r--app/views/projects/project_variables/_content.html.haml9
-rw-r--r--app/views/projects/project_variables/_form.html.haml19
-rw-r--r--app/views/projects/project_variables/_index.html.haml16
-rw-r--r--app/views/projects/project_variables/_table.html.haml29
-rw-r--r--app/views/projects/project_variables/show.html.haml9
6 files changed, 132 insertions, 0 deletions
diff --git a/app/controllers/projects/project_variables_controller.rb b/app/controllers/projects/project_variables_controller.rb
new file mode 100644
index 00000000000..12a8e1377b2
--- /dev/null
+++ b/app/controllers/projects/project_variables_controller.rb
@@ -0,0 +1,50 @@
+class Projects::ProjectVariablesController < Projects::ApplicationController
+ before_action :authorize_admin_build!
+
+ layout 'project_settings'
+
+ def index
+ redirect_to namespace_project_settings_ci_cd_path(@project.namespace, @project)
+ end
+
+ def show
+ @variable = @project.variables.find(params[:id])
+ end
+
+ def update
+ @variable = @project.variables.find(params[:id])
+
+ if @variable.update_attributes(project_params)
+ redirect_to namespace_project_project_variables_path(project.namespace, project), notice: 'Variable was successfully updated.'
+ else
+ render action: "show"
+ end
+ end
+
+ def create
+ @variable = Ci::ProjectVariable.new(project_params)
+
+ if @variable.valid? && @project.variables << @variable
+ flash[:notice] = 'Variables were successfully updated.'
+ redirect_to namespace_project_settings_ci_cd_path(project.namespace, project)
+ else
+ render "show"
+ end
+ end
+
+ def destroy
+ @key = @project.variables.find(params[:id])
+ @key.destroy
+
+ redirect_to namespace_project_settings_ci_cd_path(project.namespace, project),
+ status: 302,
+ notice: 'Variable was successfully removed.'
+ end
+
+ private
+
+ def project_params
+ params.require(:project_variable)
+ .permit([:id, :key, :value, :protected, :_destroy])
+ end
+end
diff --git a/app/views/projects/project_variables/_content.html.haml b/app/views/projects/project_variables/_content.html.haml
new file mode 100644
index 00000000000..98f618ca3b8
--- /dev/null
+++ b/app/views/projects/project_variables/_content.html.haml
@@ -0,0 +1,9 @@
+%h4.prepend-top-0
+ Secret variables
+ = link_to icon('question-circle'), help_page_path('ci/variables/README', anchor: 'secret-variables'), target: '_blank'
+%p
+ These variables will be set to environment by the runner, and could be protected by exposing only to protected branches or tags.
+%p
+ So you can use them for passwords, secret keys or whatever you want.
+%p
+ The value of the variable can be visible in job log if explicitly asked to do so.
diff --git a/app/views/projects/project_variables/_form.html.haml b/app/views/projects/project_variables/_form.html.haml
new file mode 100644
index 00000000000..0a70a301cb4
--- /dev/null
+++ b/app/views/projects/project_variables/_form.html.haml
@@ -0,0 +1,19 @@
+= form_for [@project.namespace.becomes(Namespace), @project, @variable] do |f|
+ = form_errors(@variable)
+
+ .form-group
+ = f.label :key, "Key", class: "label-light"
+ = f.text_field :key, class: "form-control", placeholder: "PROJECT_VARIABLE", required: true
+ .form-group
+ = f.label :value, "Value", class: "label-light"
+ = f.text_area :value, class: "form-control", placeholder: "PROJECT_VARIABLE"
+ .form-group
+ .checkbox
+ = f.label :protected do
+ = f.check_box :protected
+ %strong Protected
+ .help-block
+ This variable will be passed only to pipelines running on protected branches and tags
+ = link_to icon('question-circle'), help_page_path('ci/variables/README', anchor: 'protected-secret-variables'), target: '_blank'
+
+ = f.submit btn_text, class: "btn btn-save"
diff --git a/app/views/projects/project_variables/_index.html.haml b/app/views/projects/project_variables/_index.html.haml
new file mode 100644
index 00000000000..279667728f2
--- /dev/null
+++ b/app/views/projects/project_variables/_index.html.haml
@@ -0,0 +1,16 @@
+.row.prepend-top-default.append-bottom-default
+ .col-lg-4
+ = render "projects/project_variables/content"
+ .col-lg-8
+ %h5.prepend-top-0
+ Add a variable
+ = render "projects/project_variables/form", btn_text: "Add new variable"
+ %hr
+ %h5.prepend-top-0
+ Your variables (#{@project.variables.size})
+ - if @project.variables.empty?
+ %p.settings-message.text-center.append-bottom-0
+ No variables found, add one with the form above.
+ - else
+ = render "projects/project_variables/table"
+ %button.btn.btn-info.js-btn-toggle-reveal-values{ "data-status" => 'hidden' } Reveal Values
diff --git a/app/views/projects/project_variables/_table.html.haml b/app/views/projects/project_variables/_table.html.haml
new file mode 100644
index 00000000000..132f3a5cd4b
--- /dev/null
+++ b/app/views/projects/project_variables/_table.html.haml
@@ -0,0 +1,29 @@
+.table-responsive.variables-table
+ %table.table
+ %colgroup
+ %col
+ %col
+ %col
+ %col{ width: 100 }
+ %thead
+ %th Key
+ %th Value
+ %th Protected
+ %th
+ %tbody
+ - @project.variables.order_key_asc.each do |variable|
+ - if variable.id?
+ %tr
+ %td.variable-key= variable.key
+ %td.variable-value{ "data-value" => variable.value }******
+ %td.variable-protected= Gitlab::Utils.boolean_to_yes_no(variable.protected)
+ %td.variable-menu
+ - puts "variable: #{variable}"
+ = link_to namespace_project_project_variable_path(@project.namespace, @project, variable), class: "btn btn-transparent btn-variable-edit" do
+ %span.sr-only
+ Update
+ = icon("pencil")
+ = link_to namespace_project_project_variable_path(@project.namespace, @project, variable), class: "btn btn-transparent btn-variable-delete", method: :delete, data: { confirm: "Are you sure?" } do
+ %span.sr-only
+ Remove
+ = icon("trash")
diff --git a/app/views/projects/project_variables/show.html.haml b/app/views/projects/project_variables/show.html.haml
new file mode 100644
index 00000000000..297a53ca98c
--- /dev/null
+++ b/app/views/projects/project_variables/show.html.haml
@@ -0,0 +1,9 @@
+- page_title "Variables"
+
+.row.prepend-top-default.append-bottom-default
+ .col-lg-3
+ = render "content"
+ .col-lg-9
+ %h5.prepend-top-0
+ Update variable
+ = render "form", btn_text: "Save variable"