a library to define a continuous delivery pipeline in code
Added lambdacd.steps.support/capture-output
to simplify working with stdout in build-steps (#60)
Added lambdacd.steps.support/chaining
, a more flexible and powerful variant of the existing chain
macro. (#39)
It supports injecting args
and ctx
at random places and, together with capture-output, also allows for
easy debugging:
(chaining {} {}
(some-step injected-args injected-ctx)
; prints the foo value that's returned by some-step and is injected into some-other-step
(print "foo-value:" (:foo injected-args))
(some-other-step injected-args injected-ctx))
This change also DEPRECATES lambdacd.steps.support/chain
which will be removed in subsequent releases.
:global
values can now be overwritten by later stages in the pipeline (#61)title
tag of UI if configured.first-updated-at
timestamps when retriggering children of container-steps (#56, flosell/lambdacd-cctray#3)with-git-branch
that always checks out the latest commit on a particular branch (as opposed to with-git
which checks out a revision given in args
or the master
branch in case nothing is given) (#46) (thanks @exload
for this):name
Made :display-type :container
the default for container steps, no longer throwing incomprehensible exceptions
when display-type declarations are forgotten (#43)
Now supporting steps with parameters in the pipeline:
(defn mk-pipeline-def [{repo-uri :repo-uri test-command :test-command}]
`(
wait-for-manual-trigger
(with-repo ~repo-uri
(run-tests ~test-command)
publish)))
Polished the UI
/api/pipeline
and /api/pipeline-state
core/mk-pipeline
as a method to initialize the pipeline.
Replaced with a more flexible core/assemble-pipeline
and a few single functions that take over things like running
the pipeline and providing ring-handlers to access the pipeline. For details, see examples.internal.default-pipeline-state
so they can be reused in other persistence components (#38)assemble-pipeline
and pushes updates to any pipeline-state
component that is configured (#38)assemble-pipeline
(#40)either
didn't kill remaining steps after finishing/api/builds/<buildnumber>/
now returns status 404 in case the build does not exist instead of
returning a half empty data-structure (#42):state
in the result of assemble-pipeline:step-results-channel
pipeline-state-updater
now started by assemble-pipeline (see above), pipeline-state component should no longer
start their own update mechanism (#38)Housekeeping release: Contains mostly cleanup under the hood and changes to APIs for advanced users. If you are using custom control-flow steps, runners, persistence mechanisms or other advanced features, make sure you look through the changes and upgrade as future releases will remove deprecated functionality.
:step-result-updated
and :step-finished
on event-bus for use by other components like
runners and persistence componentscore/execute-step
:step-results-channel
is now deprecated, unsupported and will be removed in subsequent releases.
Use the new :step-result-updated
event and filter on :step-id
to receive updates from child-steps while they run.(ui-server/ui-for pipeline-def pipeline-state ctx)
is now deprecated and will be removed in subsequent releases.
Use (ui-server/ui-for pipeline)
instead.:state
in the result of assemble-pipeline is now deprecated
and will be removed in subsequent releases. Use the event-bus or access the state through the PipelineStateComponent
protocol instead.default-pipeline-state/notify-when-no-first-step-is-active
.
Use the new events (see above) to be notified about changes to the state of the pipelineIncreased time between git-polls in git/wait-for-git
and git/wait-for-details
to 10 seconds and
made that value configurable with an optional parameter :ms-between-polls
, e.g.
(git/wait-with-details ctx some-repo-uri "master" :ms-between-polls 60000)
Added a feature to kill running steps on user request (#31)