Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,4 @@ kubeconfig_dev-pipelines-api
backend/Dockerfile.driver-debug

backend/src/crd/kubernetes/bin
venv/
18 changes: 13 additions & 5 deletions backend/test/v2/resources/arguments-parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,23 @@


@dsl.container_component
def echo(param1: str, param2: str):
def echo(param1: str, param2: str, output: dsl.OutputPath(str)):
return dsl.ContainerSpec(
image='public.ecr.aws/docker/library/python:3.12',
command=['echo'],
args=[f'{param1}-{param2}'],
command=['sh', '-c'],
args=[f'echo {param1}-{param2} > {output}'],
)


@dsl.pipeline
def arguments_pipeline(param1: str, param2: str) -> str:
first = echo(param1=param1, param2=param2)
second = echo(param1=first.outputs['output'], param2=param2)
return second.outputs['output']


if __name__ == '__main__':
compiler.Compiler().compile(
echo,
arguments_pipeline,
package_path=__file__.replace('.py', '.yaml'),
pipeline_parameters={'param1': 'hello'})
pipeline_parameters={'param1': 'hello', 'param2': 'world'})
67 changes: 62 additions & 5 deletions backend/test/v2/resources/arguments-parameters.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
# PIPELINE DEFINITION
# Name: echo
# Name: arguments-pipeline
# Inputs:
# param1: str [Default: 'hello']
# param2: str
# param2: str [Default: 'world']
# Outputs:
# Output: str
components:
comp-echo:
executorLabel: exec-echo
Expand All @@ -12,19 +14,52 @@ components:
parameterType: STRING
param2:
parameterType: STRING
outputDefinitions:
parameters:
output:
parameterType: STRING
comp-echo-2:
executorLabel: exec-echo-2
inputDefinitions:
parameters:
param1:
parameterType: STRING
param2:
parameterType: STRING
outputDefinitions:
parameters:
output:
parameterType: STRING
deploymentSpec:
executors:
exec-echo:
container:
args:
- '{{$.inputs.parameters[''param1'']}}-{{$.inputs.parameters[''param2'']}}'
- echo {{$.inputs.parameters['param1']}}-{{$.inputs.parameters['param2']}}
> {{$.outputs.parameters['output'].output_file}}
command:
- echo
- sh
- -c
image: public.ecr.aws/docker/library/python:3.12
exec-echo-2:
container:
args:
- echo {{$.inputs.parameters['param1']}}-{{$.inputs.parameters['param2']}}
> {{$.outputs.parameters['output'].output_file}}
command:
- sh
- -c
image: public.ecr.aws/docker/library/python:3.12
pipelineInfo:
name: echo
name: arguments-pipeline
root:
dag:
outputs:
parameters:
Output:
valueFromParameter:
outputParameterKey: output
producerSubtask: echo-2
tasks:
echo:
cachingOptions:
Expand All @@ -39,12 +74,34 @@ root:
componentInputParameter: param2
taskInfo:
name: echo
echo-2:
cachingOptions:
enableCache: true
componentRef:
name: comp-echo-2
dependentTasks:
- echo
inputs:
parameters:
param1:
taskOutputParameter:
outputParameterKey: output
producerTask: echo
param2:
componentInputParameter: param2
taskInfo:
name: echo-2
inputDefinitions:
parameters:
param1:
defaultValue: hello
parameterType: STRING
param2:
defaultValue: world
parameterType: STRING
outputDefinitions:
parameters:
Output:
parameterType: STRING
schemaVersion: 2.1.0
sdkVersion: kfp-2.13.0
9 changes: 8 additions & 1 deletion backend/test/v2/resources/env-var.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,15 @@ def comp(env_var: str) -> str:
return value


@dsl.component(base_image="public.ecr.aws/docker/library/python:3.12")
def process_value(value: str) -> str:
# For demonstration, just append a string
return f"Processed: {value}"


@dsl.pipeline
def test_env_exists(env_var: str) -> str:
comp_task = comp(env_var=env_var)
comp_task.set_caching_options(False)
return comp_task.output
process_task = process_value(value=comp_task.output)
return process_task.output
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@ def comp(message: str) -> str:
return message


@dsl.component(base_image="public.ecr.aws/docker/library/python:3.12")
def process_message(msg: str) -> str:
# For demonstration, just append a string
return f"Processed: {msg}"


@dsl.pipeline
def my_pipeline(message: str) -> str:
return comp(message=message).output
first = comp(message=message)
second = process_message(msg=first.output)
return second.output
15 changes: 11 additions & 4 deletions backend/test/v2/resources/hello-world.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,21 @@


@dsl.container_component
def echo():
def echo(message: str, output: dsl.OutputPath(str)):
return dsl.ContainerSpec(
image='public.ecr.aws/docker/library/python:3.12',
command=['echo'],
args=['hello world'],
command=['sh', '-c'],
args=[f'echo {message} > {output}'],
)


@dsl.pipeline(name='hello-world-pipeline')
def hello_world_pipeline(input_message: str) -> str:
first = echo(message=input_message)
second = echo(message=first.outputs['output'])
return second.outputs['output']


if __name__ == '__main__':
compiler.Compiler().compile(
echo, package_path=__file__.replace('.py', '.yaml'))
hello_world_pipeline, package_path=__file__.replace('.py', '.yaml'))
72 changes: 68 additions & 4 deletions backend/test/v2/resources/hello-world.yaml
Original file line number Diff line number Diff line change
@@ -1,28 +1,92 @@
# PIPELINE DEFINITION
# Name: echo
# Name: hello-world-pipeline
# Inputs:
# input_message: str
# Outputs:
# Output: str
components:
comp-echo:
executorLabel: exec-echo
inputDefinitions:
parameters:
message:
parameterType: STRING
outputDefinitions:
parameters:
output:
parameterType: STRING
comp-echo-2:
executorLabel: exec-echo-2
inputDefinitions:
parameters:
message:
parameterType: STRING
outputDefinitions:
parameters:
output:
parameterType: STRING
deploymentSpec:
executors:
exec-echo:
container:
args:
- hello world
- echo {{$.inputs.parameters['message']}} > {{$.outputs.parameters['output'].output_file}}
command:
- echo
- sh
- -c
image: public.ecr.aws/docker/library/python:3.12
exec-echo-2:
container:
args:
- echo {{$.inputs.parameters['message']}} > {{$.outputs.parameters['output'].output_file}}
command:
- sh
- -c
image: public.ecr.aws/docker/library/python:3.12
pipelineInfo:
name: echo
name: hello-world-pipeline
root:
dag:
outputs:
parameters:
Output:
valueFromParameter:
outputParameterKey: output
producerSubtask: echo-2
tasks:
echo:
cachingOptions:
enableCache: true
componentRef:
name: comp-echo
inputs:
parameters:
message:
componentInputParameter: input_message
taskInfo:
name: echo
echo-2:
cachingOptions:
enableCache: true
componentRef:
name: comp-echo-2
dependentTasks:
- echo
inputs:
parameters:
message:
taskOutputParameter:
outputParameterKey: output
producerTask: echo
taskInfo:
name: echo-2
inputDefinitions:
parameters:
input_message:
parameterType: STRING
outputDefinitions:
parameters:
Output:
parameterType: STRING
schemaVersion: 2.1.0
sdkVersion: kfp-2.13.0
15 changes: 10 additions & 5 deletions backend/test/v2/resources/long-running.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,23 @@


@dsl.container_component
def wait_op():
def wait_op(
duration: int, message: str, output: dsl.OutputPath(str)
):
return dsl.ContainerSpec(
image='alpine:latest',
command=['sh', '-c'],
args=['echo step-1 sleeping for 5m; sleep 300; echo done1'],
args=[
f'echo {message} sleeping for {duration}s; sleep {duration}; echo done > {output}'
],
)


@dsl.pipeline
def wait_awhile():
task1 = wait_op()
task2 = wait_op().after(task1)
def wait_awhile(duration: int = 300) -> str:
task1 = wait_op(duration=duration, message='step-1',)
task2 = wait_op(duration=duration, message=task1.outputs['output'])
return task2.outputs['output']


if __name__ == '__main__':
Expand Down
Loading
Loading