# Docker Buildx Bake build definition file # Reference: https://github.com/docker/buildx/blob/master/docs/reference/buildx_bake.md variable "REGISTRY_USER" { default = "frappe" } variable PYTHON_VERSION { default = "3.11.6" } variable NODE_VERSION { default = "18.18.2" } variable "FRAPPE_VERSION" { default = "develop" } variable "ERPNEXT_VERSION" { default = "develop" } variable "FRAPPE_REPO" { default = "https://github.com/frappe/frappe" } variable "ERPNEXT_REPO" { default = "https://github.com/frappe/erpnext" } variable "BENCH_REPO" { default = "https://github.com/frappe/bench" } variable "LATEST_BENCH_RELEASE" { default = "latest" } # Bench image target "bench" { args = { GIT_REPO = "${BENCH_REPO}" } context = "images/bench" target = "bench" tags = [ "frappe/bench:${LATEST_BENCH_RELEASE}", "frappe/bench:latest", ] } target "bench-test" { inherits = ["bench"] target = "bench-test" } # Main images # Base for all other targets group "default" { targets = ["erpnext"] } function "tag" { params = [repo, version] result = [ # If `version` param is develop (development build) then use tag `latest` "${version}" == "develop" ? "${REGISTRY_USER}/${repo}:latest" : "${REGISTRY_USER}/${repo}:${version}", # Make short tag for major version if possible. For example, from v13.16.0 make v13. can(regex("(v[0-9]+)[.]", "${version}")) ? "${REGISTRY_USER}/${repo}:${regex("(v[0-9]+)[.]", "${version}")[0]}" : "", ] } target "default-args" { args = { FRAPPE_PATH = "${FRAPPE_REPO}" ERPNEXT_PATH = "${ERPNEXT_REPO}" BENCH_REPO = "${BENCH_REPO}" FRAPPE_BRANCH = "${FRAPPE_VERSION}" ERPNEXT_BRANCH = "${ERPNEXT_VERSION}" PYTHON_VERSION = "${PYTHON_VERSION}" NODE_VERSION = "${NODE_VERSION}" } } target "erpnext" { inherits = ["default-args"] context = "." dockerfile = "images/production/Containerfile" target = "erpnext" tags = tag("erpnext", "${ERPNEXT_VERSION}") }