Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
331eae9a3e
commit
b1159cdc7a
|
|
@ -12,7 +12,7 @@ import {
|
|||
GlFormInput,
|
||||
GlFormCheckboxGroup,
|
||||
} from '@gitlab/ui';
|
||||
import { partition, isString, unescape } from 'lodash';
|
||||
import { partition, isString, unescape, uniqueId } from 'lodash';
|
||||
import Api from '~/api';
|
||||
import ExperimentTracking from '~/experimentation/experiment_tracking';
|
||||
import { sanitize } from '~/lib/dompurify';
|
||||
|
|
@ -117,7 +117,7 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
visible: true,
|
||||
modalId: 'invite-members-modal',
|
||||
modalId: uniqueId('invite-members-modal-'),
|
||||
selectedAccessLevel: this.defaultAccessLevel,
|
||||
inviteeType: 'members',
|
||||
newUsersToInvite: [],
|
||||
|
|
@ -444,6 +444,7 @@ export default {
|
|||
:modal-id="modalId"
|
||||
size="sm"
|
||||
data-qa-selector="invite_members_modal_content"
|
||||
data-testid="invite-members-modal"
|
||||
:title="$options.labels[inviteeType].modalTitle"
|
||||
:header-close-label="$options.labels.headerCloseLabel"
|
||||
@hidden="resetFields"
|
||||
|
|
@ -597,21 +598,19 @@ export default {
|
|||
</div>
|
||||
|
||||
<template #modal-footer>
|
||||
<div class="gl-display-flex gl-flex-direction-row gl-justify-content-end gl-flex-wrap gl-m-0">
|
||||
<gl-button data-testid="cancel-button" @click="closeModal">
|
||||
{{ $options.labels.cancelButtonText }}
|
||||
</gl-button>
|
||||
<div class="gl-mr-3"></div>
|
||||
<gl-button
|
||||
:disabled="inviteDisabled"
|
||||
:loading="isLoading"
|
||||
variant="success"
|
||||
data-qa-selector="invite_button"
|
||||
data-testid="invite-button"
|
||||
@click="sendInvite"
|
||||
>{{ $options.labels.inviteButtonText }}</gl-button
|
||||
>
|
||||
</div>
|
||||
<gl-button data-testid="cancel-button" @click="closeModal">
|
||||
{{ $options.labels.cancelButtonText }}
|
||||
</gl-button>
|
||||
<gl-button
|
||||
:disabled="inviteDisabled"
|
||||
:loading="isLoading"
|
||||
variant="success"
|
||||
data-qa-selector="invite_button"
|
||||
data-testid="invite-button"
|
||||
@click="sendInvite"
|
||||
>
|
||||
{{ $options.labels.inviteButtonText }}
|
||||
</gl-button>
|
||||
</template>
|
||||
</gl-modal>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -6,6 +6,10 @@ import { parseBoolean } from '~/lib/utils/common_utils';
|
|||
Vue.use(GlToast);
|
||||
|
||||
export default function initInviteMembersModal() {
|
||||
// https://gitlab.com/gitlab-org/gitlab/-/issues/344955
|
||||
// bug lying in wait here for someone to put group and project invite in same screen
|
||||
// once that happens we'll need to mount these differently, perhaps split
|
||||
// group/project to each mount one, with many ways to open it.
|
||||
const el = document.querySelector('.js-invite-members-modal');
|
||||
|
||||
if (!el) {
|
||||
|
|
|
|||
|
|
@ -539,7 +539,6 @@ module Ci
|
|||
.concat(persisted_variables)
|
||||
.concat(dependency_proxy_variables)
|
||||
.concat(job_jwt_variables)
|
||||
.concat(kubernetes_variables)
|
||||
.concat(scoped_variables)
|
||||
.concat(job_variables)
|
||||
.concat(persisted_environment_variables)
|
||||
|
|
@ -1161,22 +1160,6 @@ module Ci
|
|||
end
|
||||
end
|
||||
|
||||
def kubernetes_variables
|
||||
::Gitlab::Ci::Variables::Collection.new.tap do |collection|
|
||||
# A cluster deployemnt may also define a KUBECONFIG variable, so to keep existing
|
||||
# configurations working we shouldn't overwrite it here.
|
||||
# This check will be removed when Cluster and Agent configurations are
|
||||
# merged in https://gitlab.com/gitlab-org/gitlab/-/issues/335089
|
||||
break collection if deployment&.deployment_cluster
|
||||
|
||||
template = ::Ci::GenerateKubeconfigService.new(self).execute # rubocop: disable CodeReuse/ServiceClass
|
||||
|
||||
if template.valid?
|
||||
collection.append(key: 'KUBECONFIG', value: template.to_yaml, public: false, file: true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def conditionally_allow_failure!(exit_code)
|
||||
return unless exit_code
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ module Ci
|
|||
variables.concat(project.predefined_variables)
|
||||
variables.concat(pipeline.predefined_variables)
|
||||
variables.concat(runner.predefined_variables) if runnable? && runner
|
||||
variables.concat(kubernetes_variables)
|
||||
variables.concat(deployment_variables(environment: environment))
|
||||
variables.concat(yaml_variables)
|
||||
variables.concat(user_variables)
|
||||
|
|
@ -88,6 +89,18 @@ module Ci
|
|||
end
|
||||
end
|
||||
|
||||
def kubernetes_variables
|
||||
::Gitlab::Ci::Variables::Collection.new.tap do |collection|
|
||||
# Should get merged with the cluster kubeconfig in deployment_variables, see
|
||||
# https://gitlab.com/gitlab-org/gitlab/-/issues/335089
|
||||
template = ::Ci::GenerateKubeconfigService.new(self).execute
|
||||
|
||||
if template.valid?
|
||||
collection.append(key: 'KUBECONFIG', value: template.to_yaml, public: false, file: true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def deployment_variables(environment:)
|
||||
return [] unless environment
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ class BlobPresenter < Gitlab::View::Presenter::Delegated
|
|||
Gitlab::Highlight.highlight(
|
||||
blob.path,
|
||||
transformed_blob_data,
|
||||
language: language,
|
||||
language: transformed_blob_language,
|
||||
plain: plain
|
||||
)
|
||||
end
|
||||
|
|
@ -120,6 +120,10 @@ class BlobPresenter < Gitlab::View::Presenter::Delegated
|
|||
blob.language_from_gitattributes
|
||||
end
|
||||
|
||||
def transformed_blob_language
|
||||
@transformed_blob_language ||= blob.path.ends_with?('.ipynb') ? 'md' : language
|
||||
end
|
||||
|
||||
def transformed_blob_data
|
||||
@transformed_blob ||= if blob.path.ends_with?('.ipynb')
|
||||
new_blob = IpynbDiff.transform(blob.data,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddContentValidationEndpointToApplicationSettings < Gitlab::Database::Migration[1.0]
|
||||
def up
|
||||
# rubocop:disable Migration/AddLimitToTextColumns
|
||||
add_column :application_settings, :content_validation_endpoint_url, :text, comment: 'JiHu-specific column'
|
||||
# rubocop:disable Migration/AddLimitToTextColumns
|
||||
|
||||
add_column :application_settings, :encrypted_content_validation_api_key, :binary, comment: 'JiHu-specific column'
|
||||
add_column :application_settings, :encrypted_content_validation_api_key_iv, :binary, comment: 'JiHu-specific column'
|
||||
add_column :application_settings, :content_validation_endpoint_enabled, :boolean, null: false, default: false, comment: 'JiHu-specific column'
|
||||
end
|
||||
|
||||
def down
|
||||
remove_column :application_settings, :content_validation_endpoint_url
|
||||
remove_column :application_settings, :encrypted_content_validation_api_key
|
||||
remove_column :application_settings, :encrypted_content_validation_api_key_iv
|
||||
remove_column :application_settings, :content_validation_endpoint_enabled
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddTextLimitToApplicationSettingsContentValidationEndpointUrl < Gitlab::Database::Migration[1.0]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_text_limit :application_settings, :content_validation_endpoint_url, 255
|
||||
end
|
||||
|
||||
def down
|
||||
remove_text_limit :application_settings, :content_validation_endpoint_url
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
5316cfddc074ae5a320ba763dd9481b46ba47d30eefa28d6bb5caa9368027598
|
||||
|
|
@ -0,0 +1 @@
|
|||
e7cf08543f911b5f95f08d4aa6063e05b026e463e71a65b6b8200191de1b02a1
|
||||
|
|
@ -10453,6 +10453,10 @@ CREATE TABLE application_settings (
|
|||
throttle_authenticated_deprecated_api_period_in_seconds integer DEFAULT 3600 NOT NULL,
|
||||
throttle_authenticated_deprecated_api_enabled boolean DEFAULT false NOT NULL,
|
||||
dependency_proxy_ttl_group_policy_worker_capacity smallint DEFAULT 2 NOT NULL,
|
||||
content_validation_endpoint_url text,
|
||||
encrypted_content_validation_api_key bytea,
|
||||
encrypted_content_validation_api_key_iv bytea,
|
||||
content_validation_endpoint_enabled boolean DEFAULT false NOT NULL,
|
||||
CONSTRAINT app_settings_container_reg_cleanup_tags_max_list_size_positive CHECK ((container_registry_cleanup_tags_service_max_list_size >= 0)),
|
||||
CONSTRAINT app_settings_dep_proxy_ttl_policies_worker_capacity_positive CHECK ((dependency_proxy_ttl_group_policy_worker_capacity >= 0)),
|
||||
CONSTRAINT app_settings_ext_pipeline_validation_service_url_text_limit CHECK ((char_length(external_pipeline_validation_service_url) <= 255)),
|
||||
|
|
@ -10463,6 +10467,7 @@ CREATE TABLE application_settings (
|
|||
CONSTRAINT check_2dba05b802 CHECK ((char_length(gitpod_url) <= 255)),
|
||||
CONSTRAINT check_51700b31b5 CHECK ((char_length(default_branch_name) <= 255)),
|
||||
CONSTRAINT check_57123c9593 CHECK ((char_length(help_page_documentation_base_url) <= 255)),
|
||||
CONSTRAINT check_5a84c3ffdc CHECK ((char_length(content_validation_endpoint_url) <= 255)),
|
||||
CONSTRAINT check_718b4458ae CHECK ((char_length(personal_access_token_prefix) <= 20)),
|
||||
CONSTRAINT check_7227fad848 CHECK ((char_length(rate_limiting_response_text) <= 255)),
|
||||
CONSTRAINT check_85a39b68ff CHECK ((char_length(encrypted_ci_jwt_signing_key_iv) <= 255)),
|
||||
|
|
@ -10476,6 +10481,14 @@ CREATE TABLE application_settings (
|
|||
CONSTRAINT check_ef6176834f CHECK ((char_length(encrypted_cloud_license_auth_token_iv) <= 255))
|
||||
);
|
||||
|
||||
COMMENT ON COLUMN application_settings.content_validation_endpoint_url IS 'JiHu-specific column';
|
||||
|
||||
COMMENT ON COLUMN application_settings.encrypted_content_validation_api_key IS 'JiHu-specific column';
|
||||
|
||||
COMMENT ON COLUMN application_settings.encrypted_content_validation_api_key_iv IS 'JiHu-specific column';
|
||||
|
||||
COMMENT ON COLUMN application_settings.content_validation_endpoint_enabled IS 'JiHu-specific column';
|
||||
|
||||
CREATE SEQUENCE application_settings_id_seq
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
|
|
|
|||
|
|
@ -1,129 +1,9 @@
|
|||
---
|
||||
stage: Verify
|
||||
group: Runner
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||
redirect_to: '../runner_cloud/linux_runner_cloud.md'
|
||||
remove_date: '2022-02-05'
|
||||
---
|
||||
|
||||
# Runner Cloud for Linux **(FREE)**
|
||||
This document was moved to [another location](../runner_cloud/linux_runner_cloud.md).
|
||||
|
||||
Runner Cloud runners for Linux run in autoscale mode and are powered by Google Cloud Platform.
|
||||
|
||||
Autoscaling means reduced queue times to spin up CI/CD jobs, and isolated VMs for each job, thus maximizing security. These shared runners are available on GitLab.com.
|
||||
|
||||
GitLab offers Ultimate tier capabilities and included CI/CD minutes per group per month for our [Open Source](https://about.gitlab.com/solutions/open-source/join/), [Education](https://about.gitlab.com/solutions/education/), and [Startups](https://about.gitlab.com/solutions/startups/) programs. For private projects, GitLab offers various [plans](https://about.gitlab.com/pricing/), starting with a Free tier.
|
||||
|
||||
All your CI/CD jobs run on [n1-standard-1 instances](https://cloud.google.com/compute/docs/machine-types) with 3.75GB of RAM, CoreOS and the latest Docker Engine
|
||||
installed. Instances provide 1 vCPU and 25GB of HDD disk space. The default
|
||||
region of the VMs is US East1.
|
||||
Each instance is used only for one job. This ensures that any sensitive data left on the system can't be accessed by other people's CI/CD jobs.
|
||||
|
||||
The `gitlab-shared-runners-manager-X.gitlab.com` fleet of runners are dedicated for GitLab projects as well as community forks of them. They use a slightly larger machine type (n1-standard-2) and have a bigger SSD disk size. They don't run untagged jobs and unlike the general fleet of shared runners, the instances are re-used up to 40 times.
|
||||
|
||||
Jobs handled by the shared runners on GitLab.com (`shared-runners-manager-X.gitlab.com`),
|
||||
**time out after 3 hours**, regardless of the timeout configured in a
|
||||
project. Check the issues [#4010](https://gitlab.com/gitlab-com/infrastructure/-/issues/4010) and [#4070](https://gitlab.com/gitlab-com/infrastructure/-/issues/4070) for the reference.
|
||||
|
||||
Below are the runners' settings.
|
||||
|
||||
| Setting | GitLab.com | Default |
|
||||
| ----------- | ----------------- | ---------- |
|
||||
| Executor | `docker+machine` | - |
|
||||
| Default Docker image | `ruby:2.5` | - |
|
||||
| `privileged` (run [Docker in Docker](https://hub.docker.com/_/docker/)) | `true` | `false` |
|
||||
|
||||
These runners share a [distributed cache](https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching) through use of a Google Cloud Storage (GCS) bucket. Cache contents not updated within the last 14 days are automatically removed through use of an [object lifecycle management policy](https://cloud.google.com/storage/docs/lifecycle).
|
||||
|
||||
## Pre-clone script
|
||||
|
||||
Build Cloud runners for Linux provide a way to run commands in a CI
|
||||
job before the runner attempts to run `git init` and `git fetch` to
|
||||
download a GitLab repository. The
|
||||
[`pre_clone_script`](https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runners-section)
|
||||
can be used for:
|
||||
|
||||
- Seeding the build directory with repository data
|
||||
- Sending a request to a server
|
||||
- Downloading assets from a CDN
|
||||
- Any other commands that must run before the `git init`
|
||||
|
||||
To use this feature, define a [CI/CD variable](../../../ci/variables/index.md#custom-cicd-variables) called
|
||||
`CI_PRE_CLONE_SCRIPT` that contains a bash script.
|
||||
|
||||
[This example](../../../development/pipelines.md#pre-clone-step)
|
||||
demonstrates how you might use a pre-clone step to seed the build
|
||||
directory.
|
||||
|
||||
NOTE:
|
||||
The `CI_PRE_CLONE_SCRIPT` variable does not work on Windows runners.
|
||||
|
||||
## `config.toml`
|
||||
|
||||
The full contents of our `config.toml` are:
|
||||
|
||||
NOTE:
|
||||
Settings that are not public are shown as `X`.
|
||||
|
||||
**Google Cloud Platform**
|
||||
|
||||
```toml
|
||||
concurrent = X
|
||||
check_interval = 1
|
||||
metrics_server = "X"
|
||||
sentry_dsn = "X"
|
||||
|
||||
[[runners]]
|
||||
name = "docker-auto-scale"
|
||||
request_concurrency = X
|
||||
url = "https://gitlab.com/"
|
||||
token = "SHARED_RUNNER_TOKEN"
|
||||
pre_clone_script = "eval \"$CI_PRE_CLONE_SCRIPT\""
|
||||
executor = "docker+machine"
|
||||
environment = [
|
||||
"DOCKER_DRIVER=overlay2",
|
||||
"DOCKER_TLS_CERTDIR="
|
||||
]
|
||||
limit = X
|
||||
[runners.docker]
|
||||
image = "ruby:2.5"
|
||||
privileged = true
|
||||
volumes = [
|
||||
"/certs/client",
|
||||
"/dummy-sys-class-dmi-id:/sys/class/dmi/id:ro" # Make kaniko builds work on GCP.
|
||||
]
|
||||
[runners.machine]
|
||||
IdleCount = 50
|
||||
IdleTime = 3600
|
||||
MaxBuilds = 1 # For security reasons we delete the VM after job has finished so it's not reused.
|
||||
MachineName = "srm-%s"
|
||||
MachineDriver = "google"
|
||||
MachineOptions = [
|
||||
"google-project=PROJECT",
|
||||
"google-disk-size=25",
|
||||
"google-machine-type=n1-standard-1",
|
||||
"google-username=core",
|
||||
"google-tags=gitlab-com,srm",
|
||||
"google-use-internal-ip",
|
||||
"google-zone=us-east1-d",
|
||||
"engine-opt=mtu=1460", # Set MTU for container interface, for more information check https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3214#note_82892928
|
||||
"google-machine-image=PROJECT/global/images/IMAGE",
|
||||
"engine-opt=ipv6", # This will create IPv6 interfaces in the containers.
|
||||
"engine-opt=fixed-cidr-v6=fc00::/7",
|
||||
"google-operation-backoff-initial-interval=2" # Custom flag from forked docker-machine, for more information check https://github.com/docker/machine/pull/4600
|
||||
]
|
||||
[[runners.machine.autoscaling]]
|
||||
Periods = ["* * * * * sat,sun *"]
|
||||
Timezone = "UTC"
|
||||
IdleCount = 70
|
||||
IdleTime = 3600
|
||||
[[runners.machine.autoscaling]]
|
||||
Periods = ["* 30-59 3 * * * *", "* 0-30 4 * * * *"]
|
||||
Timezone = "UTC"
|
||||
IdleCount = 700
|
||||
IdleTime = 3600
|
||||
[runners.cache]
|
||||
Type = "gcs"
|
||||
Shared = true
|
||||
[runners.cache.gcs]
|
||||
CredentialsFile = "/path/to/file"
|
||||
BucketName = "bucket-name"
|
||||
```
|
||||
<!-- This redirect file can be deleted after 2022-02-05. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
|
||||
|
|
|
|||
|
|
@ -1,43 +1,9 @@
|
|||
---
|
||||
stage: Verify
|
||||
group: Runner
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||
redirect_to: '../../runner_cloud/macos/environment.md'
|
||||
remove_date: '2022-02-05'
|
||||
---
|
||||
|
||||
# VM instances and images for Build Cloud for macOS **(FREE)**
|
||||
This document was moved to [another location](../../runner_cloud/macos/environment.md).
|
||||
|
||||
When you use the Build Cloud for macOS:
|
||||
|
||||
- Each of your jobs runs in a newly provisioned VM, which is dedicated to the specific job.
|
||||
- The VM is active only for the duration of the job and immediately deleted.
|
||||
|
||||
## VM types
|
||||
|
||||
The virtual machine where your job runs has `sudo` access with no password.
|
||||
For the Beta, there is only one available machine type, `gbc-macos-large`.
|
||||
|
||||
| Instance type | vCPUS | Memory (GB) |
|
||||
| --------- | --- | ------- |
|
||||
| `gbc-macos-large` | 4 | 10 |
|
||||
|
||||
## VM images
|
||||
|
||||
You can execute your build on one of the following images.
|
||||
You specify this image in your `.gitlab-ci.yml` file.
|
||||
|
||||
Each image is running a specific version of macOS and Xcode.
|
||||
|
||||
| VM image | Included software |
|
||||
|---------------------------|--------------------|
|
||||
| macos-10.13-xcode-7 | <https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/main/toolchain/high-sierra.yml> |
|
||||
| macos-10.13-xcode-8 | <https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/main/toolchain/high-sierra.yml> |
|
||||
| macos-10.13-xcode-9 | <https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/main/toolchain/high-sierra.yml> |
|
||||
| macos-10.14-xcode-10 | <https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/main/toolchain/mojave.yml> |
|
||||
| macos-10.15-xcode-11 | <https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/main/toolchain/catalina.yml> |
|
||||
| macos-11-xcode-12 | <https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/main/toolchain/big-sur.yml> |
|
||||
|
||||
### Image update policy
|
||||
|
||||
- Support for new macOS versions is planned.
|
||||
- Additional details on the support policy and image update release process are documented
|
||||
[in this project](https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/55bf59c8fa88712960afff2bf6ecc5daa879a8f5/docs/overview.md#os-images).
|
||||
<!-- This redirect file can be deleted after 2022-02-05. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
|
||||
|
|
|
|||
|
|
@ -1,62 +1,9 @@
|
|||
---
|
||||
stage: Verify
|
||||
group: Runner
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||
redirect_to: '../runner_cloud/macos_runner_cloud.md'
|
||||
remove_date: '2022-02-05'
|
||||
---
|
||||
|
||||
# Runner Cloud for macOS (Beta) **(FREE SAAS)**
|
||||
This document was moved to [another location](../runner_cloud/macos_runner_cloud.md).
|
||||
|
||||
The Runner Cloud for macOS Beta provides on-demand runners integrated with GitLab SaaS [CI/CD](../../../ci/index.md).
|
||||
Use these runners to build, test, and deploy apps for the Apple ecosystem (macOS, iOS, tvOS). You can take advantage
|
||||
of all the capabilities of the GitLab single DevOps platform and not have to manage or operate a
|
||||
build environment.
|
||||
|
||||
Build Cloud runners for macOS are in [Beta](https://about.gitlab.com/handbook/product/gitlab-the-product/#beta)
|
||||
and shouldn't be relied upon for mission-critical production jobs.
|
||||
|
||||
## Quickstart
|
||||
|
||||
To start using Build Cloud for macOS Beta, you must submit an access request [issue](https://gitlab.com/gitlab-com/macos-buildcloud-runners-beta/-/issues/new?issuable_template=beta_access_request). After your
|
||||
access has been granted and your build environment configured, you must configure your
|
||||
`.gitlab-ci.yml` pipeline file:
|
||||
|
||||
1. Add a `.gitlab-ci.yml` file to your project repository.
|
||||
1. Specify the [image](macos/environment.md#vm-images) you want to use.
|
||||
1. Commit a change to your repository.
|
||||
|
||||
The runners automatically run your build.
|
||||
|
||||
## Example `.gitlab-ci.yml` file
|
||||
|
||||
The following sample `.gitlab-ci.yml` file shows how to start using the runners for macOS:
|
||||
|
||||
```yaml
|
||||
.macos_buildcloud_runners:
|
||||
tags:
|
||||
- shared-macos-amd64
|
||||
image: macos-11-xcode-12
|
||||
|
||||
stages:
|
||||
- build
|
||||
- test
|
||||
|
||||
before_script:
|
||||
- echo "started by ${GITLAB_USER_NAME}"
|
||||
|
||||
build:
|
||||
extends:
|
||||
- .macos_buildcloud_runners
|
||||
stage: build
|
||||
script:
|
||||
- echo "running scripts in the build job"
|
||||
|
||||
test:
|
||||
extends:
|
||||
- .macos_buildcloud_runners
|
||||
stage: test
|
||||
script:
|
||||
- echo "running scripts in the test job"
|
||||
```
|
||||
|
||||
NOTE:
|
||||
During the Beta period, the architecture of this solution will change. Rather than the jobs running on a specific VM instance, they will run on an ephemeral VM instance that is created by an autoscaling instance, known as the Runner Manager. We will notify all Beta participants of any downtime required to do this work.
|
||||
<!-- This redirect file can be deleted after 2022-02-05. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
|
||||
|
|
|
|||
|
|
@ -1,155 +1,9 @@
|
|||
---
|
||||
stage: Verify
|
||||
group: Runner
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||
redirect_to: '../runner_cloud/windows_runner_cloud.md'
|
||||
remove_date: '2022-02-05'
|
||||
---
|
||||
|
||||
# Runner Cloud for Windows (beta) **(FREE)**
|
||||
This document was moved to [another location](../runner_cloud/windows_runner_cloud.md).
|
||||
|
||||
Runner Cloud runners for Windows are in [beta](https://about.gitlab.com/handbook/product/gitlab-the-product/#beta)
|
||||
and shouldn't be used for production workloads.
|
||||
|
||||
During this beta period, the [shared runner pipeline quota](../../../user/admin_area/settings/continuous_integration.md#shared-runners-pipeline-minutes-quota)
|
||||
applies for groups and projects in the same manner as Linux runners. This may
|
||||
change when the beta period ends, as discussed in this [related issue](https://gitlab.com/gitlab-org/gitlab/-/issues/30834).
|
||||
|
||||
Windows runners on GitLab.com autoscale by launching virtual machines on
|
||||
the Google Cloud Platform. This solution uses an
|
||||
[autoscaling driver](https://gitlab.com/gitlab-org/ci-cd/custom-executor-drivers/autoscaler/tree/master/docs/readme.md)
|
||||
developed by GitLab for the [custom executor](https://docs.gitlab.com/runner/executors/custom.html).
|
||||
Windows runners execute your CI/CD jobs on `n1-standard-2` instances with
|
||||
2 vCPUs and 7.5 GB RAM. You can find a full list of available Windows packages in
|
||||
the [package documentation](https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/gcp/windows-containers/blob/main/cookbooks/preinstalled-software/README.md).
|
||||
|
||||
We want to keep iterating to get Windows runners in a stable state and
|
||||
[generally available](https://about.gitlab.com/handbook/product/gitlab-the-product/#generally-available-ga).
|
||||
You can follow our work towards this goal in the
|
||||
[related epic](https://gitlab.com/groups/gitlab-org/-/epics/2162).
|
||||
|
||||
## Configuration
|
||||
|
||||
The full contents of our `config.toml` are:
|
||||
|
||||
NOTE:
|
||||
Settings that aren't public are shown as `X`.
|
||||
|
||||
```toml
|
||||
concurrent = X
|
||||
check_interval = 3
|
||||
|
||||
[[runners]]
|
||||
name = "windows-runner"
|
||||
url = "https://gitlab.com/"
|
||||
token = "TOKEN"
|
||||
executor = "custom"
|
||||
builds_dir = "C:\\GitLab-Runner\\builds"
|
||||
cache_dir = "C:\\GitLab-Runner\\cache"
|
||||
shell = "powershell"
|
||||
[runners.custom]
|
||||
config_exec = "C:\\GitLab-Runner\\autoscaler\\autoscaler.exe"
|
||||
config_args = ["--config", "C:\\GitLab-Runner\\autoscaler\\config.toml", "custom", "config"]
|
||||
prepare_exec = "C:\\GitLab-Runner\\autoscaler\\autoscaler.exe"
|
||||
prepare_args = ["--config", "C:\\GitLab-Runner\\autoscaler\\config.toml", "custom", "prepare"]
|
||||
run_exec = "C:\\GitLab-Runner\\autoscaler\\autoscaler.exe"
|
||||
run_args = ["--config", "C:\\GitLab-Runner\\autoscaler\\config.toml", "custom", "run"]
|
||||
cleanup_exec = "C:\\GitLab-Runner\\autoscaler\\autoscaler.exe"
|
||||
cleanup_args = ["--config", "C:\\GitLab-Runner\\autoscaler\\config.toml", "custom", "cleanup"]
|
||||
```
|
||||
|
||||
The full contents of our `autoscaler/config.toml` are:
|
||||
|
||||
```toml
|
||||
Provider = "gcp"
|
||||
Executor = "winrm"
|
||||
OS = "windows"
|
||||
LogLevel = "info"
|
||||
LogFormat = "text"
|
||||
LogFile = "C:\\GitLab-Runner\\autoscaler\\autoscaler.log"
|
||||
VMTag = "windows"
|
||||
|
||||
[GCP]
|
||||
ServiceAccountFile = "PATH"
|
||||
Project = "some-project-df9323"
|
||||
Zone = "us-east1-c"
|
||||
MachineType = "n1-standard-2"
|
||||
Image = "IMAGE"
|
||||
DiskSize = 50
|
||||
DiskType = "pd-standard"
|
||||
Subnetwork = "default"
|
||||
Network = "default"
|
||||
Tags = ["TAGS"]
|
||||
Username = "gitlab_runner"
|
||||
|
||||
[WinRM]
|
||||
MaximumTimeout = 3600
|
||||
ExecutionMaxRetries = 0
|
||||
|
||||
[ProviderCache]
|
||||
Enabled = true
|
||||
Directory = "C:\\GitLab-Runner\\autoscaler\\machines"
|
||||
```
|
||||
|
||||
## Example `.gitlab-ci.yml` file
|
||||
|
||||
Below is a sample `.gitlab-ci.yml` file that shows how to start using the runners for Windows:
|
||||
|
||||
```yaml
|
||||
.shared_windows_runners:
|
||||
tags:
|
||||
- shared-windows
|
||||
- windows
|
||||
- windows-1809
|
||||
|
||||
stages:
|
||||
- build
|
||||
- test
|
||||
|
||||
before_script:
|
||||
- Set-Variable -Name "time" -Value (date -Format "%H:%m")
|
||||
- echo ${time}
|
||||
- echo "started by ${GITLAB_USER_NAME}"
|
||||
|
||||
build:
|
||||
extends:
|
||||
- .shared_windows_runners
|
||||
stage: build
|
||||
script:
|
||||
- echo "running scripts in the build job"
|
||||
|
||||
test:
|
||||
extends:
|
||||
- .shared_windows_runners
|
||||
stage: test
|
||||
script:
|
||||
- echo "running scripts in the test job"
|
||||
```
|
||||
|
||||
## Limitations and known issues
|
||||
|
||||
- All the limitations mentioned in our [beta
|
||||
definition](https://about.gitlab.com/handbook/product/#beta).
|
||||
- The average provisioning time for a new Windows VM is 5 minutes.
|
||||
This means that you may notice slower build start times
|
||||
on the Windows runner fleet during the beta. In a future
|
||||
release we intend to update the autoscaler to enable
|
||||
the pre-provisioning of virtual machines. This is intended to significantly reduce
|
||||
the time it takes to provision a VM on the Windows fleet. You can
|
||||
follow along in the [related issue](https://gitlab.com/gitlab-org/ci-cd/custom-executor-drivers/autoscaler/-/issues/32).
|
||||
- The Windows runner fleet may be unavailable occasionally
|
||||
for maintenance or updates.
|
||||
- The Windows runner virtual machine instances do not use the
|
||||
GitLab Docker executor. This means that you can't specify
|
||||
[`image`](../../../ci/yaml/index.md#image) or [`services`](../../../ci/yaml/index.md#services) in
|
||||
your pipeline configuration.
|
||||
- For the beta release, we have included a set of software packages in
|
||||
the base VM image. If your CI job requires additional software that's
|
||||
not included in this list, then you must add installation
|
||||
commands to [`before_script`](../../../ci/yaml/index.md#before_script) or [`script`](../../../ci/yaml/index.md#script) to install the required
|
||||
software. Note that each job runs on a new VM instance, so the
|
||||
installation of additional software packages needs to be repeated for
|
||||
each job in your pipeline.
|
||||
- The job may stay in a pending state for longer than the
|
||||
Linux runners.
|
||||
- There is the possibility that we introduce breaking changes which will
|
||||
require updates to pipelines that are using the Windows runner
|
||||
fleet.
|
||||
<!-- This redirect file can be deleted after 2022-02-05. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
|
||||
|
|
|
|||
|
|
@ -0,0 +1,129 @@
|
|||
---
|
||||
stage: Verify
|
||||
group: Runner
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||
---
|
||||
|
||||
# Runner Cloud for Linux **(FREE)**
|
||||
|
||||
Runner Cloud runners for Linux run in autoscale mode and are powered by Google Cloud Platform.
|
||||
|
||||
Autoscaling means reduced queue times to spin up CI/CD jobs, and isolated VMs for each job, thus maximizing security. These shared runners are available on GitLab.com.
|
||||
|
||||
GitLab offers Ultimate tier capabilities and included CI/CD minutes per group per month for our [Open Source](https://about.gitlab.com/solutions/open-source/join/), [Education](https://about.gitlab.com/solutions/education/), and [Startups](https://about.gitlab.com/solutions/startups/) programs. For private projects, GitLab offers various [plans](https://about.gitlab.com/pricing/), starting with a Free tier.
|
||||
|
||||
All your CI/CD jobs run on [n1-standard-1 instances](https://cloud.google.com/compute/docs/machine-types) with 3.75GB of RAM, CoreOS and the latest Docker Engine
|
||||
installed. Instances provide 1 vCPU and 25GB of HDD disk space. The default
|
||||
region of the VMs is US East1.
|
||||
Each instance is used only for one job. This ensures that any sensitive data left on the system can't be accessed by other people's CI/CD jobs.
|
||||
|
||||
The `gitlab-shared-runners-manager-X.gitlab.com` fleet of runners are dedicated for GitLab projects as well as community forks of them. They use a slightly larger machine type (n1-standard-2) and have a bigger SSD disk size. They don't run untagged jobs and unlike the general fleet of shared runners, the instances are re-used up to 40 times.
|
||||
|
||||
Jobs handled by the shared runners on GitLab.com (`shared-runners-manager-X.gitlab.com`),
|
||||
**time out after 3 hours**, regardless of the timeout configured in a
|
||||
project. Check the issues [#4010](https://gitlab.com/gitlab-com/infrastructure/-/issues/4010) and [#4070](https://gitlab.com/gitlab-com/infrastructure/-/issues/4070) for the reference.
|
||||
|
||||
Below are the runners' settings.
|
||||
|
||||
| Setting | GitLab.com | Default |
|
||||
| ----------- | ----------------- | ---------- |
|
||||
| Executor | `docker+machine` | - |
|
||||
| Default Docker image | `ruby:2.5` | - |
|
||||
| `privileged` (run [Docker in Docker](https://hub.docker.com/_/docker/)) | `true` | `false` |
|
||||
|
||||
These runners share a [distributed cache](https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching) through use of a Google Cloud Storage (GCS) bucket. Cache contents not updated within the last 14 days are automatically removed through use of an [object lifecycle management policy](https://cloud.google.com/storage/docs/lifecycle).
|
||||
|
||||
## Pre-clone script
|
||||
|
||||
Build Cloud runners for Linux provide a way to run commands in a CI
|
||||
job before the runner attempts to run `git init` and `git fetch` to
|
||||
download a GitLab repository. The
|
||||
[`pre_clone_script`](https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runners-section)
|
||||
can be used for:
|
||||
|
||||
- Seeding the build directory with repository data
|
||||
- Sending a request to a server
|
||||
- Downloading assets from a CDN
|
||||
- Any other commands that must run before the `git init`
|
||||
|
||||
To use this feature, define a [CI/CD variable](../../../ci/variables/index.md#custom-cicd-variables) called
|
||||
`CI_PRE_CLONE_SCRIPT` that contains a bash script.
|
||||
|
||||
[This example](../../../development/pipelines.md#pre-clone-step)
|
||||
demonstrates how you might use a pre-clone step to seed the build
|
||||
directory.
|
||||
|
||||
NOTE:
|
||||
The `CI_PRE_CLONE_SCRIPT` variable does not work on Windows runners.
|
||||
|
||||
## `config.toml`
|
||||
|
||||
The full contents of our `config.toml` are:
|
||||
|
||||
NOTE:
|
||||
Settings that are not public are shown as `X`.
|
||||
|
||||
**Google Cloud Platform**
|
||||
|
||||
```toml
|
||||
concurrent = X
|
||||
check_interval = 1
|
||||
metrics_server = "X"
|
||||
sentry_dsn = "X"
|
||||
|
||||
[[runners]]
|
||||
name = "docker-auto-scale"
|
||||
request_concurrency = X
|
||||
url = "https://gitlab.com/"
|
||||
token = "SHARED_RUNNER_TOKEN"
|
||||
pre_clone_script = "eval \"$CI_PRE_CLONE_SCRIPT\""
|
||||
executor = "docker+machine"
|
||||
environment = [
|
||||
"DOCKER_DRIVER=overlay2",
|
||||
"DOCKER_TLS_CERTDIR="
|
||||
]
|
||||
limit = X
|
||||
[runners.docker]
|
||||
image = "ruby:2.5"
|
||||
privileged = true
|
||||
volumes = [
|
||||
"/certs/client",
|
||||
"/dummy-sys-class-dmi-id:/sys/class/dmi/id:ro" # Make kaniko builds work on GCP.
|
||||
]
|
||||
[runners.machine]
|
||||
IdleCount = 50
|
||||
IdleTime = 3600
|
||||
MaxBuilds = 1 # For security reasons we delete the VM after job has finished so it's not reused.
|
||||
MachineName = "srm-%s"
|
||||
MachineDriver = "google"
|
||||
MachineOptions = [
|
||||
"google-project=PROJECT",
|
||||
"google-disk-size=25",
|
||||
"google-machine-type=n1-standard-1",
|
||||
"google-username=core",
|
||||
"google-tags=gitlab-com,srm",
|
||||
"google-use-internal-ip",
|
||||
"google-zone=us-east1-d",
|
||||
"engine-opt=mtu=1460", # Set MTU for container interface, for more information check https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3214#note_82892928
|
||||
"google-machine-image=PROJECT/global/images/IMAGE",
|
||||
"engine-opt=ipv6", # This will create IPv6 interfaces in the containers.
|
||||
"engine-opt=fixed-cidr-v6=fc00::/7",
|
||||
"google-operation-backoff-initial-interval=2" # Custom flag from forked docker-machine, for more information check https://github.com/docker/machine/pull/4600
|
||||
]
|
||||
[[runners.machine.autoscaling]]
|
||||
Periods = ["* * * * * sat,sun *"]
|
||||
Timezone = "UTC"
|
||||
IdleCount = 70
|
||||
IdleTime = 3600
|
||||
[[runners.machine.autoscaling]]
|
||||
Periods = ["* 30-59 3 * * * *", "* 0-30 4 * * * *"]
|
||||
Timezone = "UTC"
|
||||
IdleCount = 700
|
||||
IdleTime = 3600
|
||||
[runners.cache]
|
||||
Type = "gcs"
|
||||
Shared = true
|
||||
[runners.cache.gcs]
|
||||
CredentialsFile = "/path/to/file"
|
||||
BucketName = "bucket-name"
|
||||
```
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
---
|
||||
stage: Verify
|
||||
group: Runner
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||
---
|
||||
|
||||
# VM instances and images for Build Cloud for macOS **(FREE)**
|
||||
|
||||
When you use the Build Cloud for macOS:
|
||||
|
||||
- Each of your jobs runs in a newly provisioned VM, which is dedicated to the specific job.
|
||||
- The VM is active only for the duration of the job and immediately deleted.
|
||||
|
||||
## VM types
|
||||
|
||||
The virtual machine where your job runs has `sudo` access with no password.
|
||||
For the Beta, there is only one available machine type, `gbc-macos-large`.
|
||||
|
||||
| Instance type | vCPUS | Memory (GB) |
|
||||
| --------- | --- | ------- |
|
||||
| `gbc-macos-large` | 4 | 10 |
|
||||
|
||||
## VM images
|
||||
|
||||
You can execute your build on one of the following images.
|
||||
You specify this image in your `.gitlab-ci.yml` file.
|
||||
|
||||
Each image is running a specific version of macOS and Xcode.
|
||||
|
||||
| VM image | Included software |
|
||||
|---------------------------|--------------------|
|
||||
| macos-10.13-xcode-7 | <https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/main/toolchain/high-sierra.yml> |
|
||||
| macos-10.13-xcode-8 | <https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/main/toolchain/high-sierra.yml> |
|
||||
| macos-10.13-xcode-9 | <https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/main/toolchain/high-sierra.yml> |
|
||||
| macos-10.14-xcode-10 | <https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/main/toolchain/mojave.yml> |
|
||||
| macos-10.15-xcode-11 | <https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/main/toolchain/catalina.yml> |
|
||||
| macos-11-xcode-12 | <https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/main/toolchain/big-sur.yml> |
|
||||
|
||||
### Image update policy
|
||||
|
||||
- Support for new macOS versions is planned.
|
||||
- Additional details on the support policy and image update release process are documented
|
||||
[in this project](https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/macstadium/orka/-/blob/55bf59c8fa88712960afff2bf6ecc5daa879a8f5/docs/overview.md#os-images).
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
---
|
||||
stage: Verify
|
||||
group: Runner
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||
---
|
||||
|
||||
# Runner Cloud for macOS (Beta) **(FREE SAAS)**
|
||||
|
||||
The Runner Cloud for macOS Beta provides on-demand runners integrated with GitLab SaaS [CI/CD](../../../ci/index.md).
|
||||
Use these runners to build, test, and deploy apps for the Apple ecosystem (macOS, iOS, tvOS). You can take advantage
|
||||
of all the capabilities of the GitLab single DevOps platform and not have to manage or operate a
|
||||
build environment.
|
||||
|
||||
Build Cloud runners for macOS are in [Beta](https://about.gitlab.com/handbook/product/gitlab-the-product/#beta)
|
||||
and shouldn't be relied upon for mission-critical production jobs.
|
||||
|
||||
## Quickstart
|
||||
|
||||
To start using Build Cloud for macOS Beta, you must submit an access request [issue](https://gitlab.com/gitlab-com/macos-buildcloud-runners-beta/-/issues/new?issuable_template=beta_access_request). After your
|
||||
access has been granted and your build environment configured, you must configure your
|
||||
`.gitlab-ci.yml` pipeline file:
|
||||
|
||||
1. Add a `.gitlab-ci.yml` file to your project repository.
|
||||
1. Specify the [image](macos/environment.md#vm-images) you want to use.
|
||||
1. Commit a change to your repository.
|
||||
|
||||
The runners automatically run your build.
|
||||
|
||||
## Example `.gitlab-ci.yml` file
|
||||
|
||||
The following sample `.gitlab-ci.yml` file shows how to start using the runners for macOS:
|
||||
|
||||
```yaml
|
||||
.macos_buildcloud_runners:
|
||||
tags:
|
||||
- shared-macos-amd64
|
||||
image: macos-11-xcode-12
|
||||
|
||||
stages:
|
||||
- build
|
||||
- test
|
||||
|
||||
before_script:
|
||||
- echo "started by ${GITLAB_USER_NAME}"
|
||||
|
||||
build:
|
||||
extends:
|
||||
- .macos_buildcloud_runners
|
||||
stage: build
|
||||
script:
|
||||
- echo "running scripts in the build job"
|
||||
|
||||
test:
|
||||
extends:
|
||||
- .macos_buildcloud_runners
|
||||
stage: test
|
||||
script:
|
||||
- echo "running scripts in the test job"
|
||||
```
|
||||
|
||||
NOTE:
|
||||
During the Beta period, the architecture of this solution will change. Rather than the jobs running on a specific VM instance, they will run on an ephemeral VM instance that is created by an autoscaling instance, known as the Runner Manager. We will notify all Beta participants of any downtime required to do this work.
|
||||
|
|
@ -0,0 +1,155 @@
|
|||
---
|
||||
stage: Verify
|
||||
group: Runner
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
|
||||
---
|
||||
|
||||
# Runner Cloud for Windows (beta) **(FREE)**
|
||||
|
||||
Runner Cloud runners for Windows are in [beta](https://about.gitlab.com/handbook/product/gitlab-the-product/#beta)
|
||||
and shouldn't be used for production workloads.
|
||||
|
||||
During this beta period, the [shared runner pipeline quota](../../../user/admin_area/settings/continuous_integration.md#shared-runners-pipeline-minutes-quota)
|
||||
applies for groups and projects in the same manner as Linux runners. This may
|
||||
change when the beta period ends, as discussed in this [related issue](https://gitlab.com/gitlab-org/gitlab/-/issues/30834).
|
||||
|
||||
Windows runners on GitLab.com autoscale by launching virtual machines on
|
||||
the Google Cloud Platform. This solution uses an
|
||||
[autoscaling driver](https://gitlab.com/gitlab-org/ci-cd/custom-executor-drivers/autoscaler/tree/master/docs/readme.md)
|
||||
developed by GitLab for the [custom executor](https://docs.gitlab.com/runner/executors/custom.html).
|
||||
Windows runners execute your CI/CD jobs on `n1-standard-2` instances with
|
||||
2 vCPUs and 7.5 GB RAM. You can find a full list of available Windows packages in
|
||||
the [package documentation](https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/gcp/windows-containers/blob/main/cookbooks/preinstalled-software/README.md).
|
||||
|
||||
We want to keep iterating to get Windows runners in a stable state and
|
||||
[generally available](https://about.gitlab.com/handbook/product/gitlab-the-product/#generally-available-ga).
|
||||
You can follow our work towards this goal in the
|
||||
[related epic](https://gitlab.com/groups/gitlab-org/-/epics/2162).
|
||||
|
||||
## Configuration
|
||||
|
||||
The full contents of our `config.toml` are:
|
||||
|
||||
NOTE:
|
||||
Settings that aren't public are shown as `X`.
|
||||
|
||||
```toml
|
||||
concurrent = X
|
||||
check_interval = 3
|
||||
|
||||
[[runners]]
|
||||
name = "windows-runner"
|
||||
url = "https://gitlab.com/"
|
||||
token = "TOKEN"
|
||||
executor = "custom"
|
||||
builds_dir = "C:\\GitLab-Runner\\builds"
|
||||
cache_dir = "C:\\GitLab-Runner\\cache"
|
||||
shell = "powershell"
|
||||
[runners.custom]
|
||||
config_exec = "C:\\GitLab-Runner\\autoscaler\\autoscaler.exe"
|
||||
config_args = ["--config", "C:\\GitLab-Runner\\autoscaler\\config.toml", "custom", "config"]
|
||||
prepare_exec = "C:\\GitLab-Runner\\autoscaler\\autoscaler.exe"
|
||||
prepare_args = ["--config", "C:\\GitLab-Runner\\autoscaler\\config.toml", "custom", "prepare"]
|
||||
run_exec = "C:\\GitLab-Runner\\autoscaler\\autoscaler.exe"
|
||||
run_args = ["--config", "C:\\GitLab-Runner\\autoscaler\\config.toml", "custom", "run"]
|
||||
cleanup_exec = "C:\\GitLab-Runner\\autoscaler\\autoscaler.exe"
|
||||
cleanup_args = ["--config", "C:\\GitLab-Runner\\autoscaler\\config.toml", "custom", "cleanup"]
|
||||
```
|
||||
|
||||
The full contents of our `autoscaler/config.toml` are:
|
||||
|
||||
```toml
|
||||
Provider = "gcp"
|
||||
Executor = "winrm"
|
||||
OS = "windows"
|
||||
LogLevel = "info"
|
||||
LogFormat = "text"
|
||||
LogFile = "C:\\GitLab-Runner\\autoscaler\\autoscaler.log"
|
||||
VMTag = "windows"
|
||||
|
||||
[GCP]
|
||||
ServiceAccountFile = "PATH"
|
||||
Project = "some-project-df9323"
|
||||
Zone = "us-east1-c"
|
||||
MachineType = "n1-standard-2"
|
||||
Image = "IMAGE"
|
||||
DiskSize = 50
|
||||
DiskType = "pd-standard"
|
||||
Subnetwork = "default"
|
||||
Network = "default"
|
||||
Tags = ["TAGS"]
|
||||
Username = "gitlab_runner"
|
||||
|
||||
[WinRM]
|
||||
MaximumTimeout = 3600
|
||||
ExecutionMaxRetries = 0
|
||||
|
||||
[ProviderCache]
|
||||
Enabled = true
|
||||
Directory = "C:\\GitLab-Runner\\autoscaler\\machines"
|
||||
```
|
||||
|
||||
## Example `.gitlab-ci.yml` file
|
||||
|
||||
Below is a sample `.gitlab-ci.yml` file that shows how to start using the runners for Windows:
|
||||
|
||||
```yaml
|
||||
.shared_windows_runners:
|
||||
tags:
|
||||
- shared-windows
|
||||
- windows
|
||||
- windows-1809
|
||||
|
||||
stages:
|
||||
- build
|
||||
- test
|
||||
|
||||
before_script:
|
||||
- Set-Variable -Name "time" -Value (date -Format "%H:%m")
|
||||
- echo ${time}
|
||||
- echo "started by ${GITLAB_USER_NAME}"
|
||||
|
||||
build:
|
||||
extends:
|
||||
- .shared_windows_runners
|
||||
stage: build
|
||||
script:
|
||||
- echo "running scripts in the build job"
|
||||
|
||||
test:
|
||||
extends:
|
||||
- .shared_windows_runners
|
||||
stage: test
|
||||
script:
|
||||
- echo "running scripts in the test job"
|
||||
```
|
||||
|
||||
## Limitations and known issues
|
||||
|
||||
- All the limitations mentioned in our [beta
|
||||
definition](https://about.gitlab.com/handbook/product/#beta).
|
||||
- The average provisioning time for a new Windows VM is 5 minutes.
|
||||
This means that you may notice slower build start times
|
||||
on the Windows runner fleet during the beta. In a future
|
||||
release we intend to update the autoscaler to enable
|
||||
the pre-provisioning of virtual machines. This is intended to significantly reduce
|
||||
the time it takes to provision a VM on the Windows fleet. You can
|
||||
follow along in the [related issue](https://gitlab.com/gitlab-org/ci-cd/custom-executor-drivers/autoscaler/-/issues/32).
|
||||
- The Windows runner fleet may be unavailable occasionally
|
||||
for maintenance or updates.
|
||||
- The Windows runner virtual machine instances do not use the
|
||||
GitLab Docker executor. This means that you can't specify
|
||||
[`image`](../../../ci/yaml/index.md#image) or [`services`](../../../ci/yaml/index.md#services) in
|
||||
your pipeline configuration.
|
||||
- For the beta release, we have included a set of software packages in
|
||||
the base VM image. If your CI job requires additional software that's
|
||||
not included in this list, then you must add installation
|
||||
commands to [`before_script`](../../../ci/yaml/index.md#before_script) or [`script`](../../../ci/yaml/index.md#script) to install the required
|
||||
software. Note that each job runs on a new VM instance, so the
|
||||
installation of additional software packages needs to be repeated for
|
||||
each job in your pipeline.
|
||||
- The job may stay in a pending state for longer than the
|
||||
Linux runners.
|
||||
- There is the possibility that we introduce breaking changes which will
|
||||
require updates to pipelines that are using the Windows runner
|
||||
fleet.
|
||||
|
|
@ -814,7 +814,7 @@ We no longer use this optimization for `gitlab-org/gitlab` because the [pack-obj
|
|||
allows Gitaly to serve the full CI/CD fetch traffic now. See [Git fetch caching](#git-fetch-caching).
|
||||
|
||||
The pre-clone step works by using the `CI_PRE_CLONE_SCRIPT` variable
|
||||
[defined by GitLab.com shared runners](../ci/runners/build_cloud/linux_build_cloud.md#pre-clone-script).
|
||||
[defined by GitLab.com shared runners](../ci/runners/runner_cloud/linux_runner_cloud.md#pre-clone-script).
|
||||
|
||||
The `CI_PRE_CLONE_SCRIPT` is defined as a project CI/CD variable:
|
||||
|
||||
|
|
|
|||
|
|
@ -266,7 +266,10 @@ module Gitlab
|
|||
private
|
||||
|
||||
def ensure_caching!
|
||||
host.enable_query_cache! unless host.query_cache_enabled
|
||||
return unless Rails.application.executor.active?
|
||||
return if host.query_cache_enabled
|
||||
|
||||
host.enable_query_cache!
|
||||
end
|
||||
|
||||
def request_cache
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@ RSpec.describe Gitlab::Database::LoadBalancing::LoadBalancer, :request_store do
|
|||
host = double(:host)
|
||||
|
||||
allow(lb).to receive(:host).and_return(host)
|
||||
allow(Rails.application.executor).to receive(:active?).and_return(true)
|
||||
allow(host).to receive(:query_cache_enabled).and_return(false)
|
||||
allow(host).to receive(:connection).and_return(connection)
|
||||
|
||||
|
|
@ -97,6 +98,20 @@ RSpec.describe Gitlab::Database::LoadBalancing::LoadBalancer, :request_store do
|
|||
lb.read { 10 }
|
||||
end
|
||||
|
||||
it 'does not enable query cache when outside Rails executor context' do
|
||||
connection = double(:connection)
|
||||
host = double(:host)
|
||||
|
||||
allow(lb).to receive(:host).and_return(host)
|
||||
allow(Rails.application.executor).to receive(:active?).and_return(false)
|
||||
allow(host).to receive(:query_cache_enabled).and_return(false)
|
||||
allow(host).to receive(:connection).and_return(connection)
|
||||
|
||||
expect(host).not_to receive(:enable_query_cache!)
|
||||
|
||||
lb.read { 10 }
|
||||
end
|
||||
|
||||
it 'marks hosts that are offline' do
|
||||
allow(lb).to receive(:connection_error?).and_return(true)
|
||||
|
||||
|
|
|
|||
|
|
@ -51,6 +51,34 @@ RSpec.describe Gitlab::Diff::File do
|
|||
project.commit(branch_name).diffs.diff_files.first
|
||||
end
|
||||
|
||||
describe 'initialize' do
|
||||
context 'when file is ipynb' do
|
||||
let(:commit) { project.commit("f6b7a707") }
|
||||
let(:diff) { commit.raw_diffs.first }
|
||||
let(:diff_file) { described_class.new(diff, diff_refs: commit.diff_refs, repository: project.repository) }
|
||||
|
||||
context 'and :jupyter_clean_diffs is enabled' do
|
||||
before do
|
||||
stub_feature_flags(jupyter_clean_diffs: true)
|
||||
end
|
||||
|
||||
it 'recreates the diff by transforming the files' do
|
||||
expect(diff_file.diff.diff).not_to include('"| Fake')
|
||||
end
|
||||
end
|
||||
|
||||
context 'but :jupyter_clean_diffs is disabled' do
|
||||
before do
|
||||
stub_feature_flags(jupyter_clean_diffs: false)
|
||||
end
|
||||
|
||||
it 'does not recreate the diff' do
|
||||
expect(diff_file.diff.diff).to include('"| Fake')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#diff_lines' do
|
||||
let(:diff_lines) { diff_file.diff_lines }
|
||||
|
||||
|
|
|
|||
|
|
@ -3398,31 +3398,6 @@ RSpec.describe Ci::Build do
|
|||
|
||||
it { is_expected.to include(key: job_variable.key, value: job_variable.value, public: false, masked: false) }
|
||||
end
|
||||
|
||||
describe 'kubernetes variables' do
|
||||
let(:service) { double(execute: template) }
|
||||
let(:template) { double(to_yaml: 'example-kubeconfig', valid?: template_valid) }
|
||||
let(:template_valid) { true }
|
||||
|
||||
before do
|
||||
allow(Ci::GenerateKubeconfigService).to receive(:new).with(build).and_return(service)
|
||||
end
|
||||
|
||||
it { is_expected.to include(key: 'KUBECONFIG', value: 'example-kubeconfig', public: false, file: true) }
|
||||
|
||||
context 'job is deploying to a cluster' do
|
||||
let(:deployment) { create(:deployment, deployment_cluster: create(:deployment_cluster)) }
|
||||
let(:build) { create(:ci_build, pipeline: pipeline, deployment: deployment) }
|
||||
|
||||
it { is_expected.not_to include(key: 'KUBECONFIG', value: 'example-kubeconfig', public: false, file: true) }
|
||||
end
|
||||
|
||||
context 'generated config is invalid' do
|
||||
let(:template_valid) { false }
|
||||
|
||||
it { is_expected.not_to include(key: 'KUBECONFIG', value: 'example-kubeconfig', public: false, file: true) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#scoped_variables' do
|
||||
|
|
@ -3631,6 +3606,27 @@ RSpec.describe Ci::Build do
|
|||
include_examples "secret CI variables"
|
||||
end
|
||||
|
||||
describe '#kubernetes_variables' do
|
||||
let(:build) { create(:ci_build) }
|
||||
let(:service) { double(execute: template) }
|
||||
let(:template) { double(to_yaml: 'example-kubeconfig', valid?: template_valid) }
|
||||
let(:template_valid) { true }
|
||||
|
||||
subject { build.kubernetes_variables }
|
||||
|
||||
before do
|
||||
allow(Ci::GenerateKubeconfigService).to receive(:new).with(build).and_return(service)
|
||||
end
|
||||
|
||||
it { is_expected.to include(key: 'KUBECONFIG', value: 'example-kubeconfig', public: false, file: true) }
|
||||
|
||||
context 'generated config is invalid' do
|
||||
let(:template_valid) { false }
|
||||
|
||||
it { is_expected.not_to include(key: 'KUBECONFIG', value: 'example-kubeconfig', public: false, file: true) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#deployment_variables' do
|
||||
let(:build) { create(:ci_build, environment: environment) }
|
||||
let(:environment) { 'production' }
|
||||
|
|
|
|||
|
|
@ -121,6 +121,43 @@ RSpec.describe BlobPresenter do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#highlight_transformed' do
|
||||
context 'when blob is ipynb' do
|
||||
let(:blob) { repository.blob_at('f6b7a707', 'files/ipython/markdown-table.ipynb') }
|
||||
let(:git_blob) { blob.__getobj__ }
|
||||
|
||||
it 'uses md as the transformed language' do
|
||||
expect(Gitlab::Highlight).to receive(:highlight).with('files/ipython/markdown-table.ipynb', anything, plain: nil, language: 'md')
|
||||
|
||||
presenter.highlight_transformed
|
||||
end
|
||||
|
||||
it 'transforms the blob' do
|
||||
expect(Gitlab::Highlight).to receive(:highlight).with('files/ipython/markdown-table.ipynb', include("%%"), plain: nil, language: 'md')
|
||||
|
||||
presenter.highlight_transformed
|
||||
end
|
||||
end
|
||||
|
||||
context 'when blob is other file type' do
|
||||
let(:git_blob) { blob.__getobj__ }
|
||||
|
||||
before do
|
||||
allow(git_blob)
|
||||
.to receive(:data)
|
||||
.and_return("line one\nline two\nline 3")
|
||||
|
||||
allow(blob).to receive(:language_from_gitattributes).and_return('ruby')
|
||||
end
|
||||
|
||||
it 'does not transform the file' do
|
||||
expect(Gitlab::Highlight).to receive(:highlight).with('files/ruby/regex.rb', git_blob.data, plain: nil, language: 'ruby')
|
||||
|
||||
presenter.highlight_transformed
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#raw_plain_data' do
|
||||
let(:blob) { repository.blob_at('HEAD', file) }
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ module Spec
|
|||
def invite_member(name, role: 'Guest', expires_at: nil, area_of_focus: false)
|
||||
click_on 'Invite members'
|
||||
|
||||
page.within '#invite-members-modal' do
|
||||
page.within '[data-testid="invite-members-modal"]' do
|
||||
find('[data-testid="members-token-select-input"]').set(name)
|
||||
|
||||
wait_for_requests
|
||||
|
|
|
|||
Loading…
Reference in New Issue