⚠️ Breaking Changes
As announced in our v1.1.0
release notes, several deprecated features from before we introduced support for Expression Language have been removed in this release.
- The
fromOrigin
andfromFreight
fields in theargocd-update
,git-clone
,helm-update-chart
, andkustomize-set-image
steps have been removed in favor of the expression functions. - The
<thing>FromStep
fields in theargocd-update
,git-open-pr
, andgit-wait-for-pr
steps have been removed in favor of using step outputs. - The
helm-update-image
step has been removed in favor of the more genericyaml-update
step which supports the same functionalities.
To discover the new way of providing the configuration for these steps, please refer to the updated documentation examples for each step linked above.
⚠️ New Deprecations
Consistent with the changes noted above, the messageFromSteps
field of the git-commit
promotion step is newly deprecated in favor of using the message
field with expressions instead.
messageFromSteps
is scheduled for removal in the v1.5.0 release.
✨ New Features
🔀 Conditional Step Execution
Promotion steps now allow the definition of an if
expression that evaluates to a boolean value. When this expression evaluates to false
, the step is skipped and the next step in the sequence is executed.
apiVersion: kargo.akuity.io/v1alpha1
kind: Stage
metadata:
name: test
namespace: kargo-demo
spec:
# ...
promotionTemplate:
spec:
steps:
- uses: fake-step
if: ${{ outputs.step1.someOutput == 'value' }}
While the current use cases for this within Promotion
templates may seem limited, it does allow you to conditionally execute a task step based on provided task variables in PromotionTask
s.
In a future release, Kargo will be adding support for improved failure and error handling, which will supercharge this feature based on the outcome of previous steps. Follow this issue for more information and updates.
🎛️ Control of Semantics for Freight Requests
Previously, any requested Freight
for a Stage
was automatically available to it as soon as one of the listed upstream Stage
s had successfully verified it. Starting with this release, and thanks to the efforts of @aidan-canva, it is now possible to define an "availability strategy" that requires it to have been verified in all upstream Stages.
apiVersion: kargo.akuity.io/v1alpha1
kind: Stage
metadata:
name: uat
namespace: kargo-demo
spec:
requestedFreight:
- origin:
kind: Warehouse
name: my-warehouse
sources:
stages:
- test
- uat
availabilityStrategy: All
Refer to the updated documentation for more information.
🛡️ Stage Verification Improvements
Expression Language in Arguments
The values specified in args
do now support expressions (including functions) to dynamically set values based on the context of the Freight
being verified.
For example, the following defines an argument commit
with a value set to the commit hash that is being verified using the commitFrom
expression function:
apiVersion: kargo.akuity.io/v1alpha1
kind: Stage
metadata:
name: test
namespace: kargo-demo
spec:
# ...
verification:
analysisTemplates:
- name: kargo-demo
args:
- name: commit
value: ${{ commitFrom("https://github.com/example/repo.git").ID }}
Support for ClusterAnalysisTemplate
s
It is now allowed to reference a ClusterAnalysisTemplate
within the verification configuration of a Stage
. This enables you as a Kargo operator to define verification checks once and use them across multiple Project
s:
apiVersion: kargo.akuity.io/v1alpha1
kind: Stage
metadata:
name: dev
namespace: guestbook
spec:
# ...
verification:
analysisTemplates:
- name: integration-test
kind: ClusterAnalysisTemplate
Additionally, the ClusterAnalysisTemplate
s can now be managed through the Kargo UI. Thanks to @BenHesketh21 for this contribution!
🪜 New and Updated Promotion Steps
- The new
json-parse
andyaml-parse
steps allow for parsing JSON and YAML files to extract values from them. - Thanks to @Tchoupinax, the
git-open-pr
andgit-wait-for-pr
promotion steps do now support Gitea.
🖥️ UI Improvements
- Scaling issues in the
Stage
pipeline view have been addressed. - As noted in another section,
ClusterAnalysisTemplate
s can now be managed through the UI.
🛠️ Other Notable Changes
- You can now opt-in to allow credential lookups for HTTP URLs, refer to
controller.allowCredentialsOverHTTP
in the chart documentation for more information. - "Superstar" (i.e.
**
) glob patterns are now allowed in the include and exclude paths of aWarehouse
's Git subscription, making it easier to include or exclude all files and/or directories in nested paths. - The
Healthy
Condition of aStage
will now beUnknown
instead ofFalse
when the lastPromotion
failed. - Long
Stage
names will no longer result inAnalysisRun
creation failures. (Thanks again @aidan-canva!)
🙏 New Contributors
Kargo would be nothing without its users. An extra special thank you goes out to community members who made their first contribution to Kargo in this release:
Full Changelog: v1.2.3...v1.3.0