Using Peak Resources
To create images, workflows or services via the Command Line Interface (CLI), we can define a YAML file or pass the required options through command line arguments. This YAML file includes the payload, metadata, and configuration of the image. By utilizing jinja syntax, we have the ability to pass parameter value as {{value}}
, with the actual value being specified in a separate YAML file.
Defining Parameters in Resource Creation
While creating resources, we can define parameters in a separate file and then use them in the actual file. We can refer the parameters by enclosing the parameter names in {{ }}
and specifying the file path after the -v
flag in the command. We can also add parameters by adding the desired key-value pair after the -p
flag. If we specify both -v
and -p
, the parameters defined on the command line will overwrite the parameters defined in the file.
Consider the following parameters file:
# params.yaml
git_token: "random_git_token"
npm_token: "random_npm_token"
Consider the simple yaml file where we want to use the parameters defined in the above file:
# image.yaml
body:
name: upload-image
version: 0.0.1-test
description: Creating a new upload type image
type: workflow
buildDetails:
source: upload
useCache: false
buildArguments:
- name: git_token
value: {{ git_token }}
- name: npm_token
value: {{ npm_token }}
context: "."
artifact:
path: "."
ignore_files:
- ".gitignore"
- ".dockerignore"
We can use the following command to create an image:
peak images create -v path/to/params.yaml path/to/image.yaml
In the above example, the {{ git_token }}
and {{ npm_token }}
will be replaced by the values defined in the params.yaml
file.
We can also add parameters by adding the desired key-value pair after the -p
flag. If we specify both -v
and -p
, the parameters defined on the command line will overwrite the parameters defined in the file.
peak images create path/to/image.yaml -p git_token=git_token_value -p npm_token=npm_token_value
Similar approach can be used for creating other resources as well.
Using a combination of command line options and yaml
For creating resources such as images and services, we can use a combination of command line options and the yaml
. In this case the command line options will take precedence over the yaml values.
Consider the following example for creating a service:
# service_params.yaml
imageId: 2
versionId: 2
# service.yaml
body:
name: my-service
title: New Service
description: A new service
serviceType: web-app
imageDetails:
imageId: {{ imageId }}
versionId: {{ versionId }}
peak services create -v path/to/service_params.yaml <service-id> path/to/service.yaml --image-id 3
In the above example, the imageId
will be overwritten by the command line options and the final service body will look like:
{
"name": "my-service",
"title": "New Service",
"description": "A new service",
"serviceType": "web-app",
"imageDetails": {
"imageId": 3,
"versionId": 2
}
}
Creating Resource Dependencies with Artifacts
If we want to create a resource such as image, but we don’t want it to be source directly from the source code repository, then we will need to pack all the files we might need to build the image and pack them into an zip
archive which is called Artifact
.
More information for Artifact
can be found in Artifact and Compression Doc.