# DevopsImageBuild DevopsImageBuild provides functionality for building container images. ```mermaid classDiagram class DevopsImageBuild { drun() - start your localy build image dockerhub_login() - login to dockerhub dockerhub_publish() - publish your image image() - build image localy. Sources for image build are expected at ./image initialize_build_dir() - copy current directory & additional files to target. Additional files can be found [here](../src/main/resources/docker) test() - builds a test image. Sources for image test are expected at ./test } ``` ## Input | name | description | default | | ------------------------ | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | name | dedicated name of the build - also used as image name | module | | module | module name - may result in a hierarchy like name/module | | | stage | not used in this build | | | project_root_path | relative path to projects root. Is used to locate the target dir | | | build_dir_name | name of dir, build is executed in | target | | build_types | list of special builds used. Value has to be contained["IMAGE"] | [] | | mixin_types | mixins are orthoganl to builds and represent additional capabilities. Valid Values are ["RELEASE"] | [] | | credentials_mappings | values for image_dockerhub_user & image_dockerhub_password can be read from gopass | [defaults](#credentials-mapping-defaults) | | image_dockerhub_user | user to access docker-hub | IMAGE_DOCKERHUB_USER from env or credentials from gopass | | image_dockerhub_password | password to access docker-hub | IMAGE_DOCKERHUB_PASSWORD from env or credentials from gopass | | image_tag | tag for publishing the image | IMAGE_TAG from env | | image_naming | Strategy for calculate the image name. Posible values are [NAME_ONLY,NAME_AND_MODULE] |NAME_ONLY | ### Credentials Mapping defaults ```python [ { "gopass_path": "meissa/web/docker.com", "gopass_field": "login", "name": "image_dockerhub_user", }, { "gopass_path": "meissa/web/docker.com", "name": "image_dockerhub_password", }, ] ``` ## Example Usage ### build.py ```python from os import environ from pybuilder.core import task, init from ddadevops import * name = 'my-project' MODULE = 'my-module' PROJECT_ROOT_PATH = '..' @init def initialize(project): project.build_depends_on("ddadevops>=4.0.0") input = { "name": name, "module": MODULE, "stage": "notused", "project_root_path": PROJECT_ROOT_PATH, "build_types": ["IMAGE"], "mixin_types": [], } build = DevopsImageBuild(project, config) build.initialize_build_dir() @task def image(project): build = get_devops_build(project) build.image() @task def drun(project): build = get_devops_build(project) build.drun() @task def test(project): build = get_devops_build(project) build.test() @task def publish(project): build = get_devops_build(project) build.dockerhub_login() build.dockerhub_publish() ``` ### call the build ```bash pyb image test publish ``` ### full example ... can be found [here](../infrastructure/devops-build)