diff --git a/doc/administration/geo/replication/object_storage.md b/doc/administration/geo/replication/object_storage.md index c85005a3f91a5e782eb9063eeca9340f70b2c0db..ad95255f2a91dd29f0977e46ea621cd8e7c41144 100644 --- a/doc/administration/geo/replication/object_storage.md +++ b/doc/administration/geo/replication/object_storage.md @@ -16,6 +16,9 @@ To have: > - [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/10586) in GitLab 12.4. +CAUTION: **Caution:** +This is a [**beta** feature](https://about.gitlab.com/handbook/product/#beta) and is not ready yet for production use at any scale. + **Secondary** nodes can replicate files stored on the **primary** node regardless of whether they are stored on the local filesystem or in object storage. diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index 628c3f010439ae27e5986ebee7eaf196df640c2f..41fdfa6557ad578ce25b55f06c1420e15fa16118 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -318,6 +318,17 @@ There are also two edge cases worth mentioning: `test` and `deploy` are allowed to be used as job's stage by default. 1. If a job doesn't specify a `stage`, the job is assigned the `test` stage. +#### `.pre` and `.post` + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/31441) in GitLab 12.4. + +The following stages are available to every pipeline: + +- `.pre`, which is guaranteed to always be the first stage in a pipeline. +- `.post`, which is guaranteed to always be the last stage in a pipeline. + +User-defined stages are executed after `.pre` and before `.post`. + ### `stage` `stage` is defined per-job and relies on [`stages`](#stages) which is defined @@ -330,6 +341,10 @@ stages: - test - deploy +job 0: + stage: .pre + script: make something useful before build stage + job 1: stage: build script: make build dependencies @@ -345,6 +360,10 @@ job 3: job 4: stage: deploy script: make deploy + +job 5: + stage: .post + script: make something useful at the end of pipeline ``` #### Using your own Runners diff --git a/doc/user/clusters/environments.md b/doc/user/clusters/environments.md index bbf01dc27f99ac8726e026ad095a64fca45f8672..f83be85726a27ab78a8b70ae58e1df902ca9aac9 100644 --- a/doc/user/clusters/environments.md +++ b/doc/user/clusters/environments.md @@ -1,6 +1,7 @@ # Cluster Environments **(PREMIUM)** -> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/13392) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.3. +> - [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/13392) for group-level clusters in [GitLab Premium](https://about.gitlab.com/pricing/) 12.3. +> - [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/14809) for instance-level clusters in [GitLab Premium](https://about.gitlab.com/pricing/) 12.4. Cluster environments provide a consolidated view of which CI [environments](../../ci/environments.md) are deployed to the Kubernetes cluster and it: diff --git a/qa/qa.rb b/qa/qa.rb index 85ee017ccd444d9847208b65fbb430d6df45417a..a628c0e0e3ff10f52f69ae91c1e09b42622c7182 100644 --- a/qa/qa.rb +++ b/qa/qa.rb @@ -407,6 +407,7 @@ module QA module DockerRun autoload :Base, 'qa/service/docker_run/base' autoload :LDAP, 'qa/service/docker_run/ldap' + autoload :NodeJs, 'qa/service/docker_run/node_js' autoload :GitlabRunner, 'qa/service/docker_run/gitlab_runner' end end diff --git a/qa/qa/runtime/fixtures.rb b/qa/qa/runtime/fixtures.rb index 02cecffd4dff94592cb93fc6822518e23eedfaf6..f91218ea0b589f6f75c6fa6faea4c24e3b356348 100644 --- a/qa/qa/runtime/fixtures.rb +++ b/qa/qa/runtime/fixtures.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'tmpdir' + module QA module Runtime module Fixtures @@ -18,6 +20,19 @@ module QA parse_body(response)[:content] end + def with_fixtures(fixtures) + dir = Dir.mktmpdir + fixtures.each do |file_def| + path = File.join(dir, file_def[:file_path]) + FileUtils.mkdir_p(File.dirname(path)) + File.write(path, file_def[:content]) + end + + yield dir + ensure + FileUtils.remove_entry(dir) + end + private def api_client diff --git a/qa/qa/service/docker_run/node_js.rb b/qa/qa/service/docker_run/node_js.rb new file mode 100644 index 0000000000000000000000000000000000000000..642f1d1a33a5d366ef74690b180b2b31b4626e7d --- /dev/null +++ b/qa/qa/service/docker_run/node_js.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +module QA + module Service + module DockerRun + class NodeJs < Base + def initialize(volume_host_path) + @image = 'node:12.11.1-alpine' + @name = "qa-node-#{SecureRandom.hex(8)}" + @volume_host_path = volume_host_path + + super() + end + + def publish! + # When we run the tests via gitlab-qa, we use docker-in-docker + # which means that host of a volume mount would be the host that + # started the gitlab-qa QA container (e.g., the CI runner), + # not the gitlab-qa container itself. That means we can't + # mount a volume from the file system inside the gitlab-qa + # container. + # + # Instead, we copy the files into the container. + shell <<~CMD.tr("\n", ' ') + docker run -d --rm + --network #{network} + --hostname #{host_name} + --name #{@name} + --volume #{@volume_host_path}:/home/node + #{@image} sh -c "sleep 60" + CMD + shell "docker cp #{@volume_host_path}/. #{@name}:/home/node" + shell "docker exec -t #{@name} sh -c 'cd /home/node && npm publish'" + end + end + end + end +end diff --git a/spec/frontend/fixtures/abuse_reports.rb b/spec/frontend/fixtures/abuse_reports.rb index 21356390cae25daa52971a679b1c6a78174b9f71..712ed2e8d7ed84aa656087b6e38a5c24e2f67af9 100644 --- a/spec/frontend/fixtures/abuse_reports.rb +++ b/spec/frontend/fixtures/abuse_reports.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Admin::AbuseReportsController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/admin_users.rb b/spec/frontend/fixtures/admin_users.rb index 0209594dadca93942ee502df2863c263ad9ccaf5..b0f7d69f09179e23eda31e41f2d544bd9f5646e6 100644 --- a/spec/frontend/fixtures/admin_users.rb +++ b/spec/frontend/fixtures/admin_users.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Admin::UsersController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/application_settings.rb b/spec/frontend/fixtures/application_settings.rb index afe5949ed3ba7db8f044e1c8cab689dce6e741f6..a16888d8f03610d3bff108bc4f6bd5c3d6f520bb 100644 --- a/spec/frontend/fixtures/application_settings.rb +++ b/spec/frontend/fixtures/application_settings.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Admin::ApplicationSettingsController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/blob.rb b/spec/frontend/fixtures/blob.rb index ce5030efbf81d657c03190283259a4402424ade0..28a3badaa17ef26c9540115c2944e78cd4fca01e 100644 --- a/spec/frontend/fixtures/blob.rb +++ b/spec/frontend/fixtures/blob.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::BlobController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/boards.rb b/spec/frontend/fixtures/boards.rb index f257d80390f4f648fa09e0442140d9d97f7f8e53..b3c7865a0881dfd6b3d2d94666f6316e21002e6c 100644 --- a/spec/frontend/fixtures/boards.rb +++ b/spec/frontend/fixtures/boards.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::BoardsController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/branches.rb b/spec/frontend/fixtures/branches.rb index 197fe42c52a30031b6704345425e8af9cb2ef181..2dc8cde625aa2bfef7b28e005b9e6c2a1b8a7858 100644 --- a/spec/frontend/fixtures/branches.rb +++ b/spec/frontend/fixtures/branches.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::BranchesController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/clusters.rb b/spec/frontend/fixtures/clusters.rb index f15ef010807a8aeafafcbfd6da1d2ee863cfa004..fd64d3c0e28a0890189016b72050176cbf745344 100644 --- a/spec/frontend/fixtures/clusters.rb +++ b/spec/frontend/fixtures/clusters.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::ClustersController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/commit.rb b/spec/frontend/fixtures/commit.rb index a328c455356bbdaf2b7592c325eb8e5359de4f15..2c4bf6fbd3d599e7ec8b2b98973ab4e055dfabb1 100644 --- a/spec/frontend/fixtures/commit.rb +++ b/spec/frontend/fixtures/commit.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::CommitController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/deploy_keys.rb b/spec/frontend/fixtures/deploy_keys.rb index fca233c6f5950b81245bea10624edf279cfea5b0..f491c424bcfb9a5d1a00773bf9efb1165dc64150 100644 --- a/spec/frontend/fixtures/deploy_keys.rb +++ b/spec/frontend/fixtures/deploy_keys.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::DeployKeysController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/groups.rb b/spec/frontend/fixtures/groups.rb index c1bb2d433322c5fa7c3733438464dacdf1d3bff3..237fc7115944a4432efd7fad3b0cadb50f6587de 100644 --- a/spec/frontend/fixtures/groups.rb +++ b/spec/frontend/fixtures/groups.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe 'Groups (JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/issues.rb b/spec/frontend/fixtures/issues.rb index b5eb38e00236631f069a64edb61efd6bc46df830..7e52499086337b60a3a527d634b156d82a2d1e1f 100644 --- a/spec/frontend/fixtures/issues.rb +++ b/spec/frontend/fixtures/issues.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::IssuesController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/jobs.rb b/spec/frontend/fixtures/jobs.rb index a3a7759c85b19490b79ce39e7d9ffc660a0f8002..787ab517f75dbfe66c5de7aba536af91ba91d88d 100644 --- a/spec/frontend/fixtures/jobs.rb +++ b/spec/frontend/fixtures/jobs.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::JobsController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/labels.rb b/spec/frontend/fixtures/labels.rb index a312287970fdd5b64dfca1a856bd6176c15bac69..e4d66dbcd0a7ff16f7c6622c45d22157bc4b61e4 100644 --- a/spec/frontend/fixtures/labels.rb +++ b/spec/frontend/fixtures/labels.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe 'Labels (JavaScript fixtures)' do diff --git a/spec/frontend/fixtures/merge_requests.rb b/spec/frontend/fixtures/merge_requests.rb index 88706e9667604ae5a82a43238987ac3c5131a2b2..8fbdb534b3d91e7c6ed5924c83bb9fd086c00ebe 100644 --- a/spec/frontend/fixtures/merge_requests.rb +++ b/spec/frontend/fixtures/merge_requests.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::MergeRequestsController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/merge_requests_diffs.rb b/spec/frontend/fixtures/merge_requests_diffs.rb index b633a0495a618c923b026d54557062fb3e9b091f..9493cba03bbc199f1303843914754b97893ac882 100644 --- a/spec/frontend/fixtures/merge_requests_diffs.rb +++ b/spec/frontend/fixtures/merge_requests_diffs.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::MergeRequests::DiffsController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/pipeline_schedules.rb b/spec/frontend/fixtures/pipeline_schedules.rb index a70091a3919022a0de7e88a184f63c932bed5b8b..e00a35d53622f9155b84bf59011bf3199c9412ae 100644 --- a/spec/frontend/fixtures/pipeline_schedules.rb +++ b/spec/frontend/fixtures/pipeline_schedules.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::PipelineSchedulesController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/pipelines.rb b/spec/frontend/fixtures/pipelines.rb index ed57eb0aa80b755dcf1e787c7ce673140bec277d..83fc13af7d34ebe61b640071d7121e7a2ad15bc8 100644 --- a/spec/frontend/fixtures/pipelines.rb +++ b/spec/frontend/fixtures/pipelines.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::PipelinesController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/projects.rb b/spec/frontend/fixtures/projects.rb index 91e3b65215a3d07e44a5215ffcd3e4f46b239b34..af5b70fbbeb79fb16b583ff72af3d255548dccab 100644 --- a/spec/frontend/fixtures/projects.rb +++ b/spec/frontend/fixtures/projects.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe 'Projects (JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/prometheus_service.rb b/spec/frontend/fixtures/prometheus_service.rb index 93ee81120d7c181422f2a99c8e038268026ac1dc..c404b8260d2a99a7de7058959d5d88887e24b54a 100644 --- a/spec/frontend/fixtures/prometheus_service.rb +++ b/spec/frontend/fixtures/prometheus_service.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::ServicesController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/raw.rb b/spec/frontend/fixtures/raw.rb index 801c80a011236df0cc7b68c90456ea6a072d761f..9c9fa4ec40b00410ab7854437c6a6515bc790cd2 100644 --- a/spec/frontend/fixtures/raw.rb +++ b/spec/frontend/fixtures/raw.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe 'Raw files', '(JavaScript fixtures)' do diff --git a/spec/frontend/fixtures/search.rb b/spec/frontend/fixtures/search.rb index c26c6998ae9b0d5d5b0272f42ec64ebd6162d7b4..025cc53c7450fc9aed2ef93637dc039a6b848cdb 100644 --- a/spec/frontend/fixtures/search.rb +++ b/spec/frontend/fixtures/search.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe SearchController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/services.rb b/spec/frontend/fixtures/services.rb index ee1e088f158bbbb56f147805535830fb482aa3b2..1b81a83ca49b07778e9dd07e60bd6ebbe3fdd18c 100644 --- a/spec/frontend/fixtures/services.rb +++ b/spec/frontend/fixtures/services.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe Projects::ServicesController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/sessions.rb b/spec/frontend/fixtures/sessions.rb index 18574ea06b50a97de9bbdf22009fc85b0115fa44..a4dc0aef79ce1bcac492e9848eb8ca61c661ef43 100644 --- a/spec/frontend/fixtures/sessions.rb +++ b/spec/frontend/fixtures/sessions.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe 'Sessions (JavaScript fixtures)' do diff --git a/spec/frontend/fixtures/snippet.rb b/spec/frontend/fixtures/snippet.rb index 23bcdb47ac6b720341c3d60d200a0b188cf20121..34a6fade9c9373844afe785febad6cd6814513c9 100644 --- a/spec/frontend/fixtures/snippet.rb +++ b/spec/frontend/fixtures/snippet.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe SnippetsController, '(JavaScript fixtures)', type: :controller do diff --git a/spec/frontend/fixtures/todos.rb b/spec/frontend/fixtures/todos.rb index a7c183d24140ad98375ce380cc0c9df636898232..e5bdb4998eda8229258b966ee4398ea11ed68679 100644 --- a/spec/frontend/fixtures/todos.rb +++ b/spec/frontend/fixtures/todos.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe 'Todos (JavaScript fixtures)' do diff --git a/spec/frontend/fixtures/u2f.rb b/spec/frontend/fixtures/u2f.rb index 8ecbc0390cd69fddeade570a4fa98e08f28c100a..dded6ce63804c62bf2d5dbb167450d8cc9b4dac7 100644 --- a/spec/frontend/fixtures/u2f.rb +++ b/spec/frontend/fixtures/u2f.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' context 'U2F' do