github.com/drud/ddev@v1.21.5-alpha1.0.20230226034409-94fcc4b94453/containers/ddev-dbserver/Makefile (about) 1 DOCKER_REPO ?= drud/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 mysql_5.5_amd64 mysql_5.6_amd64 mysql_5.7_both mysql_8.0_both_8.0.31 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 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 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 34 mysql_5.5: mysql_5.5_amd64 35 mysql_5.6: mysql_5.6_amd64 36 mysql_5.7: mysql_5.7_both 37 38 # Mysql 8.0 often must be pinned because xtrabackup is not ready for latest 8.0 39 # So check whether xtrabackup is available for latest 8.0 before changing pin 40 mysql_8.0: mysql_8.0_both_8.0.31 41 42 43 # Examples: 44 # make <dbtype>_<dbmajor>_[both|amd64]_<pin> # pin is optional, often needed for mysql 8.0 45 # make mariadb_10.3_both VERSION=someversion PUSH=true 46 # make mysql_8.0_amd64_8.0.31 VERSION=someversion 47 $(BUILD_TARGETS): 48 @echo "building $@"; 49 export DB_TYPE=$(word 1, $(subst _, ,$@)) && \ 50 export DB_MAJOR_VERSION=$(word 2, $(subst _, ,$@)) && \ 51 export ARCH=$(word 3, $(subst _, ,$@)) && \ 52 export DB_PINNED_VERSION=$(word 4, $(subst _, ,$@)) && \ 53 case $${ARCH} in \ 54 both) \ 55 ARCHS="linux/amd64,linux/arm64"; \ 56 ;; \ 57 amd64 | arm64) \ 58 ARCHS="linux/$${ARCH}"; \ 59 ;; \ 60 esac; \ 61 cmd="./build_image.sh --db-type=$${DB_TYPE} --db-major-version=$${DB_MAJOR_VERSION} --archs=$${ARCHS} --tag=$(VERSION) --docker-args=$(DOCKER_ARGS)" && \ 62 if [ ! -z $${PUSH} ]; then cmd="$$cmd --push"; fi && \ 63 if [ ! -z $${DB_PINNED_VERSION} ]; then cmd="$$cmd --db-pinned-version=$${DB_PINNED_VERSION}"; fi && \ 64 echo $${cmd} && \ 65 $${cmd} 66 67 test: build $(TEST_TARGETS) 68 69 push: 70 @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 71 72 # make mariadb_10.2_test mysql_8.0_test VERSION=20210213_db_image_no_sudo 73 # make test VERSION=20210213_db_image_no_sudo # for all 74 $(TEST_TARGETS): 75 @export DB_TYPE=$(word 1, $(subst _, ,$@)) && \ 76 export DB_MAJOR_VERSION=$(word 2, $(subst _, ,$@)) && \ 77 export ARCH=$(CURRENT_ARCH) && \ 78 printf "\n\n\n==== Testing $${DB_TYPE} $${DB_MAJOR_VERSION} $(VERSION)" && \ 79 ./test/test_dbserver.sh $${DB_TYPE} $${DB_MAJOR_VERSION} $(VERSION) 80 81 clean: 82 @rm -rf VERSION.txt