A simple skaffold wrapper with support for jinja2 templating.
- Python 2.7 or Python 3.3+ or PyPy 2.4.0+
$ python -m pip install --user j2skaffold
or
(venv)$ python -m pip install j2skaffold
$ j2skaffold dev
will run skaffold dev
after rendering the skaffold.jinja2
file from the current directory.
$ j2skaffold dev --keep-yaml
will do the same, keeping the rendered skaffold.yaml
file. (Useful for debugging.)
The following special variables are available:
skaffold_command
(dev
,build
, etc.)current_profile
(value of the-p
argument)
The following special yaml key can be used:
_set_profile: [name]
- sets the current profile using the-p
argument. Should be always wrapped inside some{% if not current_profile %}
, otherwise it will get passed through, andskaffold
will fail with:
FATA[0000] creating runner: reading configuration: parsing skaffold config: parsing skaffold config: yaml: unmarshal errors:
line 2: field _set_profile not found in type v1alpha3.SkaffoldConfig
Example skaffold.jinja2
demonstrating all the available features:
{% if skaffold_command == 'dev' and not current_profile %}
_set_profile: dev
{% endif %}
apiVersion: skaffold/v1alpha3
kind: Config
build:
artifacts:
- imageName: gcr.io/k8s-skaffold/skaffold-example-{{ current_profile }}
deploy:
kubectl:
manifests:
- k8s-*
profiles:
{% for profile in ['dev', 'production'] %}
- name: {{ profile }}
# ... use any jinja2 syntax
{% endfor %}