Lambdacd Versions Save

a library to define a continuous delivery pipeline in code

0.13.3

6 years ago

Fixed

  • Replaced dependeny org.ow2.proactive/process-tree-killer that was only available in an insecure maven repo with com.jezhumble/javasysmon so that LambdaCD Projects can be built with Leiningen 2.8.0 and later (fixes #171)

0.13.2

6 years ago

Fixed

  • java.lang.ClassNotFoundException: clojure.test in lambdacd.presentation.pipeline-structure under some circumstances (#169)

0.13.1

7 years ago

Added

Fixed

  • Marking builds as dead if the datastore sees them as running but they are not (e.g. because LambdaCD was not cleanly shut down previously). This introduces the new :status :dead (#134)
  • junction did not behave like a sequential step, i.e. it did not pass the results of the condition to the arguments of the branch steps (#162)
  • made lambdacd.stepresults.merge/merge-step-results default behavior consistent with other step-result merging strategies: should concatenate colliding lists

Deprecated

  • Built-in Git-Support (lambdacd.steps.git) should be considered deprecated now and will be removed in the future. Use the more modern lambdacd-git library instead.

  • A couple of functions were only public by accident and should not be considered part of the public API. They will be moved or become private in the future:

    • lambdacd.presentation.pipeline-state/not-retriggered?
    • lambdacd.presentation.pipeline-structure/pad
    • lambdacd.presentation.pipeline-structure/step-display-representation-internal
    • lambdacd.runners/should-trigger-next-build?
    • lambdacd.steps.control-flow/synchronize-atoms
    • lambdacd.steps.shell/kill
    • lambdacd.steps.status/choose-last-or-not-success
    • lambdacd.steps.support/{replace-args-and-ctx,to-fn,to-fn-with-args,unify-results}
    • lambdacd.ui.ui-page/{css-includes,js-includes,favicon,app-placeholder,title,header,ui-config,ui-page}
  • lambdacd.presentation.unified/unified-presentation is unused and therefore deprecated and will be removed in the future. Use pipeline-structure-with-step-results instead.

  • lambdacd.steps.support/merge-globals is no longer necessary, normal step result merging (merge-step-results,merge-two-step-results) should already conserve and merge globals just fine

  • A couple of functions were moved to make the package structure more clear. The existing functions still exist but are now deprecated and will be removed in the future.

    • lambdacd.steps.result/flatten-step-result-outputs moved to lambdacd.stepresults.flatten
    • lambdacd.steps.result/{merge-step-results,merge-two-step-results} moved to lambdacd.stepresults.merge
    • lambdacd.steps.result/*-resolver moved to lambdacd.stepresults.merge-resolvers
    • lambdacd.steps.status/successful-when-* moved to lambdacd.stepstatus.unify
    • lambdacd.steps.status/is-active? moved to lambdacd.stepstatus.predicates
    • lambdacd.steps.support/assoc-build-metadata! moved to lambdacd.stepsupport.metadata
    • lambdacd.steps.support/unify-only-status moved to lambdacd.stepstatus.unify
    • lambdacd.steps.support/{capture-output,printed-output,print-to-output,set-output,new-printer} moved to lambdacd.stepsupport.output
    • lambdacd.steps.support/{killed?,if-not-killed} moved to lambdacd.stepsupport.killable
    • lambdacd.steps.support/{chaining,chain-steps,always-chaining,always-chain-steps,injected-args,injected-ctx,last-step-status-wins} moved to lambdacd.stepsupport.chaining
    • lambdacd.ui.ui-server/ui-for moved to lambdacd.ui.core

0.13.0

7 years ago
  • Improvements:
    • Added support for build-level metadata (#138). See Build Metadata for details
    • UI support for some kinds of metadata:
      • :human-readable-build-label
    • Added events :pipeline-started and :pipeline-finished (#155)
    • Added function to simplify handling of nested step-results (e.g. the information received from :pipeline-finished events (#155, #154):
      • lambdacd.steps.result/flatten-step-result-outputs
    • Added functions to simplify getting information about a specific step (#154):
      • lambdacd.presentation.pipeline-structure/flatten-pipeline-representation
      • lambdacd.presentation.pipeline-structure/step-display-representation-by-step-id
  • Bug fixes:
    • Catch Exception instead of Throwable in build steps to avoid catching Errors which cannot be handled (#148), thanks @hgsy!
  • Deprecated:
    • lambdacd.execution was deprecated in favor of lambdacd.execution.core
  • Breaking Changes:
    • Removed :unify-status-fn parameter in execute-steps (deprecated since 0.9.4). Use :unify-results-fn instead. lambdacd.steps.support/unify-only-status can help with migrating unify-status-fns.
  • Changes in internal API:
    • lambdacd.internal.execution was refactored into several independent namespaces, functions were moved around, replaced or made private. You shouldn't have dependencies on those unless you are doing something really crazy or advanced. If you did, please consider using functions in public namespaces (i.e. that don't have internal in their name). If you have dependencies on functions that have no public equivalent, please open an issue to get this fixed.

0.12.1

7 years ago

New years cleanup and bug fix release.

  • Bug fixes:
    • 0.12.0 was released without proper CSS, this release is fixing this.
  • API Changes:
    • lambdacd.util was cleaned up or moved to separate, internal namespaces as most of this functionality was never intended to be part of the public namespace. If you depend on utility functions and feel they should be part of LambdaCDs public API, please open an issue. Specifically, the following functions are now deprecated
      • lambdacd.util/write-as-json
      • lambdacd.util/ok
      • lambdacd.util/bash
      • lambdacd.util/range-from
      • lambdacd.util/map-if
      • lambdacd.util/no-file-attributes
      • lambdacd.util/temp-prefix
      • lambdacd.util/create-temp-dir
      • lambdacd.util/create-temp-file
      • lambdacd.util/with-temp
      • lambdacd.util/json
      • lambdacd.util/to-json
      • lambdacd.util/put-if-not-present
      • lambdacd.util/parse-int
      • lambdacd.util/contains-value?
      • lambdacd.util/buffered
      • lambdacd.util/fill
      • lambdacd.util/merge-with-k-v
  • Changes in internal API (you shouldn't have dependencies on those unless you are doing something really crazy or advanced)
    • Made the following functions private (as they were never supposed to be publicly available): lambdacd.internal.execution/{kill-step-handling,report-received-kill,add-kill-switch-reporter,clean-up-kill-handling}

0.12.0

7 years ago
  • Bug fixes:
    • Fixed retriggering: Retriggering did not work if the new pipeline state was used as it did not save the pipeline structure for the retriggered build (#146).
    • Fixed a race condition in event-bus unsubscribe that had potential to deadlock the system in rare circumstances (#145).
    • Rewrote event-bus to prevent deadlocks under heavy load (#144). As this new event-bus is not battle-tested yet, it is not active by default. Use he config setting :use-new-event-bus true to activate it. This will become the default in upcoming releases.
  • Breaking Changes:
    • Removed lambdacd.event-bus/publish (deprecated since 0.9.1), use lambdacd.event-bus/publish!! instead (or lambdacd.event-bus/publish! when being called from a go-block)

0.11.0

7 years ago
  • Improvements:
    • Keeps a history of pipeline structure if persistence component supports it (#131, #6); Implemented for default persistence
    • Improved performance and resource consumption by compressing and throttling step-result update events (#140). Can be configured with the configuration parameter :step-updates-per-sec.
    • Introduced event :step-result-update-consumed to indicate that a step update was consumed and is available in the pipeline state #136
  • Bug fixes:
    • Fix deadlock occurring when steps write a lot of step-results in quick succession and step results are inherited by their parents (as in chaining) (#135, #140)
  • API changes:
    • New state handling (#131):
      • Protocols in lambdacd.state.protocols replace lambdacd.internal.pipeline-state/PipelineStateComponent which is now deprecated. Custom persistence-mechanisms need to migrate.
      • Added facade lambdacd.state.core for all state-related functionality. Access directly to PipelineStateComponent is now deprecated.
      • lambdacd.presentation.pipeline-state/history-for should now be called with ctx; Calling it with a build-state (the result of lambdacd.internal.pipeline-state/get-all) still works but is now deprecated.
      • lambdacd.presentation.unified/unified-presentation is now deprecated, use lambdacd.presentation.unified/pipeline-structure-with-step-results instead
    • The current pipeline-definition can now be accessed as :pipeline-def in ctx
  • Breaking Changes:
    • Moved pipeline-state-updater from lambdacd.internal.pipeline-state to lambdacd.state.internal.pipeline-state-updater and refactored interface. As this is an internal namespace, it should not affect users unless they customized LambdaCDs startup procedure to a large degree.
    • The fix for #135 changes the behavior of step result inheritance by introducing a sliding window that compresses several step result update events into one: Steps inheriting their childens results via the :unify-status-fn or :unify-results-fn (e.g. chaining steps) might not pass on intermediate update events; the ultimately resulting unified step result will remain the same.
    • Removed nil-check from DefaultPipelineState/{update,consume-step-result-update}: This was meant as a convenience for internal tests that set up incomplete components. Tests have since been fixed so this is no longer necessary. If you are impacted by this issue, make sure you create DefaultPipelineState with new-default-pipeline-state

0.10.0

7 years ago
  • Bug Fixes:
    • Fixed critical issue that prevented release 0.9.5 from even starting #133
  • Breaking Changes:
    • Removed backwards compatibility for versions older than 0.8.0 that write their history in JSON instead of EDN. If you want to keep your history, upgrade to 0.9.4 first and then upgrade to 0.10.0.
    • Removed namespace lambdacd.internal.step-id (was deprecated since 0.7.0), use lambdacd.step-id instead

0.9.5

7 years ago

This release is broken (#133), do not use

  • Improvements:
    • Allow truncating build history by setting :max-builds in config (#132). Defaults to Integer/MAX_VALUE so this should be a non-breaking change
    • Added lambdacd.execution/run to the public namespace. If you were using lambdacd.internal.execution/run until now, migrate to make sure you are using the official public namespace as internal interfaces can change without notice (#128)
  • API changes:
    • Moved public API to interact with execution engine from lambdacd.core into separate namespace lambdacd.execution. lambdacd.core/{retrigger,kill-step,execute-steps,execute-step} are now deprecated and will be removed in subsequent releases. Use the equivalent functions in lambdacd.execution instead

0.9.4

7 years ago
  • Improvements:
    • lambdacd.steps.support/{chain,always-chain,chaining,always-chaining} now return outputs of individual chained steps (#122)
    • Add lambdacd.steps.support/last-step-status-wins to coerce a step result into having the status of the last output to make an always-chained step successful even though it had a failing step in it (#122)
    • Add :unify-results-fn to unify the whole step-result, not just the step status from children in core/execute-steps
  • Bug fixes:
    • Refactored merging of step results and resolved overly broad merging behavior (see breaking changes)
    • Chaining no longer loses intermediate results (fixes #120)
  • API changes:
    • The :unify-status-fn parameter in core/execute-steps is now deprecated and will be removed in subsequent releases. Use :unify-results-fn instead.
  • Breaking changes:
    • Changed behavior of step-merging in some edge-cases where it was merging with special behavior in cases that were not necessary. This change should not affect normal pipeline behavior unless they rely on this very edge-case.