v1.3.0
⚠️ 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
fromOriginandfromFreightfields in theargocd-update,git-clone,helm-update-chart, andkustomize-set-imagesteps have been removed in favor of the expression functions. - The
kustomize-set-imagestep no longer implicitly sets the tag from the Freight image and users must specify either thetagordigestthey wish to set (e.g. usingimageFromfunction). - The
<thing>FromStepfields in theargocd-update,git-open-pr, andgit-wait-for-prsteps have been removed in favor of using step outputs. - The
helm-update-imagestep has been removed in favor of the more genericyaml-updatestep 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 PromotionTasks.
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 Stages 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 ClusterAnalysisTemplates
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 Projects:
apiVersion: kargo.akuity.io/v1alpha1
kind: Stage
metadata:
name: dev
namespace: guestbook
spec:
# ...
verification:
analysisTemplates:
- name: integration-test
kind: ClusterAnalysisTemplate
Additionally, the ClusterAnalysisTemplates can now be managed through the Kargo UI. Thanks to @BenHesketh21 for this contribution!
🪜 New and Updated Promotion Steps
- The new
json-parseandyaml-parsesteps allow for parsing JSON and YAML files to extract values from them. - Thanks to @Tchoupinax, the
git-open-prandgit-wait-for-prpromotion steps do now support Gitea.
🖥️ UI Improvements
- Scaling issues in the
Stagepipeline view have been addressed. - As noted in another section,
ClusterAnalysisTemplates 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.allowCredentialsOverHTTPin 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
HealthyCondition of aStagewill now beUnknowninstead ofFalsewhen the lastPromotionfailed. - Long
Stagenames will no longer result inAnalysisRuncreation 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:
- @aarontams
- @nixphix
- @mimartin12
- @joelddiaz
- @abelhoula
Full Changelog: https://github.com/akuity/kargo/compare/v1.2.3...v1.3.0