From 3a23766a3c354fb226f9826603dcb6cd529775b2 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 28 Jun 2017 22:40:14 +0900 Subject: Rename route2 --- .../projects/project_variables_controller.rb | 50 ++++++++++++++++++++++ .../projects/project_variables/_content.html.haml | 9 ++++ .../projects/project_variables/_form.html.haml | 19 ++++++++ .../projects/project_variables/_index.html.haml | 16 +++++++ .../projects/project_variables/_table.html.haml | 29 +++++++++++++ .../projects/project_variables/show.html.haml | 9 ++++ 6 files changed, 132 insertions(+) create mode 100644 app/controllers/projects/project_variables_controller.rb create mode 100644 app/views/projects/project_variables/_content.html.haml create mode 100644 app/views/projects/project_variables/_form.html.haml create mode 100644 app/views/projects/project_variables/_index.html.haml create mode 100644 app/views/projects/project_variables/_table.html.haml create mode 100644 app/views/projects/project_variables/show.html.haml 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" -- cgit v1.2.1