Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: preserve cached config while mutating config #5735

Merged
merged 3 commits into from
Jun 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions packages/build/src/core/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,7 @@ const tExecBuild = async function ({
} = await runAndReportBuild({
pluginsOptions,
netlifyConfig,
cachedConfig,
configOpts,
siteInfo,
configPath,
Expand Down Expand Up @@ -240,6 +241,7 @@ export const execBuild = measureDuration(tExecBuild, 'total', { parentTag: 'buil
export const runAndReportBuild = async function ({
pluginsOptions,
netlifyConfig,
cachedConfig,
configOpts,
siteInfo,
configPath,
Expand Down Expand Up @@ -295,6 +297,7 @@ export const runAndReportBuild = async function ({
} = await initAndRunBuild({
pluginsOptions,
netlifyConfig,
cachedConfig,
configOpts,
siteInfo,
configPath,
Expand Down Expand Up @@ -400,6 +403,7 @@ export const runAndReportBuild = async function ({
const initAndRunBuild = async function ({
pluginsOptions,
netlifyConfig,
cachedConfig,
configOpts,
siteInfo,
configPath,
Expand Down Expand Up @@ -508,6 +512,7 @@ const initAndRunBuild = async function ({
childProcesses,
pluginsOptions: pluginsOptionsA,
netlifyConfig,
cachedConfig,
configOpts,
packageJson,
configPath,
Expand Down Expand Up @@ -583,6 +588,7 @@ const runBuild = async function ({
childProcesses,
pluginsOptions,
netlifyConfig,
cachedConfig,
configOpts,
packageJson,
configPath,
Expand Down Expand Up @@ -671,6 +677,7 @@ const runBuild = async function ({
deployId,
errorParams,
netlifyConfig,
cachedConfig,
configOpts,
logs,
debug,
Expand Down
13 changes: 9 additions & 4 deletions packages/build/src/core/config.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { resolveConfig, updateConfig, restoreConfig } from '@netlify/config'
import { resolveConfig, restoreConfig, updateConfig } from '@netlify/config'
import mapObj from 'map-obj'

import { getChildEnv } from '../env/main.js'
import { addApiErrorHandlers } from '../error/api.js'
import { changeErrorType } from '../error/info.js'
import { logBuildDir, logConfigPath, logConfig, logContext } from '../log/messages/config.js'
import { logBuildDir, logConfig, logConfigPath, logContext } from '../log/messages/config.js'
import { logConfigOnUpload, logHeadersOnUpload, logRedirectsOnUpload } from '../log/messages/mutations.js'
import { measureDuration } from '../time/main.js'
import { getPackageJson } from '../utils/package.js'
Expand Down Expand Up @@ -138,9 +138,14 @@ const logConfigInfo = function ({ logs, configPath, buildDir, netlifyConfig, con
// change would create debug logs which would be too verbose.
// Errors are propagated and assigned to the specific plugin or core step
// which changed the configuration.
export const resolveUpdatedConfig = async function (configOpts, configMutations) {
export const resolveUpdatedConfig = async function (configOpts, configMutations, cachedConfig) {
try {
return await resolveConfig({ ...configOpts, configMutations, debug: false })
return await resolveConfig({
...configOpts,
configMutations,
cachedConfig,
debug: false,
})
} catch (error) {
changeErrorType(error, 'resolveConfig', 'pluginValidation')
throw error
Expand Down
3 changes: 3 additions & 0 deletions packages/build/src/steps/core_step.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ export const fireCoreStep = async function ({
errorParams,
configOpts,
netlifyConfig,
cachedConfig,
configMutations,
headersPath,
redirectsPath,
Expand Down Expand Up @@ -65,6 +66,7 @@ export const fireCoreStep = async function ({
branch,
childEnv: childEnvA,
netlifyConfig,
cachedConfig,
nodePath,
configMutations,
headersPath,
Expand All @@ -86,6 +88,7 @@ export const fireCoreStep = async function ({
} = await updateNetlifyConfig({
configOpts,
netlifyConfig,
cachedConfig,
headersPath,
redirectsPath,
configMutations,
Expand Down
2 changes: 2 additions & 0 deletions packages/build/src/steps/plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ export const firePluginStep = async function ({
errorParams,
configOpts,
netlifyConfig,
cachedConfig,
configMutations,
headersPath,
redirectsPath,
Expand Down Expand Up @@ -76,6 +77,7 @@ export const firePluginStep = async function ({
} = await updateNetlifyConfig({
configOpts,
netlifyConfig,
cachedConfig,
headersPath,
packagePath,
redirectsPath,
Expand Down
3 changes: 3 additions & 0 deletions packages/build/src/steps/run_core_steps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ const executeBuildStep = async function ({

try {
const { netlifyConfig: netlifyConfigA, configMutations } = await runBuildStep({
cachedConfig,
netlifyConfig,
buildDir,
nodePath,
Expand Down Expand Up @@ -148,6 +149,7 @@ const executeBuildStep = async function ({
}

const runBuildStep = async function ({
cachedConfig,
netlifyConfig,
buildDir,
nodePath,
Expand All @@ -170,6 +172,7 @@ const runBuildStep = async function ({
nodePath,
constants,
netlifyConfig,
cachedConfig,
logs,
debug,
timers: [],
Expand Down
5 changes: 5 additions & 0 deletions packages/build/src/steps/run_step.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ export const runStep = async function ({
failedPlugins,
configOpts,
netlifyConfig,
cachedConfig,
configMutations,
headersPath,
redirectsPath,
Expand Down Expand Up @@ -143,6 +144,7 @@ export const runStep = async function ({
durationNs,
metrics,
} = await fireStep({
cachedConfig,
event,
childProcess,
packageName,
Expand Down Expand Up @@ -304,6 +306,7 @@ const getFireStep = function (packageName: string, coreStepId?: string, event?:
}

const tFireStep = function ({
cachedConfig,
event,
childProcess,
packageName,
Expand Down Expand Up @@ -371,6 +374,7 @@ const tFireStep = function ({
errorParams,
configOpts,
netlifyConfig,
cachedConfig,
configMutations,
headersPath,
redirectsPath,
Expand Down Expand Up @@ -398,6 +402,7 @@ const tFireStep = function ({
errorParams,
configOpts,
netlifyConfig,
cachedConfig,
configMutations,
headersPath,
redirectsPath,
Expand Down
2 changes: 2 additions & 0 deletions packages/build/src/steps/run_steps.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { runStep } from './run_step.js'
// If an error arises, runs `onError` events.
// Runs `onEnd` events at the end, whether an error was thrown or not.
export const runSteps = async function ({
cachedConfig,
steps,
buildbotServerSocket,
events,
Expand Down Expand Up @@ -134,6 +135,7 @@ export const runSteps = async function ({
error,
failedPlugins,
configOpts,
cachedConfig,
netlifyConfig: netlifyConfigA,
configMutations,
headersPath: headersPathA,
Expand Down
7 changes: 4 additions & 3 deletions packages/build/src/steps/update_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { logConfigMutations, systemLogConfigMutations } from '../log/messages/mu
export const updateNetlifyConfig = async function ({
configOpts,
netlifyConfig,
cachedConfig,
headersPath,
redirectsPath,
configMutations,
Expand Down Expand Up @@ -42,18 +43,18 @@ export const updateNetlifyConfig = async function ({
systemLogConfigMutations(systemLog, newConfigMutations)
}

const configMutationsA = [...configMutations, ...newConfigMutations]
const mergedConfigMutations = [...configMutations, ...newConfigMutations]
const {
config: netlifyConfigA,
headersPath: headersPathA,
redirectsPath: redirectsPathA,
} = await resolveUpdatedConfig(configOpts, configMutationsA)
} = await resolveUpdatedConfig(configOpts, mergedConfigMutations, cachedConfig)
logConfigOnUpdate({ logs, netlifyConfig: netlifyConfigA, debug })

errorParams.netlifyConfig = netlifyConfigA
return {
netlifyConfig: netlifyConfigA,
configMutations: configMutationsA,
configMutations: mergedConfigMutations,
headersPath: headersPathA,
redirectsPath: redirectsPathA,
}
Expand Down
Loading