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