diff options
author | Valery Sizov <valery@gitlab.com> | 2015-04-22 09:55:50 +0000 |
---|---|---|
committer | Valery Sizov <valery@gitlab.com> | 2015-04-22 09:55:50 +0000 |
commit | 313c9b3caba4224f07074b929d45cc0fabcc7f54 (patch) | |
tree | 9c199e0edac46b3a9a21e84d1ddb32f5bbd76325 /lib/api/projects.rb | |
parent | b3e2939aa2904c92aba0399d511cb05228bfc9be (diff) | |
parent | 9cb877ca13078121ec6438c07d08a779c0cfdef1 (diff) | |
download | gitlab-ci-313c9b3caba4224f07074b929d45cc0fabcc7f54.tar.gz |
Merge branch 'deploy_job_api' into 'master'
API for deploy jobs
https://dev.gitlab.org/gitlab/gitlab-ci/issues/192
See merge request !69
Diffstat (limited to 'lib/api/projects.rb')
-rw-r--r-- | lib/api/projects.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/api/projects.rb b/lib/api/projects.rb index ea10a82..38c8c1b 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -83,6 +83,45 @@ module API end end + # Add a new deploy job to a project + # + # Parameters + # id (required) - The ID of a project + # name (required) - The job name + # commands (required) - The command line script for the job + # active (optional) - The command is active of not + # refs (optional) - The list of refs + # tags (optional) - The tags associated with this job + # Example Request + # POST /projects/:id/deploy_jobs + post ":id/deploy_jobs" do + required_attributes! [:name, :commands] + + project = Project.find(params[:id]) + + not_found! if project.blank? + unauthorized! unless current_user.can_manage_project?(project.gitlab_id) + + job_params = + { + name: params[:name], + commands: params[:commands], + job_type: "deploy" + } + + job_params[:active] = params[:active] unless params[:active].nil? + job_params[:refs] = params[:refs] unless params[:refs].nil? + job_params[:tag_list] = params[:tags] unless params[:tags].nil? + + job = project.jobs.new(job_params) + if job.save + present job, with: Entities::DeployJob + else + errors = job.errors.full_messages.join(", ") + render_api_error!(errors, 400) + end + end + # Delete a job for a project # # Parameters |