Improve documentation for pipeline functions
Is your feature request related to a problem?
I want to understand how the --set, --set-string, --from and --from-file arguments work for build_images, create_deployments and start_dev pipeline functions. It would be great if you could add some documentation about it.
Which solution do you suggest? Add some examples about how to use them
Which alternative solutions exist?
Additional context
/kind feature
@dhruvbaldawa thanks for the issue! Yes the pipeline functions need more examples and explanations! In general the flags are there to override certain parts of the config, so in build_images you can override parts of the images config with those:
images:
myImage:
dockerfile: ./Dockerfile
pipelines:
build: |-
echo "Welcome to your custom build pipeline!"
# Exchange Dockerfile here (use --set-string if you want to force the field to be a string e.g. when setting labels to "true")
build_images myImage --set dockerfile=./Dockerfile.dev
# Use --from to create a new config based on an existing config
build_images myOtherImage --from myImage --set context=../
# Use --from-file when you want to load the config for the image from a file
build_images myFileImage --from-file image.yaml
@FabianKramm Thanks for the examples. I am working with many services, and each service has its own devspace.yaml file.
I find it tedious to do a cd service; devspace dev every time I have to work with a certain service. So, I wrote a wrapper script that can take multiple services as command line arguments and then merges their corresponding devspace.yaml file into a temporary devspace.yaml. Then I call the devspace --config temp-devspace.yaml command.
Example usage would look like this:
# Run `devspace dev` for `service-a/devspace.yaml` file
$ xsvc service-a dev
# Run `devspace dev` for a merged `{service-a,service-b}/devspace.yaml` file
$ xsvc service-a,service-b dev
My wrapper script currently merges all the images, deployments, dependencies, and profiles. I am curious to see how I can essentially utilize imports and pipelines to do the same thing in Devspace v6.
Do you have any thoughts about this?
@dhruvbaldawa I see! You could use dependencies for that in your wrapper devspace.yaml with the newest beta version we just released:
version: v2beta1
name: test
dependencies:
service-a:
path: ./service-a/devspace.yaml
service-b:
path: ./service-b/devspace.yaml
service-c:
path: ./service-c/devspace.yaml
service-d:
path: ./service-d/devspace.yaml
pipelines:
build: |-
echo "$@" | xargs run_dependencies --pipeline build
dev: |-
echo "$@" | xargs run_dependencies --pipeline dev
deploy: |-
echo "$@" | xargs run_dependencies --pipeline deploy
purge: |-
echo "$@" | xargs run_dependencies --pipeline purge
Then you can simply use devspace dev service-a service-b or devspace deploy service-a -n my-namespace and it should work as expected.