Releases: flosell/lambdacd
0.13.3
0.13.2
0.13.1
Added
- Proper API Documentation: http://www.lambda.cd/api-docs/0.13.1/
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 modernlambdacd-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. Usepipeline-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 tolambdacd.stepresults.flatten
lambdacd.steps.result/{merge-step-results,merge-two-step-results}
moved tolambdacd.stepresults.merge
lambdacd.steps.result/*-resolver
moved tolambdacd.stepresults.merge-resolvers
lambdacd.steps.status/successful-when-*
moved tolambdacd.stepstatus.unify
lambdacd.steps.status/is-active?
moved tolambdacd.stepstatus.predicates
lambdacd.steps.support/assoc-build-metadata!
moved tolambdacd.stepsupport.metadata
lambdacd.steps.support/unify-only-status
moved tolambdacd.stepstatus.unify
lambdacd.steps.support/{capture-output,printed-output,print-to-output,set-output,new-printer}
moved tolambdacd.stepsupport.output
lambdacd.steps.support/{killed?,if-not-killed}
moved tolambdacd.stepsupport.killable
lambdacd.steps.support/{chaining,chain-steps,always-chaining,always-chain-steps,injected-args,injected-ctx,last-step-status-wins}
moved tolambdacd.stepsupport.chaining
lambdacd.ui.ui-server/ui-for
moved tolambdacd.ui.core
0.13.0
- 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:
- Deprecated:
lambdacd.execution
was deprecated in favor oflambdacd.execution.core
- Breaking Changes:
- Removed
:unify-status-fn
parameter inexecute-steps
(deprecated since 0.9.4). Use:unify-results-fn
instead.lambdacd.steps.support/unify-only-status
can help with migrating unify-status-fns.
- Removed
- 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 haveinternal
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
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 deprecatedlambdacd.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}
- Made the following functions private (as they were never supposed to be publicly available):
0.12.0
- 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), uselambdacd.event-bus/publish!!
instead (orlambdacd.event-bus/publish!
when being called from a go-block)
- Removed
0.11.0
- 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:
- API changes:
- New state handling (#131):
- Protocols in
lambdacd.state.protocols
replacelambdacd.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 toPipelineStateComponent
is now deprecated. lambdacd.presentation.pipeline-state/history-for
should now be called with ctx; Calling it with a build-state (the result oflambdacd.internal.pipeline-state/get-all
) still works but is now deprecated.lambdacd.presentation.unified/unified-presentation
is now deprecated, uselambdacd.presentation.unified/pipeline-structure-with-step-results
instead
- Protocols in
- The current pipeline-definition can now be accessed as
:pipeline-def
in ctx
- New state handling (#131):
- Breaking Changes:
- Moved pipeline-state-updater from
lambdacd.internal.pipeline-state
tolambdacd.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 fromDefaultPipelineState/{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 createDefaultPipelineState
withnew-default-pipeline-state
- Moved pipeline-state-updater from
0.10.0
- 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), uselambdacd.step-id
instead
0.9.5
This release is broken (#133), do not use
- Improvements:
- Allow truncating build history by setting
:max-builds
in config (#132). Defaults toInteger/MAX_VALUE
so this should be a non-breaking change - Added
lambdacd.execution/run
to the public namespace. If you were usinglambdacd.internal.execution/run
until now, migrate to make sure you are using the official public namespace as internal interfaces can change without notice (#128)
- Allow truncating build history by setting
- API changes:
- Moved public API to interact with execution engine from
lambdacd.core
into separate namespacelambdacd.execution
.lambdacd.core/{retrigger,kill-step,execute-steps,execute-step}
are now deprecated and will be removed in subsequent releases. Use the equivalent functions inlambdacd.execution
instead
- Moved public API to interact with execution engine from
0.9.4
- 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 incore/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 incore/execute-steps
is now deprecated and will be removed in subsequent releases.
Use:unify-results-fn
instead.
- The
- 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.
- Changed behavior of step-merging in some edge-cases where it was merging with special behavior in cases that were not necessary.