diff --git a/app/assets/javascripts/work_items/index.js b/app/assets/javascripts/work_items/index.js index 008f5e2a4b2..1874d8e4a73 100644 --- a/app/assets/javascripts/work_items/index.js +++ b/app/assets/javascripts/work_items/index.js @@ -42,6 +42,7 @@ export const initWorkItemsRoot = ({ workItemType, workspaceType, withTabs } = {} hasOkrsFeature, hasSubepicsFeature, hasIssuableHealthStatusFeature, + hasCustomFieldsFeature, newCommentTemplatePaths, reportAbusePath, defaultBranch, @@ -113,6 +114,7 @@ export const initWorkItemsRoot = ({ workItemType, workspaceType, withTabs } = {} signInPath, hasIterationsFeature: parseBoolean(hasIterationsFeature), hasIssuableHealthStatusFeature: parseBoolean(hasIssuableHealthStatusFeature), + hasCustomFieldsFeature: parseBoolean(hasCustomFieldsFeature), reportAbusePath, groupPath, groupId, diff --git a/app/assets/javascripts/work_items/pages/work_items_list_app.vue b/app/assets/javascripts/work_items/pages/work_items_list_app.vue index 3b9aa833044..39cb1cc6907 100644 --- a/app/assets/javascripts/work_items/pages/work_items_list_app.vue +++ b/app/assets/javascripts/work_items/pages/work_items_list_app.vue @@ -82,6 +82,7 @@ import DateToken from '~/vue_shared/components/filtered_search_bar/tokens/date_t import IssuableList from '~/vue_shared/issuable/list/components/issuable_list_root.vue'; import { DEFAULT_PAGE_SIZE, issuableListTabs } from '~/vue_shared/issuable/list/constants'; import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; +import getWorkItemStateCountsQuery from 'ee_else_ce/work_items/graphql/list/get_work_item_state_counts.query.graphql'; import CreateWorkItemModal from '../components/create_work_item_modal.vue'; import WorkItemHealthStatus from '../components/work_item_health_status.vue'; import WorkItemDrawer from '../components/work_item_drawer.vue'; @@ -97,7 +98,6 @@ import { WORK_ITEM_TYPE_NAME_KEY_RESULT, WORK_ITEM_TYPE_NAME_OBJECTIVE, } from '../constants'; -import getWorkItemStateCountsQuery from '../graphql/list/get_work_item_state_counts.query.graphql'; import getWorkItemsQuery from '../graphql/list/get_work_items.query.graphql'; import { sortOptions, urlSortParams } from './list/constants'; @@ -145,6 +145,7 @@ export default { 'hasIssueDateFilterFeature', 'hasOkrsFeature', 'hasQualityManagementFeature', + 'hasCustomFieldsFeature', 'initialSort', 'isGroup', 'isSignedIn', @@ -333,7 +334,9 @@ export default { return BASE_ALLOWED_CREATE_TYPES; }, apiFilterParams() { - return convertToApiParams(this.filterTokens); + return convertToApiParams(this.filterTokens, { + hasCustomFieldsFeature: this.hasCustomFieldsFeature, + }); }, defaultWorkItemTypes() { return getDefaultWorkItemTypes({ @@ -611,7 +614,9 @@ export default { }); }, urlFilterParams() { - return convertToUrlParams(this.filterTokens); + return convertToUrlParams(this.filterTokens, { + hasCustomFieldsFeature: this.hasCustomFieldsFeature, + }); }, urlParams() { return { @@ -874,6 +879,7 @@ export default { this.filterTokens = getFilterTokens(window.location.search, { includeStateToken: !this.withTabs, + hasCustomFieldsFeature: this.hasCustomFieldsFeature, }); if (!this.hasStateToken && this.state === STATUS_ALL) { this.filterTokens = this.filterTokens.filter( diff --git a/doc/administration/application_settings_cache.md b/doc/administration/application_settings_cache.md index b083fa4337d..2ed92b696b4 100644 --- a/doc/administration/application_settings_cache.md +++ b/doc/administration/application_settings_cache.md @@ -1,6 +1,6 @@ --- -stage: Systems -group: Cloud Connector +stage: None +group: Unassigned info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments title: Application cache interval --- diff --git a/doc/development/cells/_index.md b/doc/development/cells/_index.md index 72fbe753e6f..b006083a2ae 100644 --- a/doc/development/cells/_index.md +++ b/doc/development/cells/_index.md @@ -64,9 +64,12 @@ to think about: ## Static data -Problem: A clusterwide database table is used to store static data. -But, the primary key of the table is used as a global reference. -This primary key is not globally consistent which creates problems. +Problem: A database table is used to store static data. +However, the primary key is not static because it uses an auto-incrementing sequence. +This means the primary key is not globally consistent. + +References to this inconsistent primary key will create problems because the +reference clashes across cells / organizations. Example: The `plans` table on a given Cell has the following data: diff --git a/doc/development/pry_debugging.md b/doc/development/pry_debugging.md index e01d3c627a1..c663a280f9a 100644 --- a/doc/development/pry_debugging.md +++ b/doc/development/pry_debugging.md @@ -23,7 +23,7 @@ If needed, `binding.irb` can be used instead with a more limited feature set. {{< /alert >}} -## `byebug` vs `binding.pry` vs `binding.irb` +## `byebug` vs `binding.irb` vs `binding.pry` `byebug` has a very similar interface as `gdb`, but `byebug` does not use the powerful Pry REPL. @@ -39,6 +39,12 @@ Check out [the docs](https://github.com/deivid-rodriguez/byebug) for the full li You can start the Pry REPL with the `pry` command. +## `binding.irb` + +As of Ruby 2.7, IRB ships with a simple interactive debugger. + +Check out [the docs](https://ruby-doc.org/stdlib-2.7.0/libdoc/irb/rdoc/Binding.html) for more. + ## `pry` There are **a lot** of features present in `pry`, too much to cover in @@ -47,12 +53,6 @@ this document, so for the full documentation head over to the [Pry wiki](https:/ Below are a few features definitely worth checking out, also run `help` in a pry session to see what else you can do. -## `binding.irb` - -As of Ruby 2.7, IRB ships with a simple interactive debugger. - -Check out [the docs](https://ruby-doc.org/stdlib-2.7.0/libdoc/irb/rdoc/Binding.html) for more. - ### State navigation With the [state navigation](https://github.com/pry/pry/wiki/State-navigation) @@ -98,7 +98,7 @@ Similar to source browsing, is [Documentation browsing](https://github.com/pry/p With Control + R you can search your [command history](https://github.com/pry/pry/wiki/History). -## Stepping +### Stepping To step through the code, you can use the following commands: @@ -110,7 +110,7 @@ To step through the code, you can use the following commands: - `finish`: Execute until current stack frame returns. - `continue`: Continue program execution and end the Pry session. -## Callstack navigation +### Callstack navigation You also can move around in the callstack with these commands: @@ -123,7 +123,7 @@ You also can move around in the callstack with these commands: - `frame `: Moves to a specific frame. Called without arguments displays the current frame. -## Short commands +### Short commands When you use `binding.pry` instead of `byebug`, the short commands like `s`, `n`, `f`, and `c` do not work. To reinstall them, add this @@ -138,7 +138,7 @@ if defined?(PryByebug) end ``` -## Repeat last command +### Repeat last command You can repeat the last command by just hitting the Enter key (for example, with `step` or`next`), if you place the following snippet diff --git a/doc/user/application_security/sast/_index.md b/doc/user/application_security/sast/_index.md index 5bf4cde1936..8985918b77e 100644 --- a/doc/user/application_security/sast/_index.md +++ b/doc/user/application_security/sast/_index.md @@ -934,28 +934,28 @@ The following are Docker image-related CI/CD variables. Some analyzers can be customized with CI/CD variables. -| CI/CD variable | Analyzer | Default | Description | -|-------------------------------------|----------------------|-------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `GITLAB_ADVANCED_SAST_ENABLED` | GitLab Advanced SAST | `false` | Set to `true` to enable [GitLab Advanced SAST](gitlab_advanced_sast.md) scanning (available in GitLab Ultimate only). | -| `SCAN_KUBERNETES_MANIFESTS` | Kubesec | `"false"` | Set to `"true"` to scan Kubernetes manifests. | -| `KUBESEC_HELM_CHARTS_PATH` | Kubesec | | Optional path to Helm charts that `helm` uses to generate a Kubernetes manifest that `kubesec` scans. If dependencies are defined, `helm dependency build` should be ran in a `before_script` to fetch the necessary dependencies. | -| `KUBESEC_HELM_OPTIONS` | Kubesec | | Additional arguments for the `helm` executable. | -| `COMPILE` | SpotBugs | `true` | Set to `false` to disable project compilation and dependency fetching. | -| `ANT_HOME` | SpotBugs | | The `ANT_HOME` variable. | -| `ANT_PATH` | SpotBugs | `ant` | Path to the `ant` executable. | -| `GRADLE_PATH` | SpotBugs | `gradle` | Path to the `gradle` executable. | -| `JAVA_OPTS` | SpotBugs | `-XX:MaxRAMPercentage=80` | Additional arguments for the `java` executable. | -| `JAVA_PATH` | SpotBugs | `java` | Path to the `java` executable. | -| `SAST_JAVA_VERSION` | SpotBugs | `8` for GitLab < 15
`17` for GitLab >= 15 | Which Java version to use. [Starting in GitLab 15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/352549), supported versions are `11` and `17`. Before GitLab 15.0, supported versions are `8` and `11`. | -| `MAVEN_CLI_OPTS` | SpotBugs | `--batch-mode -DskipTests=true` | Additional arguments for the `mvn` or `mvnw` executable. | -| `MAVEN_PATH` | SpotBugs | `mvn` | Path to the `mvn` executable. | -| `MAVEN_REPO_PATH` | SpotBugs | `$HOME/.m2/repository` | Path to the Maven local repository (shortcut for the `maven.repo.local` property). | -| `SBT_PATH` | SpotBugs | `sbt` | Path to the `sbt` executable. | -| `FAIL_NEVER` | SpotBugs | `false` | Set to `true` or `1` to ignore compilation failure. | -| `SAST_SEMGREP_METRICS` | Semgrep | `true` | Set to `false` to disable sending anonymized scan metrics to [r2c](https://semgrep.dev). | +| CI/CD variable | Analyzer | Default | Description | +|-------------------------------------|----------------------|-------------------------------------------------|-------------| +| `GITLAB_ADVANCED_SAST_ENABLED` | GitLab Advanced SAST | `false` | Set to `true` to enable [GitLab Advanced SAST](gitlab_advanced_sast.md) scanning (available in GitLab Ultimate only). | +| `SCAN_KUBERNETES_MANIFESTS` | Kubesec | `"false"` | Set to `"true"` to scan Kubernetes manifests. | +| `KUBESEC_HELM_CHARTS_PATH` | Kubesec | | Optional path to Helm charts that `helm` uses to generate a Kubernetes manifest that `kubesec` scans. If dependencies are defined, `helm dependency build` should be ran in a `before_script` to fetch the necessary dependencies. | +| `KUBESEC_HELM_OPTIONS` | Kubesec | | Additional arguments for the `helm` executable. | +| `COMPILE` | SpotBugs | `true` | Set to `false` to disable project compilation and dependency fetching. | +| `ANT_HOME` | SpotBugs | | The `ANT_HOME` variable. | +| `ANT_PATH` | SpotBugs | `ant` | Path to the `ant` executable. | +| `GRADLE_PATH` | SpotBugs | `gradle` | Path to the `gradle` executable. | +| `JAVA_OPTS` | SpotBugs | `-XX:MaxRAMPercentage=80` | Additional arguments for the `java` executable. | +| `JAVA_PATH` | SpotBugs | `java` | Path to the `java` executable. | +| `SAST_JAVA_VERSION` | SpotBugs | `8` for GitLab < 15
`17` for GitLab >= 15 | Which Java version to use. [Starting in GitLab 15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/352549), supported versions are `11` and `17`. Before GitLab 15.0, supported versions are `8` and `11`. | +| `MAVEN_CLI_OPTS` | SpotBugs | `--batch-mode -DskipTests=true` | Additional arguments for the `mvn` or `mvnw` executable. | +| `MAVEN_PATH` | SpotBugs | `mvn` | Path to the `mvn` executable. | +| `MAVEN_REPO_PATH` | SpotBugs | `$HOME/.m2/repository` | Path to the Maven local repository (shortcut for the `maven.repo.local` property). | +| `SBT_PATH` | SpotBugs | `sbt` | Path to the `sbt` executable. | +| `FAIL_NEVER` | SpotBugs | `false` | Set to `true` or `1` to ignore compilation failure. | +| `SAST_SEMGREP_METRICS` | Semgrep | `true` | Set to `false` to disable sending anonymized scan metrics to [r2c](https://semgrep.dev). | | `SAST_SCANNER_ALLOWED_CLI_OPTS` | Semgrep | `--max-target-bytes=1000000 --timeout=5` | CLI options (arguments with value, or flags) that are passed to the underlying security scanner when running scan operation. Only a limited set of [options](#security-scanner-configuration) are accepted. Separate a CLI option and its value using either a blank space or equals (`=`) character. For example: `name1 value1` or `name1=value1`. Multiple options must be separated by blank spaces. For example: `name1 value1 name2 value2`. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/368565) in GitLab 15.3. | -| `SAST_RULESET_GIT_REFERENCE` | All | | Defines a path to a custom ruleset configuration. If a project has a `.gitlab/sast-ruleset.toml` file committed, that local configuration takes precedence and the file from `SAST_RULESET_GIT_REFERENCE` isn't used. This variable is available for the Ultimate tier only. | -| `SECURE_ENABLE_LOCAL_CONFIGURATION` | All | `false` | Enables the option to use custom ruleset configuration. If `SECURE_ENABLE_LOCAL_CONFIGURATION` is set to `false`, the project's custom ruleset configuration file at `.gitlab/sast-ruleset.toml` is ignored and the file from `SAST_RULESET_GIT_REFERENCE` or the default configuration takes precedence. | +| `SAST_RULESET_GIT_REFERENCE` | All | | Defines a path to a custom ruleset configuration. If a project has a `.gitlab/sast-ruleset.toml` file committed, that local configuration takes precedence and the file from `SAST_RULESET_GIT_REFERENCE` isn't used. This variable is available for the Ultimate tier only. | +| `SECURE_ENABLE_LOCAL_CONFIGURATION` | All | `false` | Enables the option to use custom ruleset configuration. If `SECURE_ENABLE_LOCAL_CONFIGURATION` is set to `false`, the project's custom ruleset configuration file at `.gitlab/sast-ruleset.toml` is ignored and the file from `SAST_RULESET_GIT_REFERENCE` or the default configuration takes precedence. | #### Security scanner configuration diff --git a/spec/frontend/work_items/list/components/work_items_list_app_spec.js b/spec/frontend/work_items/list/components/work_items_list_app_spec.js index 29e18323590..3c3dbe14f56 100644 --- a/spec/frontend/work_items/list/components/work_items_list_app_spec.js +++ b/spec/frontend/work_items/list/components/work_items_list_app_spec.js @@ -48,7 +48,7 @@ import IssuableList from '~/vue_shared/issuable/list/components/issuable_list_ro import CreateWorkItemModal from '~/work_items/components/create_work_item_modal.vue'; import WorkItemsListApp from '~/work_items/pages/work_items_list_app.vue'; import { sortOptions, urlSortParams } from '~/work_items/pages/list/constants'; -import getWorkItemStateCountsQuery from '~/work_items/graphql/list/get_work_item_state_counts.query.graphql'; +import getWorkItemStateCountsQuery from 'ee_else_ce/work_items/graphql/list/get_work_item_state_counts.query.graphql'; import getWorkItemsQuery from '~/work_items/graphql/list/get_work_items.query.graphql'; import WorkItemDrawer from '~/work_items/components/work_item_drawer.vue'; import { @@ -143,6 +143,7 @@ describeSkipVue3(skipReason, () => { hasGroupBulkEditFeature: true, hasOkrsFeature: false, hasQualityManagementFeature: false, + hasCustomFieldsFeature: false, initialSort: CREATED_DESC, isGroup: true, isSignedIn: true,