Releases: arcalot/arcaflow-engine
v0.20.0-beta.2
What's Changed
- Added code to disable a foreach step by @jaredoconnell in #213
- Reduce unnecessary warnings by @jaredoconnell in #214
Full Changelog: v0.20.0-beta.1...v0.20.0-beta.2
v0.20.0-beta.1
This release significantly improves the usability of Arcaflow.
The graceful handling of disabled steps changes make it so that you can disable steps without causing workflow failure. There are multiple methods to find tune to each use case.
Changes
- Graceful handling of disabled steps (documentation: arcalot.io)
- Added
!oneof
for OR dependencies in inferred outputs. - Added
!ordisabled
for convenience OR dependency on success and disabled outputs. - Added
!wait-optional
for optional dependencies that resolve whenever something succeeds, but waits for success or failure, with the field being left out when the dependency fails. - Added
!soft-optional
for optional dependencies that should not block output resolution. Not recommended for most use cases.
- Added
- Made generated schema IDs not enforced
- Inferred output schemas will not need to have the ID match
- Inferred step input objects will not need to have the ID match
- Bind constants function output will not need to have the ID match.
Pull Requests
- Add random numbering to the loadfile test by @jaredoconnell in #203
- Use unenforced id feature by @jaredoconnell in #204
- Oneof Outputs for Graceful Handling of Disabled Steps by @jaredoconnell in #207
- Skip tests that require pulling container images by @jaredoconnell in #209
- Add unit tests for buildOneOfExpressions by @jaredoconnell in #208
- Added shorthand disable tag by @jaredoconnell in #211
- Added optional expression tags by @jaredoconnell in #212
Full Changelog: v0.19.1...v0.20.0-beta.1
v0.19.1
Critical Fixes
Upgrading github.com/docker/docker v26.1.5
to fix CVE-2024-41110.
New Features
getEnvVar()
A simple builtin function for a workflow to get the value of an environment variable on the arcaflow engine's host computing environment. The first parameter is your environment variable's identifier, and the second parameter is the value used if your environment variable is not found.
workflow.yaml
steps:
stressng:
input:
stressors:
stressor: cpu
workers: !expr 'getEnvVar(QTY_WORKERS_CPU, 1)'
Get Object Namespaces
Use the --get-namespaces
option at the cli to get the objects and their namespaces from a workflow and present them as a table.
❯ ./arcaflow --get-namespaces --workflow workflow.yaml --config config.yaml --input input.yaml
OBJECT NAMESPACE
HogCpuInput $.steps.hog_cpu_wf.execute.inputs.items
KubernetesTarget $.steps.hog_cpu_wf.execute.inputs.items
ThirdObject $.steps.hog_cpu_wf.execute.inputs.items
StressNGParams $.steps.hog_cpu_wf.execute.inputs.items.stressng_params
error $.steps.hog_cpu_wf.failed.outputs.error
data $.steps.hog_cpu_wf.outputs.outputs.success
given workflow.yaml
version: v0.2.0
input:
root: HogCpuInput
objects:
ThirdObject:
id: ThirdObject
properties:
name:
type:
type_id: string
KubernetesTarget:
id: KubernetesTarget
properties:
kubeconfig_path:
type:
type_id: string
namespace:
type:
type_id: string
required: true
HogCpuInput:
id: HogCpuInput
properties:
stressng_params:
type:
type_id: ref
id: StressNGParams
namespace: $.steps.stressng.starting.inputs.input
steps:
stressng:
plugin:
src: quay.io/arcalot/arcaflow-plugin-stressng:0.6.0
deployment_type: image
step: workload
input: !expr $.input.stressng_params
outputs:
success:
stressng: !expr $.steps.stressng.outputs.success
Other changes
- Complete re-write of the dependency system. This allows quick failure, and will enable future features. This touches a lot of the code so keep an eye out for bugs.
Pull Requests
- Update the CI's use of the common Go reusable workflows by @webbnh in #194
- Use dependency system: Part 1 by @jaredoconnell in #193
- Added function getEnvVar() by @jaredoconnell in #196
- Make Namespace Behavior Public by @mfleader in #199
- CLI Show Workflow Namespaces Option by @mfleader in #200
- Use dependency System: Part 2; Marking as unresolvable by @jaredoconnell in #197
- update dependencies for cve fix by @mfleader in #202
Full Changelog: v0.18.1...v0.19.1
v0.19.0-beta.1
What's Changed
- Update the CI's use of the common Go reusable workflows by @webbnh in #194
- Use dependency system: Part 1 by @jaredoconnell in #193
- Added function getEnvVar() by @jaredoconnell in #196
- Make Namespace Behavior Public by @mfleader in #199
- CLI Show Workflow Namespaces Option by @mfleader in #200
- Use dependency System: Part 2; Marking as unresolvable by @jaredoconnell in #197
Full Changelog: v0.18.1...v0.19.0-beta.1
v0.18.1
What's Changed
- change method of setting config defaults by @dustinblack in #192
Full Changelog: v0.18.0...v0.18.1
v0.18.0
v0.17.2
The CI now uses the organization-wide GO version variable, which as of the time of this release is set to 1.21.11.
This should result in 1.21.11 being used for the build artifacts, including the Python library.
What's Changed
- Refactor build workflow by @webbnh in #187
- Updated dependencies by @jaredoconnell in #188
Full Changelog: v0.17.1...v0.17.2
v0.17.1
Feature Changes
- Add support for privileged containers when using the Podman and/or Docker deployers.
- Add bindConstants() builtin function.
- Add support for namespaced scopes when defining schemas.
Features in Progress (use at own risk!)
- Disable steps.
Bug Fixes
- Fixed plugin provider race condition.
- Fixed rare deadlock that could occur when using
stop_if
. - Created a more user friendly error message on user schema definition error.
Pull Requests
- Namespaced scopes by @jaredoconnell in #167
- Plugin provider atp race condition by @jaredoconnell in #172
- Use RootObject to improve validation by @jaredoconnell in #175
- upgrade docker and podman deployers by @mfleader in #177
- Transition to stage cancelled by @jaredoconnell in #173
- Add bindConstants() builtin function by @mfleader in #178
- Disabled steps by @jaredoconnell in #180
- update podman deployer to v0.11.0 by @dustinblack in #181
- Update to latest expression dependency version by @jaredoconnell in #184
- Upgrade SDK to use ApplyNamespace instead of ApplyScope by @jaredoconnell in #183
- Update go updates by @platform-engineering-bot in #170
bindConstants()
schema help doc by @mfleader in #185
Full Changelog: v0.14.1...v0.17.1
v0.17.0-beta2
What's Changed
- Update to latest expression dependency version by @jaredoconnell in #184
- Upgrade SDK to use ApplyNamespace instead of ApplyScope by @jaredoconnell in #183
Full Changelog: v0.17.0-beta1...v0.17.0-beta2
v0.17.0-beta1
What's Changed
- Transition to stage cancelled by @jaredoconnell in #173
- Add bindConstants() builtin function by @mfleader in #178
- Disabled steps by @jaredoconnell in #180
- update podman deployer to v0.11.0 by @dustinblack in #181
Full Changelog: v0.16.0-beta1...v0.17.0-beta1