No project description provided
Project description
kraken-core
The kraken.core
package provides the primitives of describing a build and deriving build tasks.
Aside from the kraken.core
package, this package also provides the kraken.api
module that is
used only at runtime by Kraken build scripts and the kraken.testing
module for Pytest fixtures.
How does it work?
Kraken uses tasks to describe units of work that can be chained and establish dependencies between each other. Each task has a schema that defines its input and output properties. When an output property is linked to the input property of another task, this established as dependency between the tasks.
from kraken.std.docker_gen import generate_dockerfile
from kraken.std.docker_build import build_docker_image
dockerfile = generate_dockerfile(source_file="Dockerfile.yml")
build_docker_image(dockerfile=dockerfile.path, tags=["example:latest"], load=True)
This populates the project with two tasks and connects the computed output property of one to the other,
allowing the tasks that will run for build_docker_image()
to pick up the dynamically generated Dockerfile that
is written into a location in the build directory by the generate_dockerfile()
task.
Core API
Kraken tasks are described with a schema. Each schema field has a type and may be an input or output parameter. Output parameters are only available once a resource is executed; Kraken will that a proper execution order is established such that output properties are hydrated before another resource tries to access them as an input.
from kraken.core.task import Context, Task, Property, Output, task_factory
from typing_extensions import Annotated
class GenerateDockerfileTask(Task):
source_file: Property[str]
path: Annotated[Property[str], Output]
def execute(self, ctx: Context) -> None:
path = Path(self.path.setdefault(str(ctx.build_directory / "Dockerfile")))
path.write_text(render_dockerfile(Path(self.source_file.get()).read_text()))
generate_dockerfile = task_factory(GenerateDockerfileTask)
Integration testing API
The kraken.testing
module provides Pytest fixtures for integration testing Kraken extension modules. The
kraken_project
fixture provides you with access to a Kraken project object. The kraken.testing.execute()
function is a rudimentary implementation to correctly execute a build graph, but it is not recommended for
production use and should be used in tests only.
Example
def test__helm_push_to_oci_registry(kraken_project: Project, oci_registry: str) -> None:
"""This integration test publishes a Helm chart to a local registry and checks if after publishing it, the
chart can be accessed via the registry."""
helm_settings(kraken_project).add_auth(oci_registry, USER_NAME, USER_PASS, insecure=True)
package = helm_package(chart_directory="data/example-chart")
helm_push(chart_tarball=package.chart_tarball, registry=f"oci://{oci_registry}/example")
kraken_project.context.execute([":helmPush"])
response = httpx.get(f"http://{oci_registry}/v2/example/example-chart/tags/list", auth=(USER_NAME, USER_PASS))
response.raise_for_status()
tags = response.json()
assert tags == {"name": "example/example-chart", "tags": ["0.1.0"]}
This is a working example from the
kraken-std
package.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file kraken-core-0.2.7.tar.gz
.
File metadata
- Download URL: kraken-core-0.2.7.tar.gz
- Upload date:
- Size: 19.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/35.0 requests/2.28.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.12.0 keyring/23.6.0 rfc3986/2.0.0 colorama/0.4.5 CPython/3.10.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c42a378e75d65003ab544c74d76b61c96cf70106537bd4b603d88da92c1ac3b |
|
MD5 | 347bdca3b1d2cb5f00bc17a7a9d1935c |
|
BLAKE2b-256 | 6090bb525eb3d11774a5bce135f9fc0847cdd1c771c5adbb943ccf29e481dda0 |
File details
Details for the file kraken_core-0.2.7-py3-none-any.whl
.
File metadata
- Download URL: kraken_core-0.2.7-py3-none-any.whl
- Upload date:
- Size: 22.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/35.0 requests/2.28.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.12.0 keyring/23.6.0 rfc3986/2.0.0 colorama/0.4.5 CPython/3.10.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e927fcd2e3da8e2ba2336b161249bfca1ca47698ff5943476fb64a0e5886261 |
|
MD5 | 0f9031f60c21f10b9ad819a4ef8a9ec7 |
|
BLAKE2b-256 | 5ec138f6800d97ff5a076b7bf174047cfdaffe09b5c4b2e07e78151663ed5142 |