mirror of
https://github.com/discourse/discourse.git
synced 2025-01-18 11:02:46 +08:00
DEV: Add progress output in CI during ember-cli build (#17977)
By default, in CI environments, Ember CLI does not output anything between "building..." and "cleaning up". Depending on configuration and hardware, Discourse asset builds can take upwards of 60s, and so this lack of output can make the build feel 'stuck'. This commit introduces an addon which checks for CI mode, and then outputs status information periodically. The logic is very similar to Ember CLI's non-CI progress output implementation (https://github.com/ember-cli/ember-cli/blob/04a38fda2c/lib/models/builder.js#L183-L185).
This commit is contained in:
parent
e70bab16e0
commit
72ea00d0cc
|
@ -51,6 +51,7 @@
|
|||
"ember-cli-deprecation-workflow": "^2.1.0",
|
||||
"ember-cli-htmlbars": "^6.1.0",
|
||||
"ember-cli-inject-live-reload": "^2.1.0",
|
||||
"ember-cli-progress-ci": "1.0.0",
|
||||
"ember-cli-sri": "^2.1.1",
|
||||
"ember-cli-terser": "^4.0.2",
|
||||
"ember-exam": "^7.0.1",
|
||||
|
|
54
app/assets/javascripts/ember-cli-progress-ci/index.js
Normal file
54
app/assets/javascripts/ember-cli-progress-ci/index.js
Normal file
|
@ -0,0 +1,54 @@
|
|||
"use strict";
|
||||
|
||||
const progress = require("ember-cli/lib/utilities/heimdall-progress");
|
||||
|
||||
const CHECK_INTERVAL = 100;
|
||||
const LOG_DUPLICATE_AFTER_DURATION = 5000;
|
||||
|
||||
const REPEAT_DUPLICATE_LOG_ITERATIONS =
|
||||
LOG_DUPLICATE_AFTER_DURATION / CHECK_INTERVAL;
|
||||
|
||||
// If running in CI mode, this addon will poll the current build node and log it.
|
||||
// If the node runs for more than LOG_DUPLICATE_AFTER_DURATION, it will be logged again.
|
||||
module.exports = {
|
||||
name: require("./package").name,
|
||||
|
||||
preBuild() {
|
||||
if (this.project.ui.ci) {
|
||||
this._startOutput();
|
||||
}
|
||||
},
|
||||
|
||||
outputReady() {
|
||||
this._stopOutput();
|
||||
},
|
||||
|
||||
buildError() {
|
||||
this._stopOutput();
|
||||
},
|
||||
|
||||
_startOutput() {
|
||||
this._discourseProgressLoggerInterval = setInterval(
|
||||
this._handleProgress.bind(this),
|
||||
CHECK_INTERVAL
|
||||
);
|
||||
},
|
||||
|
||||
_handleProgress() {
|
||||
const text = progress();
|
||||
if (
|
||||
text === this._lastText &&
|
||||
this._sameOutputCount < REPEAT_DUPLICATE_LOG_ITERATIONS
|
||||
) {
|
||||
this._sameOutputCount++;
|
||||
} else {
|
||||
this.project.ui.writeInfoLine("..." + (text ? `[${text}]` : "."));
|
||||
this._sameOutputCount = 0;
|
||||
}
|
||||
this._lastText = text;
|
||||
},
|
||||
|
||||
_stopOutput() {
|
||||
clearInterval(this._discourseProgressLoggerInterval);
|
||||
},
|
||||
};
|
10
app/assets/javascripts/ember-cli-progress-ci/package.json
Normal file
10
app/assets/javascripts/ember-cli-progress-ci/package.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"name": "ember-cli-progress-ci",
|
||||
"version": "1.0.0",
|
||||
"description": "Provides output during the ember-cli build process for CI environments",
|
||||
"author": "Discourse",
|
||||
"license": "GPL-2.0-only",
|
||||
"keywords": [
|
||||
"ember-addon"
|
||||
]
|
||||
}
|
|
@ -7,6 +7,7 @@
|
|||
"discourse-ensure-deprecation-order",
|
||||
"discourse-hbr",
|
||||
"discourse-widget-hbs",
|
||||
"ember-cli-progress-ci",
|
||||
"pretty-text",
|
||||
"select-kit",
|
||||
"truth-helpers",
|
||||
|
|
Loading…
Reference in New Issue
Block a user