Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
c9bdf91993
commit
d35857c093
|
|
@ -1 +1 @@
|
|||
e9743661a588b99e51cf7f806eaaf137573e5c02
|
||||
64625df11e8add7e64cce44a47984512e5f42d72
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ export default {
|
|||
@close="closeDrawer"
|
||||
>
|
||||
<template #header>
|
||||
<h4 class="page-title gl-my-2">{{ __("What's new at GitLab") }}</h4>
|
||||
<h4 class="page-title gl-my-2">{{ __("What's new") }}</h4>
|
||||
</template>
|
||||
<template v-if="features.length">
|
||||
<gl-infinite-scroll
|
||||
|
|
|
|||
|
|
@ -76,6 +76,8 @@ module ServicesHelper
|
|||
end
|
||||
|
||||
def scoped_reset_integration_path(integration, group: nil)
|
||||
return '' unless integration.persisted?
|
||||
|
||||
if group.present?
|
||||
reset_group_settings_integration_path(group, integration)
|
||||
else
|
||||
|
|
@ -102,7 +104,7 @@ module ServicesHelper
|
|||
cancel_path: scoped_integrations_path,
|
||||
can_test: integration.can_test?.to_s,
|
||||
test_path: scoped_test_integration_path(integration),
|
||||
reset_path: reset_integration?(integration, group: group) ? scoped_reset_integration_path(integration, group: group) : ''
|
||||
reset_path: scoped_reset_integration_path(integration, group: group)
|
||||
}
|
||||
end
|
||||
|
||||
|
|
@ -126,10 +128,6 @@ module ServicesHelper
|
|||
!Gitlab.com?
|
||||
end
|
||||
|
||||
def reset_integration?(integration, group: nil)
|
||||
integration.persisted? && Feature.enabled?(:reset_integrations, group, type: :development)
|
||||
end
|
||||
|
||||
extend self
|
||||
|
||||
private
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Allow resetting group and instance level integrations
|
||||
merge_request: 51507
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
name: reset_integrations
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/47546
|
||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/283875
|
||||
milestone: '13.7'
|
||||
type: development
|
||||
group: group::ecosystem
|
||||
default_enabled: false
|
||||
|
|
@ -122,3 +122,9 @@ weights are used to determine the storage location the repository is created on.
|
|||
|
||||
Beginning with GitLab 8.13.4, multiple paths can be chosen. New repositories
|
||||
are randomly placed on one of the selected paths.
|
||||
|
||||
## Move a repository to a different repository path
|
||||
|
||||
To move a repository to a different repository path, use the
|
||||
[Project repository storage moves](../api/project_repository_storage_moves.md) API. Use
|
||||
the same process as [migrating existing repositories to Gitaly Cluster](gitaly/praefect.md#migrate-existing-repositories-to-gitaly-cluster).
|
||||
|
|
|
|||
|
|
@ -221,11 +221,3 @@ been necessary. These are:
|
|||
#### 10.0
|
||||
|
||||
- No breaking changes.
|
||||
|
||||
#### 9.0
|
||||
|
||||
- [CI variables renaming for GitLab 9.0](variables/deprecated_variables.md#gitlab-90-renamed-variables). Read about the
|
||||
deprecated CI variables and what you should use for GitLab 9.0+.
|
||||
- [New CI job permissions model](../user/project/new_ci_build_permissions_model.md).
|
||||
See what changed in GitLab 8.12 and how that affects your jobs.
|
||||
There's a new way to access your Git submodules and LFS objects in jobs.
|
||||
|
|
|
|||
|
|
@ -1,36 +1,8 @@
|
|||
---
|
||||
stage: Verify
|
||||
group: Continuous Integration
|
||||
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
|
||||
type: reference
|
||||
redirect_to: 'README.md'
|
||||
---
|
||||
|
||||
# Deprecated GitLab CI/CD variables
|
||||
This documentation page was removed. For information about variables, see [GitLab CI/CD environment variables](README.md)
|
||||
|
||||
Read through this document to learn what predefined variables
|
||||
were deprecated and their new references.
|
||||
|
||||
## GitLab 9.0 renamed variables
|
||||
|
||||
To follow conventions of naming across GitLab, and to further move away from the
|
||||
`build` term and toward `job`, some [CI/CD environment variables](README.md#predefined-environment-variables) were renamed for GitLab 9.0
|
||||
release.
|
||||
|
||||
Starting with GitLab 9.0, we have deprecated the `$CI_BUILD_*` variables. **You are
|
||||
strongly advised to use the new variables as we might remove the old ones in
|
||||
future GitLab releases.**
|
||||
|
||||
| 8.x name | 9.0+ name |
|
||||
| --------------------- |------------------------ |
|
||||
| `CI_BUILD_BEFORE_SHA` | `CI_COMMIT_BEFORE_SHA` |
|
||||
| `CI_BUILD_ID` | `CI_JOB_ID` |
|
||||
| `CI_BUILD_MANUAL` | `CI_JOB_MANUAL` |
|
||||
| `CI_BUILD_NAME` | `CI_JOB_NAME` |
|
||||
| `CI_BUILD_REF` | `CI_COMMIT_SHA` |
|
||||
| `CI_BUILD_REF_NAME` | `CI_COMMIT_REF_NAME` |
|
||||
| `CI_BUILD_REF_SLUG` | `CI_COMMIT_REF_SLUG` |
|
||||
| `CI_BUILD_REPO` | `CI_REPOSITORY_URL` |
|
||||
| `CI_BUILD_STAGE` | `CI_JOB_STAGE` |
|
||||
| `CI_BUILD_TAG` | `CI_COMMIT_TAG` |
|
||||
| `CI_BUILD_TOKEN` | `CI_JOB_TOKEN` |
|
||||
| `CI_BUILD_TRIGGERED` | `CI_PIPELINE_TRIGGERED` |
|
||||
<!-- This redirect file can be deleted after 2021-04-14. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
|
||||
|
|
|
|||
|
|
@ -14,9 +14,6 @@ Some of the predefined environment variables are available only if a minimum
|
|||
version of [GitLab Runner](https://docs.gitlab.com/runner/) is used. Consult the table below to find the
|
||||
version of GitLab Runner that's required.
|
||||
|
||||
In GitLab 9.0, some [variable were deprecated](deprecated_variables.md#gitlab-90-renamed-variables).
|
||||
You should ensure you are using the latest variables.
|
||||
|
||||
You can add a command to your `.gitlab-ci.yml` file to
|
||||
[output the values of all variables available for a job](README.md#list-all-environment-variables).
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ local machine, this is a simple way to get started:
|
|||
1. On your local machine, run `terraform init`, passing in the following options,
|
||||
replacing `<YOUR-STATE-NAME>`, `<YOUR-PROJECT-ID>`, `<YOUR-USERNAME>` and
|
||||
`<YOUR-ACCESS-TOKEN>` with the relevant values. This command initializes your
|
||||
Terraform state, and stores that state within your GitLab project. The name of
|
||||
Terraform state, and stores that state in your GitLab project. The name of
|
||||
your state can contain only uppercase and lowercase letters, decimal digits,
|
||||
hyphens, and underscores. This example uses `gitlab.com`:
|
||||
|
||||
|
|
@ -194,7 +194,7 @@ recommends encrypting plan output or modifying the project visibility settings.
|
|||
|
||||
### Example project
|
||||
|
||||
See [this reference project](https://gitlab.com/gitlab-org/configure/examples/gitlab-terraform-aws) using GitLab and Terraform to deploy a basic AWS EC2 within a custom VPC.
|
||||
See [this reference project](https://gitlab.com/gitlab-org/configure/examples/gitlab-terraform-aws) using GitLab and Terraform to deploy a basic AWS EC2 in a custom VPC.
|
||||
|
||||
## Using a GitLab managed Terraform state backend as a remote data source
|
||||
|
||||
|
|
@ -234,7 +234,7 @@ An example setup is shown below:
|
|||
}
|
||||
```
|
||||
|
||||
Outputs from the data source can now be referenced within your Terraform resources
|
||||
Outputs from the data source can now be referenced in your Terraform resources
|
||||
using `data.terraform_remote_state.example.outputs.<OUTPUT-NAME>`.
|
||||
|
||||
You need at least [developer access](../permissions.md) to the target project
|
||||
|
|
@ -340,40 +340,53 @@ commands will detect it and remind you to do so if necessary.
|
|||
```
|
||||
|
||||
If you type `yes`, it copies your state from the old location to the new
|
||||
location. You can then go back to running it from within GitLab CI.
|
||||
location. You can then go back to running it in GitLab CI/CD.
|
||||
|
||||
## Managing state files
|
||||
|
||||
NOTE:
|
||||
We are currently working on [providing a graphical interface for managing state files](https://gitlab.com/groups/gitlab-org/-/epics/4563).
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/273592) in GitLab 13.8.
|
||||
|
||||
Users with Developer and greater [permissions](../permissions.md) can view the
|
||||
state files attached to a project at **Operations > Terraform**. Users with
|
||||
Maintainer permissions can perform commands on the state files. The user interface
|
||||
contains these fields:
|
||||
|
||||

|
||||
|
||||
To list the state files attached to a project go to **Operations > Terraform**.
|
||||
- **Name**: The name of the environment, with a locked (**{lock}**) icon if the
|
||||
state file is locked.
|
||||
- **Pipeline**: A link to the most recent pipeline and its status.
|
||||
- **Details**: Information about when the state file was created or changed.
|
||||
- **Actions**: Actions you can take on the state file, including downloading,
|
||||
locking, unlocking, or [removing](#remove-a-state-file) the state file and versions:
|
||||
|
||||

|
||||

|
||||
|
||||
The list also includes an **Actions** column where you can download, lock or unlock, or remove each state file.
|
||||
NOTE:
|
||||
Additional improvements to the
|
||||
[graphical interface for managing state files](https://gitlab.com/groups/gitlab-org/-/epics/4563)
|
||||
are planned.
|
||||
|
||||
## Remove a state file
|
||||
|
||||
You can use the following options to remove a state file:
|
||||
Users with Maintainer and greater [permissions](../permissions.md) can use the
|
||||
following options to remove a state file:
|
||||
|
||||
1. GitLab REST API
|
||||
1. GitLab GraphQL API
|
||||
1. GitLab UI
|
||||
- **GitLab UI**: Go to **Operations > Terraform**. In the **Actions** column,
|
||||
click the vertical ellipsis (**{ellipsis_v}**) button and select
|
||||
**Remove state file and versions**.
|
||||
- **GitLab REST API**: You can remove a state file by making a request to the
|
||||
REST API. For example:
|
||||
|
||||
### Remove a state file with the GitLab REST API
|
||||
```shell
|
||||
curl --header "Private-Token: <your_access_token>" --request DELETE "https://gitlab.example.com/api/v4/projects/<your_project_id>/terraform/state/<your_state_name>"
|
||||
```
|
||||
|
||||
You can remove a state file by making a request to the REST API, for example:
|
||||
|
||||
```shell
|
||||
curl --header "Private-Token: <your_access_token>" --request DELETE "https://gitlab.example.com/api/v4/projects/<your_project_id>/terraform/state/<your_state_name>"
|
||||
```
|
||||
- [GitLab GraphQL API](#remove-a-state-file-with-the-gitlab-graphql-api).
|
||||
|
||||
### Remove a state file with the GitLab GraphQL API
|
||||
|
||||
You can remove a state file by making a GraphQL API request, for example:
|
||||
You can remove a state file by making a GraphQL API request. For example:
|
||||
|
||||
```shell
|
||||
mutation deleteState {
|
||||
|
|
@ -383,7 +396,7 @@ mutation deleteState {
|
|||
}
|
||||
```
|
||||
|
||||
You can obtain the `<global_id_for_the_state>` by querying the list of states. For example:
|
||||
You can obtain the `<global_id_for_the_state>` by querying the list of states:
|
||||
|
||||
```shell
|
||||
query ProjectTerraformStates {
|
||||
|
|
@ -398,11 +411,5 @@ query ProjectTerraformStates {
|
|||
}
|
||||
```
|
||||
|
||||
For those new to the GitLab GraphQL API, see [Getting started with GitLab GraphQL API](../../api/graphql/getting_started.md).
|
||||
|
||||
### Remove a state file with the GitLab UI
|
||||
|
||||
To delete a state file:
|
||||
|
||||
- From your project, go to **Operations > Terraform**.
|
||||
- In the **Actions** column, click on the vertical ellipsis (**{ellipsis_v}**) button and select **Remove state file and versions**.
|
||||
For those new to the GitLab GraphQL API, read
|
||||
[Getting started with GitLab GraphQL API](../../api/graphql/getting_started.md).
|
||||
|
|
|
|||
|
|
@ -72,10 +72,10 @@ It requires GitLab 11.11 or later, and GitLab Runner 11.5 or later. If you are u
|
|||
GitLab 11.4 or earlier, you can view the deprecated job definitions in the
|
||||
[documentation archive](https://docs.gitlab.com/12.10/ee/user/project/merge_requests/code_quality.html#previous-job-definitions).
|
||||
|
||||
First, you need GitLab Runner configured:
|
||||
- Using shared runners, the job should be configured For the [Docker-in-Docker workflow](../../../ci/docker/using_docker_build.md#use-the-docker-executor-with-the-docker-image-docker-in-docker).
|
||||
- Using private runners, there is an [alternative configuration](#set-up-a-private-runner-for-code-quality-without-docker-in-docker) recommended for running CodeQuality analysis more efficiently.
|
||||
|
||||
- For the [Docker-in-Docker workflow](../../../ci/docker/using_docker_build.md#use-the-docker-executor-with-the-docker-image-docker-in-docker).
|
||||
- With enough disk space to handle generated Code Quality files. For example on the [GitLab project](https://gitlab.com/gitlab-org/gitlab) the files are approximately 7 GB.
|
||||
In either configuration, the runner mmust have enough disk space to handle generated Code Quality files. For example on the [GitLab project](https://gitlab.com/gitlab-org/gitlab) the files are approximately 7 GB.
|
||||
|
||||
Once you set up GitLab Runner, include the Code Quality template in your CI configuration:
|
||||
|
||||
|
|
@ -140,6 +140,99 @@ definition they could execute privileged Docker commands on the runner
|
|||
host. Having proper access control policies mitigates this attack vector by
|
||||
allowing access only to trusted actors.
|
||||
|
||||
### Set up a private runner for code quality without Docker-in-Docker
|
||||
|
||||
It's possible to configure your own runners and avoid Docker-in-Docker. You can use a
|
||||
configuration that may greatly speed up job execution without requiring your runners
|
||||
to operate in privileged mode.
|
||||
|
||||
This alternative configuration uses socket binding to share the Runner's Docker daemon
|
||||
with the job environment. Be aware that this configuration [has significant considerations](../../../ci/docker/using_docker_build.md#use-docker-socket-binding)
|
||||
to be consider, but may be preferable depending on your use case.
|
||||
|
||||
1. Register a new runner:
|
||||
|
||||
```shell
|
||||
$ gitlab-runner register --executor "docker" \
|
||||
--docker-image="docker:stable" \
|
||||
--url "https://gitlab.com/" \
|
||||
--description "cq-sans-dind" \
|
||||
--tag-list "cq-sans-dind" \
|
||||
--locked="false" \
|
||||
--access-level="not_protected" \
|
||||
--docker-volumes "/cache"\
|
||||
--docker-volumes "/var/run/docker.sock:/var/run/docker.sock" \
|
||||
--registration-token="<project_token>" \
|
||||
--non-interactive
|
||||
```
|
||||
|
||||
1. **Optional, but recommended:** Set the builds directory to `/tmp/builds`,
|
||||
so job artifacts are periodically purged from the runner host. If you skip
|
||||
this step, you must clean up the default builds directory (`/builds`) yourself.
|
||||
You can do this by adding the following two flags to `gitlab-runner register`
|
||||
in the previous step.
|
||||
|
||||
```shell
|
||||
--builds-dir /tmp/builds
|
||||
--docker-volumes /tmp/builds:/tmp/builds
|
||||
```
|
||||
|
||||
The resulting configuration:
|
||||
|
||||
```toml
|
||||
[[runners]]
|
||||
name = "cq-sans-dind"
|
||||
url = "https://gitlab.com/"
|
||||
token = "<project_token>"
|
||||
executor = "docker"
|
||||
builds_dir = "/tmp/builds"
|
||||
[runners.docker]
|
||||
tls_verify = false
|
||||
image = "docker:stable"
|
||||
privileged = false
|
||||
disable_entrypoint_overwrite = false
|
||||
oom_kill_disable = false
|
||||
disable_cache = false
|
||||
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock", "/tmp/builds:/tmp/builds"]
|
||||
shm_size = 0
|
||||
[runners.cache]
|
||||
[runners.cache.s3]
|
||||
[runners.cache.gcs]
|
||||
```
|
||||
|
||||
1. Apply two overrides to the `code_quality` job created by the template:
|
||||
|
||||
```yaml
|
||||
include:
|
||||
- template: Code-Quality.gitlab-ci.yml
|
||||
|
||||
code_quality:
|
||||
services: # Shut off Docker-in-Docker
|
||||
tags:
|
||||
- cq-sans-dind # Set this job to only run on our new specialized runner
|
||||
```
|
||||
|
||||
The end result is that:
|
||||
|
||||
- Privileged mode is not used.
|
||||
- Docker-in-Docker is not used.
|
||||
- Docker images, including all CodeClimate images, are cached, and not re-fetched for subsequent jobs.
|
||||
|
||||
With this configuration, the run time for a second pipeline is much shorter. For example
|
||||
this [small change](https://gitlab.com/drewcimino/test-code-quality-template/-/merge_requests/4/diffs?commit_id=1e705607aef7236c1b20bb6f637965f3f3e53a46)
|
||||
to an [open merge request](https://gitlab.com/drewcimino/test-code-quality-template/-/merge_requests/4/pipelines)
|
||||
running Code Quality analysis ran significantly faster the second time:
|
||||
|
||||

|
||||
|
||||
This configuration is not possible on `gitlab.com` shared runners. Shared runners
|
||||
are configured with `privileged=true`, and they do not expose `docker.sock` into
|
||||
the job container. As a result, socket binding cannot be used to make `docker` available
|
||||
in the context of the job script.
|
||||
|
||||
[Docker-in-Docker](../../../ci/docker/using_docker_build.md#use-the-docker-executor-with-the-docker-image-docker-in-docker)
|
||||
was chosen as an operational decision by the runner team, instead of exposing `docker.sock`.
|
||||
|
||||
### Disabling the code quality job
|
||||
|
||||
The `code_quality` job doesn't run if the `$CODE_QUALITY_DISABLED` environment
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
|
|
@ -25305,9 +25305,6 @@ msgstr ""
|
|||
msgid "See vulnerability %{vulnerability_link} for any Solution details."
|
||||
msgstr ""
|
||||
|
||||
msgid "See what's new at GitLab"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -31815,7 +31812,7 @@ msgstr ""
|
|||
msgid "What is your job title? (optional)"
|
||||
msgstr ""
|
||||
|
||||
msgid "What's new at GitLab"
|
||||
msgid "What's new"
|
||||
msgstr ""
|
||||
|
||||
msgid "What’s your experience level?"
|
||||
|
|
|
|||
|
|
@ -25,6 +25,10 @@ RSpec.describe ServicesHelper do
|
|||
:integration_level
|
||||
)
|
||||
end
|
||||
|
||||
specify do
|
||||
expect(subject[:reset_path]).to eq(helper.scoped_reset_integration_path(integration))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -47,52 +51,12 @@ RSpec.describe ServicesHelper do
|
|||
is_expected.to eq(reset_group_settings_integration_path(group, integration))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#reset_integration?' do
|
||||
let(:group) { nil }
|
||||
|
||||
subject { helper.reset_integration?(integration, group: group) }
|
||||
|
||||
context 'when integration is existing record' do
|
||||
let_it_be(:integration) { create(:jira_service) }
|
||||
|
||||
context 'when `reset_integrations` is not enabled' do
|
||||
it 'returns false' do
|
||||
stub_feature_flags(reset_integrations: false)
|
||||
|
||||
is_expected.to eq(false)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when `reset_integrations` is enabled' do
|
||||
it 'returns true' do
|
||||
stub_feature_flags(reset_integrations: true)
|
||||
|
||||
is_expected.to eq(true)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when `reset_integrations` is enabled for a group' do
|
||||
let(:group) { build_stubbed(:group) }
|
||||
|
||||
it 'returns true' do
|
||||
stub_feature_flags(reset_integrations: group)
|
||||
|
||||
is_expected.to eq(true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when integration is a new record' do
|
||||
context 'when a new integration is not persisted' do
|
||||
let_it_be(:integration) { build(:jira_service) }
|
||||
|
||||
context 'when `reset_integrations` is enabled' do
|
||||
it 'returns false' do
|
||||
stub_feature_flags(reset_integrations: true)
|
||||
|
||||
is_expected.to eq(false)
|
||||
end
|
||||
it 'returns an empty string' do
|
||||
is_expected.to eq('')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue