diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml index 887f888567d..5b0c46e9d6e 100644 --- a/.rubocop_todo/layout/line_length.yml +++ b/.rubocop_todo/layout/line_length.yml @@ -5512,7 +5512,6 @@ Layout/LineLength: - 'spec/presenters/alert_management/alert_presenter_spec.rb' - 'spec/presenters/blob_presenter_spec.rb' - 'spec/presenters/blobs/notebook_presenter_spec.rb' - - 'spec/presenters/ci/legacy_stage_presenter_spec.rb' - 'spec/presenters/ci/pipeline_artifacts/code_quality_mr_diff_presenter_spec.rb' - 'spec/presenters/ci/pipeline_presenter_spec.rb' - 'spec/presenters/clusters/cluster_presenter_spec.rb' diff --git a/.rubocop_todo/rails/skips_model_validations.yml b/.rubocop_todo/rails/skips_model_validations.yml index af38961e597..3b13d010e0c 100644 --- a/.rubocop_todo/rails/skips_model_validations.yml +++ b/.rubocop_todo/rails/skips_model_validations.yml @@ -554,7 +554,6 @@ Rails/SkipsModelValidations: - 'spec/models/ci/build_dependencies_spec.rb' - 'spec/models/ci/build_spec.rb' - 'spec/models/ci/group_spec.rb' - - 'spec/models/ci/legacy_stage_spec.rb' - 'spec/models/ci/pipeline_schedule_spec.rb' - 'spec/models/ci/pipeline_spec.rb' - 'spec/models/ci/processable_spec.rb' diff --git a/.rubocop_todo/rspec/context_wording.yml b/.rubocop_todo/rspec/context_wording.yml index df12f49c0fe..bc0aa3a98d6 100644 --- a/.rubocop_todo/rspec/context_wording.yml +++ b/.rubocop_todo/rspec/context_wording.yml @@ -2620,7 +2620,6 @@ RSpec/ContextWording: - 'spec/models/ci/deleted_object_spec.rb' - 'spec/models/ci/job_artifact_spec.rb' - 'spec/models/ci/job_token/project_scope_link_spec.rb' - - 'spec/models/ci/legacy_stage_spec.rb' - 'spec/models/ci/namespace_mirror_spec.rb' - 'spec/models/ci/pending_build_spec.rb' - 'spec/models/ci/pipeline_artifact_spec.rb' diff --git a/.rubocop_todo/style/if_unless_modifier.yml b/.rubocop_todo/style/if_unless_modifier.yml index a264be5abeb..72b0eed397b 100644 --- a/.rubocop_todo/style/if_unless_modifier.yml +++ b/.rubocop_todo/style/if_unless_modifier.yml @@ -153,7 +153,6 @@ Style/IfUnlessModifier: - 'app/models/ci/build.rb' - 'app/models/ci/build_trace_chunk.rb' - 'app/models/ci/job_artifact.rb' - - 'app/models/ci/legacy_stage.rb' - 'app/models/ci/pipeline.rb' - 'app/models/ci/runner.rb' - 'app/models/ci/running_build.rb' diff --git a/.rubocop_todo/style/percent_literal_delimiters.yml b/.rubocop_todo/style/percent_literal_delimiters.yml index ff6bf1eb015..3cafeba93fd 100644 --- a/.rubocop_todo/style/percent_literal_delimiters.yml +++ b/.rubocop_todo/style/percent_literal_delimiters.yml @@ -79,7 +79,6 @@ Style/PercentLiteralDelimiters: - 'app/models/bulk_imports/file_transfer/project_config.rb' - 'app/models/ci/build.rb' - 'app/models/ci/build_runner_session.rb' - - 'app/models/ci/legacy_stage.rb' - 'app/models/ci/pipeline.rb' - 'app/models/clusters/applications/cert_manager.rb' - 'app/models/clusters/platforms/kubernetes.rb' diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index b9f5af4b2b2..fb8d337ddee 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -a46121713a40b8c30794009eb4c40864a089e5a6 +43cb85d43809733551d9ad682987d89a2f4afb36 diff --git a/Gemfile.lock b/Gemfile.lock index efd43a58e51..c0bedd9bb40 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -15,7 +15,7 @@ PATH specs: ipynbdiff (0.4.7) diffy (~> 3.3) - json (~> 2.5, >= 2.5.1) + oj (~> 3.13.16) PATH remote: vendor/gems/mail-smtp_pool diff --git a/app/assets/javascripts/ci_secure_files/components/secure_files_list.vue b/app/assets/javascripts/ci_secure_files/components/secure_files_list.vue index 0fb8539a48a..9d8cb40b60a 100644 --- a/app/assets/javascripts/ci_secure_files/components/secure_files_list.vue +++ b/app/assets/javascripts/ci_secure_files/components/secure_files_list.vue @@ -3,7 +3,6 @@ import { GlAlert, GlButton, GlIcon, - GlLink, GlLoadingIcon, GlModal, GlModalDirective, @@ -14,7 +13,6 @@ import { } from '@gitlab/ui'; import * as Sentry from '@sentry/browser'; import Api, { DEFAULT_PER_PAGE } from '~/api'; -import { helpPagePath } from '~/helpers/help_page_helper'; import httpStatusCodes from '~/lib/utils/http_status'; import { __, s__, sprintf } from '~/locale'; import Tracking from '~/tracking'; @@ -25,7 +23,6 @@ export default { GlAlert, GlButton, GlIcon, - GlLink, GlLoadingIcon, GlModal, GlPagination, @@ -39,21 +36,16 @@ export default { }, mixins: [Tracking.mixin()], inject: ['projectId', 'admin', 'fileSizeLimit'], - docsLink: helpPagePath('ci/secure_files/index'), DEFAULT_PER_PAGE, i18n: { deleteLabel: __('Delete File'), uploadLabel: __('Upload File'), uploadingLabel: __('Uploading...'), + noFilesMessage: __('There are no secure files yet.'), pagination: { next: __('Next'), prev: __('Prev'), }, - title: __('Secure Files'), - overviewMessage: __( - 'Use Secure Files to store files used by your pipelines such as Android keystores, or Apple provisioning profiles and signing certificates.', - ), - moreInformation: __('More information'), uploadErrorMessages: { duplicate: __('A file with this name already exists.'), tooLarge: __('File too large. Secure Files must be less than %{limit} MB.'), @@ -81,12 +73,12 @@ export default { fields: [ { key: 'name', - label: __('Filename'), + label: __('File name'), tdClass: 'gl-vertical-align-middle!', }, { key: 'created_at', - label: __('Uploaded'), + label: __('Uploaded date'), tdClass: 'gl-vertical-align-middle!', }, { @@ -163,7 +155,7 @@ export default { } return message; }, - loadFileSelctor() { + loadFileSelector() { this.$refs.fileUpload.click(); }, setDeleteModalData(secureFile) { @@ -183,91 +175,74 @@ export default { diff --git a/app/assets/javascripts/jobs/components/log/line.vue b/app/assets/javascripts/jobs/components/log/line.vue index 2d9714cd06b..36b350f4d64 100644 --- a/app/assets/javascripts/jobs/components/log/line.vue +++ b/app/assets/javascripts/jobs/components/log/line.vue @@ -14,9 +14,14 @@ export default { type: String, required: true, }, + searchResults: { + type: Array, + required: false, + default: () => [], + }, }, render(h, { props }) { - const { line, path } = props; + const { line, path, searchResults } = props; const chars = line.content.map((content) => { return h( @@ -46,15 +51,33 @@ export default { ); }); - return h('div', { class: 'js-line log-line' }, [ - h(LineNumber, { - props: { - lineNumber: line.lineNumber, - path, - }, - }), - ...chars, - ]); + let applyHighlight = false; + + if (searchResults.length > 0) { + const linesToHighlight = searchResults.map((searchResultLine) => searchResultLine.lineNumber); + + linesToHighlight.forEach((num) => { + if (num === line.lineNumber) { + applyHighlight = true; + } + }); + } + + return h( + 'div', + { + class: ['js-line', 'log-line', applyHighlight ? 'gl-bg-gray-500' : ''], + }, + [ + h(LineNumber, { + props: { + lineNumber: line.lineNumber, + path, + }, + }), + ...chars, + ], + ); }, }; diff --git a/app/assets/javascripts/jobs/components/log/log.vue b/app/assets/javascripts/jobs/components/log/log.vue index ef95d79b8ab..9647582b81d 100644 --- a/app/assets/javascripts/jobs/components/log/log.vue +++ b/app/assets/javascripts/jobs/components/log/log.vue @@ -8,6 +8,13 @@ export default { CollapsibleLogSection, LogLine, }, + props: { + searchResults: { + type: Array, + required: false, + default: () => [], + }, + }, computed: { ...mapState([ 'jobLogEndpoint', @@ -56,9 +63,16 @@ export default { :key="`collapsible-${index}`" :section="section" :job-log-endpoint="jobLogEndpoint" + :search-results="searchResults" @onClickCollapsibleLine="handleOnClickCollapsibleLine" /> - +
diff --git a/app/assets/javascripts/jobs/index.js b/app/assets/javascripts/jobs/index.js index 8fb4c480ef9..5c63ad96ad0 100644 --- a/app/assets/javascripts/jobs/index.js +++ b/app/assets/javascripts/jobs/index.js @@ -1,7 +1,10 @@ +import { GlToast } from '@gitlab/ui'; import Vue from 'vue'; import JobApp from './components/job_app.vue'; import createStore from './store'; +Vue.use(GlToast); + const initializeJobPage = (element) => { const store = createStore(); diff --git a/app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js b/app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js index 43ab829f5f9..6a9bd34db22 100644 --- a/app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js +++ b/app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js @@ -9,6 +9,7 @@ import { initInstallRunner } from '~/pages/shared/mount_runner_instructions'; import initSharedRunnersToggle from '~/projects/settings/mount_shared_runners_toggle'; import initSettingsPanels from '~/settings_panels'; import { initTokenAccess } from '~/token_access'; +import { initCiSecureFiles } from '~/ci_secure_files'; // Initialize expandable settings panels initSettingsPanels(); @@ -41,3 +42,4 @@ initSharedRunnersToggle(); initInstallRunner(); initRunnerAwsDeployments(); initTokenAccess(); +initCiSecureFiles(); diff --git a/app/assets/javascripts/runner/admin_runners/admin_runners_app.vue b/app/assets/javascripts/runner/admin_runners/admin_runners_app.vue index a90ef2d3530..fb0035e906e 100644 --- a/app/assets/javascripts/runner/admin_runners/admin_runners_app.vue +++ b/app/assets/javascripts/runner/admin_runners/admin_runners_app.vue @@ -1,8 +1,7 @@