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