mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
[CI] Prevent console.log in pipeline.ts (#204724)
## Summary ~Logging to stdout from this file would result uploading the logged string to buildkite as a pipeline definition, causing errors (https://buildkite.com/elastic/kibana-pull-request/builds/261721#0193d94b-f05c-41d6-9865-3d3c331a6cc4)~ Adds an inline eslint rule to warn about `console.log/stdout` usage, as this has happened before by oversight. Overlaps with: https://github.com/elastic/kibana/pull/204672 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
23c28eb712
commit
ae6d046319
3 changed files with 32 additions and 6 deletions
13
.buildkite/pipeline-utils/buildkite/emitPipeline.ts
Normal file
13
.buildkite/pipeline-utils/buildkite/emitPipeline.ts
Normal file
|
@ -0,0 +1,13 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the "Elastic License
|
||||
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
|
||||
* Public License v 1"; you may not use this file except in compliance with, at
|
||||
* your election, the "Elastic License 2.0", the "GNU Affero General Public
|
||||
* License v3.0 only", or the "Server Side Public License, v 1".
|
||||
*/
|
||||
|
||||
export function emitPipeline(pipelineSteps: string[]) {
|
||||
const pipelineStr = [...new Set(pipelineSteps)].join('\n');
|
||||
console.log(pipelineStr);
|
||||
}
|
|
@ -9,3 +9,4 @@
|
|||
|
||||
export * from './client';
|
||||
export * from './types';
|
||||
export * from './emitPipeline';
|
||||
|
|
|
@ -7,9 +7,22 @@
|
|||
* License v3.0 only", or the "Server Side Public License, v 1".
|
||||
*/
|
||||
|
||||
/* eslint "no-restricted-syntax": [
|
||||
"error",
|
||||
{
|
||||
"selector": "CallExpression[callee.object.name='console'][callee.property.name!=/^(warn|error)$/]",
|
||||
"message": "Debug logging to stdout in this file will attempt to upload the log message as yaml to buildkite, which might result in pipeline syntax error. Use emitPipeline() to upload steps, or log to stderr."
|
||||
}
|
||||
] */
|
||||
|
||||
import fs from 'fs';
|
||||
import prConfigs from '../../../pull_requests.json';
|
||||
import { areChangesSkippable, doAnyChangesMatch, getAgentImageConfig } from '#pipeline-utils';
|
||||
import {
|
||||
areChangesSkippable,
|
||||
doAnyChangesMatch,
|
||||
getAgentImageConfig,
|
||||
emitPipeline,
|
||||
} from '#pipeline-utils';
|
||||
|
||||
const prConfig = prConfigs.jobs.find((job) => job.pipelineSlug === 'kibana-pull-request');
|
||||
const emptyStep = `steps: []`;
|
||||
|
@ -35,7 +48,7 @@ const getPipeline = (filename: string, removeSteps = true) => {
|
|||
const skippable = await areChangesSkippable(SKIPPABLE_PR_MATCHERS, REQUIRED_PATHS);
|
||||
|
||||
if (skippable) {
|
||||
console.log(emptyStep);
|
||||
emitPipeline([emptyStep]);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -44,8 +57,8 @@ const getPipeline = (filename: string, removeSteps = true) => {
|
|||
const onlyRunQuickChecks = await areChangesSkippable([/^renovate\.json$/], REQUIRED_PATHS);
|
||||
if (onlyRunQuickChecks) {
|
||||
pipeline.push(getPipeline('.buildkite/pipelines/pull_request/renovate.yml', false));
|
||||
|
||||
console.log([...new Set(pipeline)].join('\n'));
|
||||
console.warn('Isolated changes to renovate.json. Skipping main PR pipeline.');
|
||||
emitPipeline(pipeline);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -401,8 +414,7 @@ const getPipeline = (filename: string, removeSteps = true) => {
|
|||
|
||||
pipeline.push(getPipeline('.buildkite/pipelines/pull_request/post_build.yml'));
|
||||
|
||||
// remove duplicated steps
|
||||
console.log([...new Set(pipeline)].join('\n'));
|
||||
emitPipeline(pipeline);
|
||||
} catch (ex) {
|
||||
console.error('Error while generating the pipeline steps: ' + ex.message, ex);
|
||||
process.exit(1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue