Commit 3871ea33 authored by Jacopo's avatar Jacopo

Review 1

parent 6ae16b6d
...@@ -102,7 +102,7 @@ POST /projects/:id/pipeline ...@@ -102,7 +102,7 @@ POST /projects/:id/pipeline
|------------|---------|----------|---------------------| |------------|---------|----------|---------------------|
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user | | `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `ref` | string | yes | Reference to commit | | `ref` | string | yes | Reference to commit |
| `variables` | array | no | An array containing the variables available in the pipeline matching the structure [{ 'key' => 'UPLOAD_TO_S3', 'value' => 'true' }] | | `variables` | array | no | An array containing the variables available in the pipeline, matching the structure [{ 'key' => 'UPLOAD_TO_S3', 'value' => 'true' }] |
``` ```
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v4/projects/1/pipeline?ref=master" curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v4/projects/1/pipeline?ref=master"
......
...@@ -48,9 +48,13 @@ module API ...@@ -48,9 +48,13 @@ module API
authorize! :create_pipeline, user_project authorize! :create_pipeline, user_project
pipeline_params = declared_params(include_missing: false)
.merge(variables_attributes: params[:variables])
.except(:variables)
new_pipeline = Ci::CreatePipelineService.new(user_project, new_pipeline = Ci::CreatePipelineService.new(user_project,
current_user, current_user,
declared_params(include_missing: false).merge(variables_attributes: params[:variables])) pipeline_params)
.execute(:api, ignore_skip_ci: true, save_on_errors: false) .execute(:api, ignore_skip_ci: true, save_on_errors: false)
if new_pipeline.persisted? if new_pipeline.persisted?
......
...@@ -316,18 +316,35 @@ describe API::Pipelines do ...@@ -316,18 +316,35 @@ describe API::Pipelines do
end end
end end
context 'when excluding a ref' do describe 'using variables conditions' do
let(:variables) { [{ 'key' => 'STAGING', 'value' => 'true' }] }
before do before do
config = YAML.dump(test: { script: 'test', except: [project.default_branch] }) config = YAML.dump(test: { script: 'test', only: { variables: ['$STAGING'] } })
stub_ci_pipeline_yaml_file(config) stub_ci_pipeline_yaml_file(config)
end end
it "doesn't not create a job for the exluded ref" do it 'creates and returns a new pipeline using the given variables' do
expect do expect do
post api("/projects/#{project.id}/pipeline", user), ref: project.default_branch post api("/projects/#{project.id}/pipeline", user), ref: project.default_branch, variables: variables
end.not_to change { project.pipelines.count } end.to change { project.pipelines.count }.by(1)
expect(response).to have_gitlab_http_status(400) expect(response).to have_gitlab_http_status(201)
expect(json_response).to be_a Hash
expect(json_response['sha']).to eq project.commit.id
expect(json_response['variables']).to eq variables
end
context 'condition unmatch' do
let(:variables) { [{ 'key' => 'STAGING', 'value' => 'false' }] }
it "doesn't create a job" do
expect do
post api("/projects/#{project.id}/pipeline", user), ref: project.default_branch
end.not_to change { project.pipelines.count }
expect(response).to have_gitlab_http_status(400)
end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment