2

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!

Antwort

3

Falls jemand darauf stolpert, werden beide Wege funktionieren. AWS CodeBuild schlägt bei einem Nicht-Null-Beendigungsstatuscode fehl. Daher führen alle fehlgeschlagenen Tests zum Ausfall der Pipeline.

Dasselbe kann mit Lambda

getan werden
Verwandte Themen