Skip to content

Releases: akuity/kargo

v1.4.1

10 Apr 16:49
bb6a83e
Compare
Choose a tag to compare

What's Changed

  • chore(backport release-1.4): chore(deps): bump golang from 1.24.1-bookworm to 1.24.2-bookworm by @akuitybot in #3807
  • chore(backport release-1.4): chore(deps): bump the go-patch group with 5 updates by @akuitybot in #3808
  • chore(backport release-1.4): feat: support expr funcs in if conditions and vars by @akuitybot in #3828
  • chore(backport release-1.4): chore(deps): update Helm to v3.17.3 by @akuitybot in #3830

Full Changelog: v1.4.0...v1.4.1

v1.4.0

05 Apr 00:05
211fde2
Compare
Choose a tag to compare

🆕 What's New?

Kargo v1.4.0 is more than meets the eye. While we do have a few new features to share with you, a lot of the team's recent work has been less obvious. We've been hard at work paying down some technical debt, cleaning up the codebase,
and making changes intended to help us move faster in the future and keep the project sustainable.

📦 Freight & Promotion Enrichment

Did you know container images can be annotated with standard or custom annotations at build time?

Beginning with this release, Kargo is able to collect any annotations associated with a container image and include those details in Freight -- and you can easily access them within your promotion processes using expressions.

Similarly, thanks to the efforts of first-time community contributor @keithfz, metadata about the actor who triggered a Promotion is also now available within your promotion processes via expressions.

🔬 AnalysisRun Logs

Kargo has long supported post-promotion verification using Argo Rollouts AnalysisTemplates / AnalysisRuns, which were specifically designed for reuse in contexts such as this.

Among the many types of metrics that can be collected by an AnalysisRun, job metrics stand out as being especially useful because they're implemented as Kubernetes Jobs, which gives Kargo users the flexibility to define any arbitrary tests they'd like to run against a Stage by simply providing an appropriate Job spec.

One long-standing frustration with job metrics, however, has been the inability to access logs from a Job's underlying Pod(s) via the Kargo UI. This has been a tough nut to crack. Sometimes, perhaps even often, multiple Kargo controllers are situated in different clusters and all sync to a common Kargo control plane in another cluster. Such a topology raises the specific challenge of making logs from many remote clusters available to the Kargo API server. This difficulty notwithstanding, simply ensuring that relevant logs remain available for a reasonable period after the Pod they came from has been deleted is a challenge in its own right.

If we were to ask ten different Kargo users how they approach logging, we probably would get ten different responses, so the Kargo team has avoided getting into the business of supporting many different logging stacks. (We'd rather remain focused on promotions!) Ultimately, we settled on a "lowest common denominator" approach that we think most users will find acceptable.

At install time, Kargo operators may now optionally define a URL template and map of HTTP headers using the api.rollouts.logs.urlTemplate and api.rollouts.logs.httpHeaders settings, respectively. With these defined, the Kargo API server is able to construct a URL for any Job metric's logs, and as long as they are accessible with an HTTP GET request, can stream them to the UI.

This approach does leave it as an exercise for Kargo administrators to ship and store these logs as they choose, and anything is fair game as long as it can meet the low bar of being accessible via an HTTP GET request.

Those using Kargo through the Akuity Platform should note that forwarding and storage of logs from such Jobs will seamlessly be handled for you.

More information is available on this topic in the documentation.

Other Miscellaneous Improvements

The Kargo UI has been the recipient of a numerous small bug fixes and one major improvement -- PromotionTask and ClusterPromotionTask resources can now be managed through the UI.

In the CLI, re-logging in to a Kargo API server when your token (and refresh token, if applicable) have expired is now considerably easier, requiring only kargo login, with all other arguments and flags inherited from the previous login.

🙏 New Contributors

In addition to @keithfz, mentioned earlier, we'd also like to thank @zeraye for his first contribution to Kargo.

For a more complete list of everthing accomplished in this release, please refer to the Full Changelog.

v1.3.4

04 Apr 23:41
8ca184d
Compare
Choose a tag to compare

What's Changed

  • chore: lock 1.3 docs into 1.3 charts, scripts, etc. by @krancour in #3786
  • chore(backport release-1.3): feat(ui): hide subscription and fix stage node overflow by @akuitybot in #3793
  • chore(backport release-1.3): fix: make quote() func in expressions not double-quote strings by @akuitybot in #3796

Full Changelog: v1.3.3...v1.3.4

v1.4.0-rc.2

03 Apr 18:39
08581b3
Compare
Choose a tag to compare
v1.4.0-rc.2 Pre-release
Pre-release
chore(backport release-1.4): fix(ui): always allow oidc auth code flo…

v1.3.3

03 Apr 19:15
35f12ce
Compare
Choose a tag to compare

What's Changed

  • chore(backport release-1.3): fix: soak time bug by @hiddeco in #3739
  • chore(backport release-1.3): fix(controller): Warehouse watch control flow Stage by @akuitybot in #3741
  • chore(backport release-1.3): fix: always honor availability strategy (#3740) by @krancour in #3744
  • chore(backport release-1.3): fix(ui): windows cli link by @akuitybot in #3766
  • chore(backport release-1.3): fix(ui): silent renew token error by @akuitybot in #3775
  • chore(backport release-1.3): fix(ui): always allow oidc auth code flow over http by @akuitybot in #3781

Full Changelog: v1.3.2...v1.3.3

v1.4.0-rc.1

28 Mar 22:49
da4dadd
Compare
Choose a tag to compare
v1.4.0-rc.1 Pre-release
Pre-release
chore: return error if trying to access analysis run logs and not con…

v1.3.2

24 Mar 18:43
9b41a28
Compare
Choose a tag to compare

What's Changed

  • chore(backport release-1.3): docs: fix broken docs links by @akuitybot in #3637
  • chore(backport release-1.3): docs: releaseName is now required by helm-template by @akuitybot in #3648
  • chore(backport release-1.3): fix(api): sort warehouses when listing by @akuitybot in #3651
  • chore(backport release-1.3): fix(directives): compose-output available to task by @akuitybot in #3652
  • chore(backport release-1.3): docs: fix missing .ID after commitFrom() by @akuitybot in #3667
  • chore(backport release-1.3): fix(api): update Git branch validation by @akuitybot in #3702
  • chore(backport release-1.3): fix(api): further improve branch regex by @akuitybot in #3704

Full Changelog: v1.3.1...v1.3.2

v1.3.1

06 Mar 23:26
0c46743
Compare
Choose a tag to compare

What's Changed

  • chore(backport release-1.3): docs: update docs to use official kargo-helm example repo by @akuitybot in #3567
  • chore(backport release-1.3): docs: add v1.3.0 release notes by @akuitybot in #3571
  • chore(backport release-1.3): fix: improve construction of HTTP transports by @akuitybot in #3574
  • chore(backport release-1.3): fix: require tag or digest for kustomize-set-image by @akuitybot in #3580
  • chore(backport release-1.3): docs: note kustomize-set-image tag/digest requirement by @akuitybot in #3583
  • chore(backport release-1.3): fix(controller): remove mustClone method from gitCloner by @akuitybot in #3601
  • chore(backport release-1.3): fix(ui): invalid verification duration by @akuitybot in #3605
  • chore(backport release-1.3): fix(controller): replace missing credential lookup in git-clone step by @akuitybot in #3611
  • chore(backport release-1.3): fix(ui): graph edge glitch by @akuitybot in #3615

Full Changelog: v1.3.0...v1.3.1

v1.3.0

25 Feb 20:17
f645f54
Compare
Choose a tag to compare

⚠️ 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.

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

🖥️ UI Improvements

  • Scaling issues in the Stage pipeline 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.allowCredentialsOverHTTP in the chart documentation for more information.
  • "Superstar" (i.e. **) glob patterns are now allowed in the include and exclude paths of a Warehouse's Git subscription, making it easier to include or exclude all files and/or directories in nested paths.
  • The Healthy Condition of a Stage will now be Unknown instead of False when the last Promotion failed.
  • Long Stage names will no longer result in AnalysisRun 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

v1.3.0-rc.1

24 Feb 16:48
34ce988
Compare
Choose a tag to compare
v1.3.0-rc.1 Pre-release
Pre-release
chore(backport release-1.3): fix: Long Stage names result in Analysis…