summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatarzyna Kobierska <kkobierska@gmail.com>2016-08-18 08:50:01 +0200
committerKatarzyna Kobierska <kkobierska@gmail.com>2016-09-07 12:10:49 +0200
commitfb1c7254d5764fb495d73b7e5bb16d60fd09bf03 (patch)
tree9f697c42d5fb42da3006160e1d37dbb08e39cc05
parent1d5488699678d22644d24add4b89cede0419ad25 (diff)
downloadgitlab-ce-fb1c7254d5764fb495d73b7e5bb16d60fd09bf03.tar.gz
API for CI Lint
-rw-r--r--lib/ci/api/api.rb1
-rw-r--r--lib/ci/api/entities.rb7
-rw-r--r--lib/ci/api/lint.rb24
-rw-r--r--spec/requests/ci/api/lint_spec.rb23
4 files changed, 55 insertions, 0 deletions
diff --git a/lib/ci/api/api.rb b/lib/ci/api/api.rb
index a6b9beecded..741a81ca8f0 100644
--- a/lib/ci/api/api.rb
+++ b/lib/ci/api/api.rb
@@ -24,6 +24,7 @@ module Ci
mount ::Ci::API::Builds
mount ::Ci::API::Runners
mount ::Ci::API::Triggers
+ mount ::Ci::API::Lint
end
end
end
diff --git a/lib/ci/api/entities.rb b/lib/ci/api/entities.rb
index 3f5bdaba3f5..8052908e78a 100644
--- a/lib/ci/api/entities.rb
+++ b/lib/ci/api/entities.rb
@@ -59,6 +59,13 @@ module Ci
expose :id, :variables
expose :pipeline, using: Commit, as: :commit
end
+
+ class Lint < Grape::Entity
+ expose :content
+ expose :status
+ expose :builds
+ expose :stages
+ end
end
end
end
diff --git a/lib/ci/api/lint.rb b/lib/ci/api/lint.rb
new file mode 100644
index 00000000000..d781441d2b7
--- /dev/null
+++ b/lib/ci/api/lint.rb
@@ -0,0 +1,24 @@
+module Ci
+ module API
+ class Lint < Grape::API
+ before { authenticate! }
+
+ resources :lint do
+ post do
+ content = params[:content]
+
+ if content
+ config_processor = Ci::GitlabCiYamlProcessor.new(content)
+ stages = config_processor.stages
+ builds = config_processor.builds
+ status = true
+
+ response = { status: status, stages: stages, builds: builds }
+ end
+
+ response
+ end
+ end
+ end
+ end
+end
diff --git a/spec/requests/ci/api/lint_spec.rb b/spec/requests/ci/api/lint_spec.rb
new file mode 100644
index 00000000000..2ffd88120ae
--- /dev/null
+++ b/spec/requests/ci/api/lint_spec.rb
@@ -0,0 +1,23 @@
+require 'spec_helper'
+
+describe Ci::API::API do
+ include ApiHelpers
+
+ let(:content) do
+ File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml'))
+ end
+
+ describe "Builds API for Lint" do
+
+ describe 'POST /ci/lint' do
+ before { content }
+
+ context "with valid .gitlab-ci.yaml file" do
+ it "has success status" do
+ # binding.pry
+ expect(response).to have_content(true)
+ end
+ end
+ end
+ end
+end