Leute, Haben versucht, die richtige Art und Weise zum Auslösen eines CodeBuild-Projekts zu ermitteln, das entweder das Artefakt nach dem Kompilieren und Ausführen von Jasmintests erzeugt oder die CodePipeline aussetzt vom Fortfahren mit der Bereitstellung.Verwenden von AWS CodeBuild oder Lambda zum Ausführen von Jasmintests vor der Bereitstellung
Wenn mein buildspec.yml
wie folgt aussieht:
version: 0.1
phases:
install:
commands:
- echo Installing... Running npm install
- npm install
pre_build:
commands:
- echo pre_build...
build:
commands:
- echo Testing... Running npm test
- npm test
post_build:
commands:
- echo Build completed on `date`
artifacts:
files:
- '**/*'
Wie sollte ich nicht aus der npm test
Phase? Wenn einer der Jasmintests während npm test
fehlschlägt, wird das Artefakt immer noch produziert?
Ein anderer Gedanke, den ich habe, ist die folgende auftreten, wenn eine der Prüfungen haben fehlschlagen:
var params = {
jobId: jobId,
failureDetails: {
message: JSON.stringify(message),
type: 'JobFailed',
externalExecutionId: context.invokeid
}
};
codepipeline.putJobFailureResult(params, function(err, data) {
...
});
oder ein Stoppsignal an CodeBuild schicken?
var params = {
id: 'STRING_VALUE' /* required */
};
codebuild.stopBuild(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
Oder wie kann ich den Build beenden, um das Artefakt nicht zu erzeugen? Vielleicht habe ich das falsch verstanden, und es sollte eine Lambda-Funktion sein, die die Komponententests startet. Ich bin nicht sicher, ob Lambda dafür ideal ist, da ich mir vorstellen kann, dass einige Dienste eine Weile brauchen, um die Komponententests zu beenden.
Vielen Dank!