github.com/ddev/ddev@v1.23.2-0.20240519125000-d824ffe36ff3/containers/ddev-dbserver/Makefile (about) 1 DOCKER_REPO ?= ddev/ddev-dbserver 2 3 VERSION := $(shell git describe --tags --always --dirty) 4 5 .PHONY: build clean test 6 7 CURRENT_ARCH=$(shell ../get_arch.sh) 8 9 # This Makefile explicitly does not include containers/containers_shared.mak, 10 # So has to explicitly declare anything it might need from there (like SHELL) 11 SHELL = /bin/bash 12 13 BUILD_TARGETS=mariadb_5.5_amd64 mariadb_10.0_amd64 mariadb_10.1_both mariadb_10.2_both mariadb_10.3_both mariadb_10.4_both mariadb_10.5_both mariadb_10.6_both mariadb_10.7_both mariadb_10.8_both mariadb_10.11_both mysql_5.5_amd64 mysql_5.6_amd64 mysql_5.7_both mysql_8.0_both_8.0.33 14 TEST_TARGETS=$(shell if [ "$(CURRENT_ARCH)" = "amd64" ] ; then \ 15 echo "mariadb_5.5_test mariadb_10.0_test mariadb_10.1_test mariadb_10.2_test mariadb_10.3_test mariadb_10.4_test mariadb_10.5_test mariadb_10.6_test mariadb_10.7_test mariadb_10.8_test mariadb_10.11_test mysql_5.5_test mysql_5.6_test mysql_5.7_test mysql_8.0_test"; \ 16 else \ 17 echo "mariadb_10.2_test mariadb_10.3_test mariadb_10.4_test mariadb_10.5_test mariadb_10.6_test mariadb_10.7_test mariadb_10.8_test mariadb_10.11_test mysql_5.7_test mysql_8.0_test"; \ 18 fi ) 19 20 container: build 21 build: $(BUILD_TARGETS) 22 23 mariadb_5.5: mariadb_5.5_amd64 24 mariadb_10.0: mariadb_10.0_amd64 25 mariadb_10.1: mariadb_10.1_both 26 mariadb_10.2: mariadb_10.2_both 27 mariadb_10.3: mariadb_10.3_both 28 mariadb_10.4: mariadb_10.4_both 29 mariadb_10.5: mariadb_10.5_both 30 mariadb_10.6: mariadb_10.6_both 31 mariadb_10.7: mariadb_10.7_both 32 mariadb_10.8: mariadb_10.8_both 33 mariadb_10.11: mariadb_10.11_both 34 35 mysql_5.5: mysql_5.5_amd64 36 mysql_5.6: mysql_5.6_amd64 37 mysql_5.7: mysql_5.7_both 38 39 # Mysql 8.0 often must be pinned because xtrabackup is not ready for latest 8.0 40 # So check whether xtrabackup is available for latest 8.0 before changing pin 41 mysql_8.0: mysql_8.0_both_8.0.33 42 43 44 # Examples: 45 # make <dbtype>_<dbmajor>_[both|amd64]_<pin> # pin is optional, often needed for mysql 8.0 46 # make mariadb_10.3_both VERSION=someversion PUSH=true 47 # make mysql_8.0_amd64_8.0.33 VERSION=someversion 48 $(BUILD_TARGETS): 49 @echo "building $@"; 50 export DB_TYPE=$(word 1, $(subst _, ,$@)) && \ 51 export DB_MAJOR_VERSION=$(word 2, $(subst _, ,$@)) && \ 52 export ARCH=$(word 3, $(subst _, ,$@)) && \ 53 export DB_PINNED_VERSION=$(word 4, $(subst _, ,$@)) && \ 54 case $${ARCH} in \ 55 both) \ 56 ARCHS="linux/amd64,linux/arm64"; \ 57 ;; \ 58 amd64 | arm64) \ 59 ARCHS="linux/$${ARCH}"; \ 60 ;; \ 61 esac; \ 62 cmd="./build_image.sh --db-type=$${DB_TYPE} --db-major-version=$${DB_MAJOR_VERSION} --archs=$${ARCHS} --tag=$(VERSION) --docker-args=$(DOCKER_ARGS)" && \ 63 if [ ! -z $${PUSH} ]; then cmd="$$cmd --push"; fi && \ 64 if [ ! -z $${DB_PINNED_VERSION} ]; then cmd="$$cmd --db-pinned-version=$${DB_PINNED_VERSION}"; fi && \ 65 echo $${cmd} && \ 66 $${cmd} 67 68 test: build $(TEST_TARGETS) 69 70 push: 71 @echo "To push all images, use make PUSH=true VERSION=<tag>, to push a specific image, use something like make mariadb_10.3 PUSH=true VERSION=<tag>" && exit 1 72 73 # make mariadb_10.2_test mysql_8.0_test VERSION=20210213_db_image_no_sudo 74 # make test VERSION=20210213_db_image_no_sudo # for all 75 $(TEST_TARGETS): 76 @export DB_TYPE=$(word 1, $(subst _, ,$@)) && \ 77 export DB_MAJOR_VERSION=$(word 2, $(subst _, ,$@)) && \ 78 export ARCH=$(CURRENT_ARCH) && \ 79 printf "\n\n\n==== Testing $${DB_TYPE} $${DB_MAJOR_VERSION} $(VERSION)" && \ 80 ./test/test_dbserver.sh $${DB_TYPE} $${DB_MAJOR_VERSION} $(VERSION) 81 82 clean: 83 @rm -rf VERSION.txt