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