shore cli
is an layer that embeds shore-core
and adds interactions with files on disk.
This layer provides:
- A common project layout for pipeline development.
- Common Terms (english terms) for pipeline operations.
- Easy way to get started with
Shore
.
project
- Project related operations (currently onlyproject init
sub-command is supported)render
- Render the project into a viewable representation (e.g.JSON/YAML
), renderer dependent.save
- Saves the project into the registeredBackend
. This operation calls theRenderer:Render()
&Backend:SavePipeline()
interfaces.exec
- Calls theBackend:ExecutePipeline()
. Optionally wait for the pipeline execution to finish via theBackend:WaitForPipelineToFinish()
test-remote
- Simple assertion based E2E/Integration test. Calls theBackend:TestPipeline()
interface.
The Project
entity deals with files and directories on disk.
A set of files and directories the shore-cli
depends on.
These files may vary between backend
and/or renderer
implementations but the building blocks are the same.
At the time of writing, a standard shore
project follows this pattern:
my-awesome-pipeline/
├── .gitignore
├── main.pipeline.jsonnet
├── render.yaml
├── exec.yaml
|── E2E.yaml
The project
handles the common files that are expected to be used such as render.yaml
, exec.yaml
, E2E.yaml
and will validate their existence when invoking a command.
Parameters that need to be passed to the templating engine
(Renderer
dependent).
As an example, application
& pipeline
are required parameters to a pipeline, which should be defined at render
time.
Parameters to invoke the pipeline when developing locally.
These are backend
dependent.
A schema that defines how to run E2E tests on pipelines.
tests:
<Test Name>:
execution_args:
parameters:
<parameters> | Object
assertions:
<Stage Name>:
expected_status: String
expected_output:
<outputs> | Object
shore-cli
uses spf13/cobra
for all CLI
interactions.