diff options
Diffstat (limited to 'config')
-rw-r--r-- | config/initializers/01_secret_token.rb | 7 | ||||
-rw-r--r-- | config/initializers/excon.rb | 8 | ||||
-rw-r--r-- | config/initializers/sidekiq_cluster.rb | 29 | ||||
-rw-r--r-- | config/plugins/monaco_webpack.js | 17 | ||||
-rw-r--r-- | config/webpack.config.js | 57 |
5 files changed, 70 insertions, 48 deletions
diff --git a/config/initializers/01_secret_token.rb b/config/initializers/01_secret_token.rb index c1f03dfdb07..bb13869c963 100644 --- a/config/initializers/01_secret_token.rb +++ b/config/initializers/01_secret_token.rb @@ -65,11 +65,10 @@ end def set_missing_keys(defaults) defaults.stringify_keys.each_with_object({}) do |(key, default), missing| - if Rails.application.secrets[key].blank? - warn_missing_secret(key) + next if Rails.application.secrets[key].present? - missing[key] = Rails.application.secrets[key] = default - end + warn_missing_secret(key) + missing[key] = Rails.application.secrets[key] = default end end diff --git a/config/initializers/excon.rb b/config/initializers/excon.rb new file mode 100644 index 00000000000..132cb2ff15b --- /dev/null +++ b/config/initializers/excon.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +require 'openssl' + +# Excon ships its own bundled certs by default. Avoid confusion +# by using the same set that GitLab uses. +Excon.defaults[:ssl_ca_file] = OpenSSL::X509::DEFAULT_CERT_FILE +Excon.defaults[:ssl_verify_peer] = true diff --git a/config/initializers/sidekiq_cluster.rb b/config/initializers/sidekiq_cluster.rb index 2f9c1de47eb..6fd598b3e25 100644 --- a/config/initializers/sidekiq_cluster.rb +++ b/config/initializers/sidekiq_cluster.rb @@ -9,22 +9,23 @@ if ENV['ENABLE_SIDEKIQ_CLUSTER'] loop do sleep(5) + next if Process.ppid == parent + # In cluster mode it's possible that the master process is SIGKILL'd. In # this case the parent PID changes and we need to terminate ourselves. - if Process.ppid != parent - Process.kill(:TERM, Process.pid) - - # Allow sidekiq to cleanly terminate and push any running jobs back - # into the queue. We use the configured timeout and add a small - # grace period - sleep(Sidekiq.options[:timeout] + 5) - - # Signaling the Sidekiq Pgroup as KILL is not forwarded to - # a possible child process. In Sidekiq Cluster, all child Sidekiq - # processes are PGROUP leaders (each process has its own pgroup). - Process.kill(:KILL, 0) - break - end + + Process.kill(:TERM, Process.pid) + + # Allow sidekiq to cleanly terminate and push any running jobs back + # into the queue. We use the configured timeout and add a small + # grace period + sleep(Sidekiq.options[:timeout] + 5) + + # Signaling the Sidekiq Pgroup as KILL is not forwarded to + # a possible child process. In Sidekiq Cluster, all child Sidekiq + # processes are PGROUP leaders (each process has its own pgroup). + Process.kill(:KILL, 0) + break end end end diff --git a/config/plugins/monaco_webpack.js b/config/plugins/monaco_webpack.js deleted file mode 100644 index 01d88ca37db..00000000000 --- a/config/plugins/monaco_webpack.js +++ /dev/null @@ -1,17 +0,0 @@ -const { languagesArr } = require('monaco-editor-webpack-plugin/out/languages'); - -// monaco-yaml library doesn't play so well with monaco-editor-webpack-plugin -// so the only way to include its workers is by patching the list of languages -// in monaco-editor-webpack-plugin and adding support for yaml workers. This is -// a known issue in the library and this workaround was suggested here: -// https://github.com/pengx17/monaco-yaml/issues/20 - -const yamlLang = languagesArr.find((t) => t.label === 'yaml'); - -yamlLang.entry = [yamlLang.entry, '../../monaco-yaml/lib/esm/monaco.contribution']; -yamlLang.worker = { - id: 'vs/language/yaml/yamlWorker', - entry: '../../monaco-yaml/lib/esm/yaml.worker.js', -}; - -module.exports = require('monaco-editor-webpack-plugin'); diff --git a/config/webpack.config.js b/config/webpack.config.js index 0d759de4900..545262bcb70 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -19,13 +19,13 @@ const webpack = require('webpack'); const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); const { StatsWriterPlugin } = require('webpack-stats-plugin'); const WEBPACK_VERSION = require('webpack/package.json').version; +const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); const createIncrementalWebpackCompiler = require('./helpers/incremental_webpack_compiler'); const IS_EE = require('./helpers/is_ee_env'); const IS_JH = require('./helpers/is_jh_env'); const vendorDllHash = require('./helpers/vendor_dll_hash'); -const MonacoWebpackPlugin = require('./plugins/monaco_webpack'); const GraphqlKnownOperationsPlugin = require('./plugins/graphql_known_operations_plugin'); const ROOT_PATH = path.resolve(__dirname, '..'); @@ -78,6 +78,20 @@ const incrementalCompiler = createIncrementalWebpackCompiler( INCREMENTAL_COMPILER_TTL, ); +const defaultJsTransformationOptions = { + cacheDirectory: path.join(CACHE_PATH, 'babel-loader'), + cacheIdentifier: [ + process.env.BABEL_ENV || process.env.NODE_ENV || 'development', + webpack.version, + BABEL_VERSION, + BABEL_LOADER_VERSION, + // Ensure that changing supported browsers will refresh the cache + // in order to not pull in outdated files that import core-js + SUPPORTED_BROWSERS_HASH, + ].join('|'), + cacheCompression: false, +}; + function generateEntries() { // generate automatic entry points const autoEntries = {}; @@ -269,17 +283,23 @@ module.exports = { /node_modules|vendor[\\/]assets/.test(modulePath) && !/\.vue\.js/.test(modulePath), loader: 'babel-loader', options: { - cacheDirectory: path.join(CACHE_PATH, 'babel-loader'), - cacheIdentifier: [ - process.env.BABEL_ENV || process.env.NODE_ENV || 'development', - webpack.version, - BABEL_VERSION, - BABEL_LOADER_VERSION, - // Ensure that changing supported browsers will refresh the cache - // in order to not pull in outdated files that import core-js - SUPPORTED_BROWSERS_HASH, - ].join('|'), - cacheCompression: false, + ...defaultJsTransformationOptions, + }, + }, + { + test: /\.js$/, + include: (modulePath) => /node_modules\/(monaco-|yaml)/.test(modulePath), + exclude: (modulePath) => + /node_modules\/(monaco-yaml|monaco-editor\/esm\/vs\/editor\/contrib)/.test(modulePath), + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env'], + plugins: [ + '@babel/plugin-proposal-numeric-separator', + '@babel/plugin-syntax-dynamic-import', + '@babel/plugin-proposal-optional-chaining', + ], + ...defaultJsTransformationOptions, }, }, { @@ -473,7 +493,18 @@ module.exports = { new VueLoaderPlugin(), // automatically configure monaco editor web workers - new MonacoWebpackPlugin(), + new MonacoWebpackPlugin({ + customLanguages: [ + { + label: 'yaml', + entry: 'monaco-yaml', + worker: { + id: 'monaco-yaml/yamlWorker', + entry: 'monaco-yaml/yaml.worker', + }, + }, + ], + }), new GraphqlKnownOperationsPlugin({ filename: 'graphql_known_operations.yml' }), |