completeJob: function()

in api/models/Build.js [106:150]


  completeJob: function(err, model, skip) {
    if (!model) return;
    sails.log.verbose('Completed job: ', model.id);

    // Reset associated models to ids
    if (model.user.id) model.user = model.user.id;
    if (model.site.id) model.site = model.site.id;

    // Load model if only attributes are present
    if (typeof model.save === 'function') {
      if (err) return next(err, model);
      next(null, model);
    } else {
      Build.findOne(model.id).exec(function(error, model) {
        if (err) return next(err, model);
        if (error) return next(error, model);
        next(null, model);
      });
    }

    function next(err, model) {
      if (err) sails.log.error('Build error: ', err);

      var error = err ? (err.message || err) : '';

      // Set job completion timestamp
      model.completedAt = new Date();

      // Set build state
      model.state = (err) ? 'error' : (skip) ? 'skipped' : 'success';

      // Sanitize error message
      error = error.replace(/\/\/(.*)@github/g, '//[token_redacted]@github');

      // Add error message if it exists
      model.error = error;

      // Save updated model
      model.save(function(err) {
        // We expect an error on first build after clone so do nothing
      });

    }

  }