You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

528 lines
22 KiB

5 months ago
SHELL := /bin/bash
IMAGE_VERSION ?= "latest"
NONQUOTE_IMAGE_VERSION := $(patsubst "%",%,$(IMAGE_VERSION))
DOCKER_BUILD_FLAGS ?=
SPLUNK_ANSIBLE_REPO ?= https://github.com/splunk/splunk-ansible.git
SPLUNK_ANSIBLE_BRANCH ?= develop
SPLUNK_COMPOSE ?= cluster_absolute_unit.yaml
# Set Splunk version/build parameters here to define downstream URLs and file names
SPLUNK_PRODUCT := splunk
SPLUNK_VERSION := 9.2.2.20240415
SPLUNK_BUILD := 51a9cf8e4d88
ifeq ($(shell arch), s390x)
SPLUNK_ARCH = s390x
else
SPLUNK_ARCH = x86_64
endif
# Linux Splunk arguments
SPLUNK_LINUX_FILENAME ?= splunkbeta-${SPLUNK_VERSION}-${SPLUNK_BUILD}-Linux-${SPLUNK_ARCH}.tgz
SPLUNK_LINUX_BUILD_URL ?= https://download.splunk.com/products/${SPLUNK_PRODUCT}/beta/${SPLUNK_VERSION}/linux/${SPLUNK_LINUX_FILENAME}
UF_LINUX_FILENAME ?= splunkforwarder-${SPLUNK_VERSION}-${SPLUNK_BUILD}-Linux-${SPLUNK_ARCH}.tgz
UF_LINUX_BUILD_URL ?= https://download.splunk.com/products/universalforwarder/releases/${SPLUNK_VERSION}/linux/${UF_LINUX_FILENAME}
# Windows Splunk arguments
SPLUNK_WIN_FILENAME ?= splunk-${SPLUNK_VERSION}-${SPLUNK_BUILD}-x64-release.msi
SPLUNK_WIN_BUILD_URL ?= https://download.splunk.com/products/${SPLUNK_PRODUCT}/releases/${SPLUNK_VERSION}/windows/${SPLUNK_WIN_FILENAME}
UF_WIN_FILENAME ?= splunkforwarder-${SPLUNK_VERSION}-${SPLUNK_BUILD}-x64-release.msi
UF_WIN_BUILD_URL ?= https://download.splunk.com/products/universalforwarder/releases/${SPLUNK_VERSION}/windows/${UF_WIN_FILENAME}
# Security Scanner Variables
SCANNER_DATE := `date +%Y-%m-%d`
SCANNER_DATE_YEST := `TZ=GMT+24 +%Y:%m:%d`
SCANNER_VERSION := v8
SCANNER_LOCALIP := $(shell ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | awk '{print $1}' | head -n 1)
SCANNER_IMAGES_TO_SCAN := splunk-debian-9 splunk-debian-10 splunk-centos-7 splunk-redhat-8 uf-debian-9 uf-debian-10 uf-centos-7 uf-redhat-8 splunk-py23-debian-9 splunk-py23-debian-10 splunk-py23-centos-7 splunk-py23-redhat-8 uf-py23-debian-9 uf-py23-debian-10 uf-py23-centos-7 uf-py23-redhat-8
CONTAINERS_TO_SAVE := splunk-debian-9 splunk-debian-10 splunk-centos-7 splunk-redhat-8 uf-debian-9 uf-debian-10 uf-centos-7 uf-redhat-8 splunk-py23-debian-9 splunk-py23-debian-10 splunk-py23-centos-7 splunk-py23-redhat-8 uf-py23-debian-9 uf-py23-debian-10 uf-py23-centos-7 uf-py23-redhat-8
ifeq ($(shell uname), Linux)
SCANNER_FILE = clair-scanner_linux_amd64
else ifeq ($(shell uname), Darwin)
SCANNER_FILE = clair-scanner_darwin_amd64
else
SCANNER_FILE = clair-scanner_windows_amd64.exe
endif
.PHONY: tests interactive_tutorials
all: splunk uf splunk-py23 uf-py23
ansible:
@if [ -d "splunk-ansible" ]; then \
echo "Ansible directory exists - skipping clone"; \
else \
git clone ${SPLUNK_ANSIBLE_REPO} --branch ${SPLUNK_ANSIBLE_BRANCH}; \
fi
@cd splunk-ansible && git rev-parse HEAD > version.txt
@cat splunk-ansible/version.txt
##### Base images #####
base: base-debian-9 base-debian-10 base-centos-7 base-centos-8 base-redhat-8 base-windows-2016
base-debian-10:
docker build ${DOCKER_BUILD_FLAGS} -t base-debian-10:${IMAGE_VERSION} ./base/debian-10
base-debian-9:
docker build ${DOCKER_BUILD_FLAGS} -t base-debian-9:${IMAGE_VERSION} ./base/debian-9
base-centos-7:
docker build ${DOCKER_BUILD_FLAGS} -t base-centos-7:${IMAGE_VERSION} ./base/centos-7
base-centos-8:
docker build ${DOCKER_BUILD_FLAGS} -t base-centos-8:${IMAGE_VERSION} ./base/centos-8
base-redhat-8:
docker build ${DOCKER_BUILD_FLAGS} --label version=${SPLUNK_VERSION} -t base-redhat-8:${IMAGE_VERSION} ./base/redhat-8
base-redhat-8-armv8:
docker buildx build ${DOCKER_BUILD_FLAGS} --build-arg BUSYBOX_URL=${BUSYBOX_URL} --label version=${SPLUNK_VERSION} -t base-redhat-8-armv8:${IMAGE_VERSION} ./base/redhat-8
base-windows-2016:
docker build ${DOCKER_BUILD_FLAGS} -t base-windows-2016:${IMAGE_VERSION} ./base/windows-2016
##### Minimal images #####
minimal: minimal-debian-9 minimal-debian-10 minimal-centos-7 minimal-centos-8 minimal-redhat-8
minimal-debian-9: base-debian-9
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-debian-9 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
--target minimal -t minimal-debian-9:${IMAGE_VERSION} .
minimal-debian-10: base-debian-10
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-debian-10 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
--target minimal -t minimal-debian-10:${IMAGE_VERSION} .
minimal-centos-7: base-centos-7
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-centos-7 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
--target minimal -t minimal-centos-7:${IMAGE_VERSION} .
minimal-centos-8: base-centos-8
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-centos-8 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
--target minimal -t minimal-centos-8:${IMAGE_VERSION} .
minimal-redhat-8: base-redhat-8
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-redhat-8 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
--target minimal -t minimal-redhat-8:${IMAGE_VERSION} .
##### Bare images #####
bare: bare-debian-9 bare-debian-10 bare-centos-7 bare-centos-8 bare-redhat-8
bare-debian-9: base-debian-9
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-debian-9 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
--target bare -t bare-debian-9:${IMAGE_VERSION} .
bare-debian-10: base-debian-10
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-debian-10 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
--target bare -t bare-debian-10:${IMAGE_VERSION} .
bare-centos-7: base-centos-7
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-centos-7 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
--target bare -t bare-centos-7:${IMAGE_VERSION} .
bare-centos-8: base-centos-8
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-centos-8 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
--target bare -t bare-centos-8:${IMAGE_VERSION} .
bare-redhat-8: base-redhat-8
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-redhat-8 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
--target bare -t bare-redhat-8:${IMAGE_VERSION} .
##### Splunk images #####
splunk: ansible splunk-debian-9 splunk-debian-10 splunk-centos-7 splunk-centos-8 splunk-redhat-8
splunk-debian-9: base-debian-9 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-debian-9 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
-t splunk-debian-9:${IMAGE_VERSION} .
splunk-debian-10: base-debian-10 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-debian-10 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
-t splunk-debian-10:${IMAGE_VERSION} .
splunk-centos-7: base-centos-7 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-centos-7 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
-t splunk-centos-7:${IMAGE_VERSION} .
splunk-centos-8: base-centos-8 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-centos-8 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
-t splunk-centos-8:${IMAGE_VERSION} .
splunk-redhat-8: base-redhat-8 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-redhat-8 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_LINUX_BUILD_URL} \
-t splunk-redhat-8:${IMAGE_VERSION} .
splunk-windows-2016: base-windows-2016 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f splunk/windows-2016/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-windows-2016 \
--build-arg SPLUNK_BUILD_URL=${SPLUNK_WIN_BUILD_URL} \
-t splunk-windows-2016:${IMAGE_VERSION} .
##### UF images #####
uf: ansible uf-debian-9 uf-debian-10 uf-centos-7 uf-centos-8 uf-redhat-8
ufbare-debian-9: base-debian-9 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f uf/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-debian-9 \
--build-arg SPLUNK_BUILD_URL=${UF_LINUX_BUILD_URL} \
--target bare -t ufbare-debian-9:${IMAGE_VERSION} .
ufbare-debian-10: base-debian-10 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f uf/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-debian-10 \
--build-arg SPLUNK_BUILD_URL=${UF_LINUX_BUILD_URL} \
--target bare -t ufbare-debian-10:${IMAGE_VERSION} .
uf-debian-9: base-debian-9 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f uf/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-debian-9 \
--build-arg SPLUNK_BUILD_URL=${UF_LINUX_BUILD_URL} \
-t uf-debian-9:${IMAGE_VERSION} .
uf-debian-10: base-debian-10 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f uf/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-debian-10 \
--build-arg SPLUNK_BUILD_URL=${UF_LINUX_BUILD_URL} \
-t uf-debian-10:${IMAGE_VERSION} .
uf-centos-7: base-centos-7 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f uf/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-centos-7 \
--build-arg SPLUNK_BUILD_URL=${UF_LINUX_BUILD_URL} \
-t uf-centos-7:${IMAGE_VERSION} .
uf-centos-8: base-centos-8 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f uf/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-centos-8 \
--build-arg SPLUNK_BUILD_URL=${UF_LINUX_BUILD_URL} \
-t uf-centos-8:${IMAGE_VERSION} .
uf-redhat-8: base-redhat-8 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f uf/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-redhat-8 \
--build-arg SPLUNK_BUILD_URL=${UF_LINUX_BUILD_URL} \
-t uf-redhat-8:${IMAGE_VERSION} .
uf-redhat-8-armv8: base-redhat-8-armv8 ansible
docker buildx build ${DOCKER_BUILD_FLAGS} \
-f uf/common-files/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-redhat-8-armv8 \
--build-arg SPLUNK_BUILD_URL=${UF_LINUX_BUILD_URL} \
-t uf-redhat-8-armv8:${IMAGE_VERSION} .
uf-windows-2016: base-windows-2016 ansible
docker build ${DOCKER_BUILD_FLAGS} \
-f uf/windows-2016/Dockerfile \
--build-arg SPLUNK_BASE_IMAGE=base-windows-2016 \
--build-arg SPLUNK_BUILD_URL=${UF_WIN_BUILD_URL} \
-t uf-windows-2016:${IMAGE_VERSION} .
##### Python 3 support #####
splunk-py23: splunk-py23-debian-9 splunk-py23-debian-10 splunk-py23-centos-7 splunk-py23-centos-8 splunk-py23-redhat-8
splunk-py23-debian-9: splunk-debian-9
docker build ${DOCKER_BUILD_FLAGS} \
-f py23-image/debian-9/Dockerfile \
--build-arg SPLUNK_PRODUCT=splunk \
-t splunk-py23-debian-9:${IMAGE_VERSION} .
splunk-py23-debian-10: splunk-debian-10
docker build ${DOCKER_BUILD_FLAGS} \
-f py23-image/debian-10/Dockerfile \
--build-arg SPLUNK_PRODUCT=splunk \
-t splunk-py23-debian-10:${IMAGE_VERSION} .
splunk-py23-centos-7: splunk-centos-7
docker build ${DOCKER_BUILD_FLAGS} \
-f py23-image/centos-7/Dockerfile \
--build-arg SPLUNK_PRODUCT=splunk \
-t splunk-py23-centos-7:${IMAGE_VERSION} .
splunk-py23-centos-8: splunk-centos-8
docker build ${DOCKER_BUILD_FLAGS} \
-f py23-image/centos-8/Dockerfile \
--build-arg SPLUNK_PRODUCT=splunk \
-t splunk-py23-centos-8:${IMAGE_VERSION} .
splunk-py23-redhat-8: splunk-redhat-8
docker build ${DOCKER_BUILD_FLAGS} \
-f py23-image/redhat-8/Dockerfile \
--build-arg SPLUNK_PRODUCT=splunk \
-t splunk-py23-redhat-8:${IMAGE_VERSION} .
uf-py23: uf-py23-debian-9 uf-py23-debian-10 uf-py23-centos-7 uf-py23-redhat-8
uf-py23-debian-9: uf-debian-9
docker build ${DOCKER_BUILD_FLAGS} \
-f py23-image/debian-9/Dockerfile \
--build-arg SPLUNK_PRODUCT=uf \
-t uf-py23-debian-9:${IMAGE_VERSION} .
uf-py23-debian-10: uf-debian-10
docker build ${DOCKER_BUILD_FLAGS} \
-f py23-image/debian-10/Dockerfile \
--build-arg SPLUNK_PRODUCT=uf \
-t uf-py23-debian-10:${IMAGE_VERSION} .
uf-py23-centos-7: uf-centos-7
docker build ${DOCKER_BUILD_FLAGS} \
-f py23-image/centos-7/Dockerfile \
--build-arg SPLUNK_PRODUCT=uf \
-t uf-py23-centos-7:${IMAGE_VERSION} .
uf-py23-centos-8: uf-centos-8
docker build ${DOCKER_BUILD_FLAGS} \
-f py23-image/centos-8/Dockerfile \
--build-arg SPLUNK_PRODUCT=uf \
-t uf-py23-centos-8:${IMAGE_VERSION} .
uf-py23-redhat-8: uf-redhat-8
docker build ${DOCKER_BUILD_FLAGS} \
-f py23-image/redhat-8/Dockerfile \
--build-arg SPLUNK_PRODUCT=uf \
-t uf-py23-redhat-8:${IMAGE_VERSION} .
##### Tests #####
sample-compose-up: sample-compose-down
docker-compose -f test_scenarios/${SPLUNK_COMPOSE} up -d
sample-compose-down:
docker-compose -f test_scenarios/${SPLUNK_COMPOSE} down --volumes --remove-orphans || true
test: clean ansible test_setup all run_small_tests run_large_tests
run_small_tests: run_small_tests_centos7 run_small_tests_redhat8 run_small_tests_debian9 run_small_tests_debian10
run_large_tests: run_large_tests_centos7 run_large_tests_redhat8 run_large_tests_debian9 run_large_tests_debian10
test_centos7: clean ansible splunk-centos-7 uf-centos-7 test_setup run_small_tests_centos7 run_large_tests_centos7
test_redhat8: clean ansible splunk-redhat-8 uf-redhat-8 test_setup run_small_tests_redhat8 run_large_tests_redhat8
test_debian9: clean ansible splunk-debian-9 uf-debian-9 test_setup run_small_tests_debian9 run_large_tests_debian9
test_debian10: clean ansible splunk-debian-10 uf-debian-10 test_setup run_small_tests_debian10 run_large_tests_debian10
run_small_tests_centos7:
@echo 'Running the super awesome small tests; CentOS 7'
pytest -n 2 --reruns 1 -sv tests/test_single_splunk_image.py --platform centos-7 --junitxml test-results/centos7-result/testresults_small_centos7.xml
run_large_tests_centos7:
@echo 'Running the super awesome large tests; CentOS 7'
pytest -n 2 --reruns 1 -sv tests/test_distributed_splunk_image.py --platform centos-7 --junitxml test-results/centos7-result/testresults_large_centos7.xml
run_small_tests_redhat8:
@echo 'Running the super awesome small tests; RedHat 8'
pytest -n 2 --reruns 1 -sv tests/test_single_splunk_image.py --platform redhat-8 --junitxml test-results/redhat8-result/testresults_small_redhat8.xml
run_large_tests_redhat8:
@echo 'Running the super awesome large tests; RedHat 8'
pytest -n 2 --reruns 1 -sv tests/test_distributed_splunk_image.py --platform redhat-8 --junitxml test-results/redhat8-result/testresults_large_redhat8.xml
test_setup:
@echo 'Install test requirements'
pip install --upgrade pip
pip install -r $(shell pwd)/tests/requirements.txt --upgrade
mkdir test-results/centos7-result || true
mkdir test-results/debian9-result || true
mkdir test-results/debian10-result || true
mkdir test-results/redhat8-result || true
run_small_tests_debian9:
@echo 'Running the super awesome small tests; Debian 9'
pytest -n 2 --reruns 1 -sv tests/test_single_splunk_image.py --platform debian-9 --junitxml test-results/debian9-result/testresults_small_debian9.xml
run_large_tests_debian9:
@echo 'Running the super awesome large tests; Debian 9'
pytest -n 2 --reruns 1 -sv tests/test_distributed_splunk_image.py --platform debian-9 --junitxml test-results/debian9-result/testresults_large_debian9.xml
run_small_tests_debian10:
@echo 'Running the super awesome small tests; Debian 10'
pytest -n 2 --reruns 1 -sv tests/test_single_splunk_image.py --platform debian-10 --junitxml test-results/debian10-result/testresults_small_debian10.xml
run_large_tests_debian10:
@echo 'Running the super awesome large tests; Debian 10'
pytest -n 2 --reruns 1 -sv tests/test_distributed_splunk_image.py --platform debian-10 --junitxml test-results/debian10-result/testresults_large_debian10.xml
save_containers:
@echo 'Saving the following containers:${CONTAINERS_TO_SAVE}'
mkdir test-results/saved_images || true
$(foreach image,${CONTAINERS_TO_SAVE}, echo "Currently saving: ${image}"; docker save ${image} --output test-results/saved_images/${image}.tar; echo "Compressing: ${image}.tar"; gzip test-results/saved_images/${image}.tar; )
test_python3_all: test_splunk_python3_all test_uf_python3_all
test_splunk_python3_all: test_splunk_centos7_python3 test_splunk_redhat8_python3 test_splunk_debian9_python3 test_splunk_debian10_python3
test_uf_python3_all: test_uf_centos7_python3 test_uf_redhat8_python3 test_uf_debian9_python3 test_uf_debian10_python3
test_splunk_centos7_python3:
$(call test_python3_installation,splunk-py23-centos-7)
test_splunk_redhat8_python3:
$(call test_python3_installation,splunk-py23-redhat-8)
test_splunk_debian9_python3:
$(call test_python3_installation,splunk-py23-debian-9)
test_splunk_debian10_python3:
$(call test_python3_installation,splunk-py23-debian-10)
test_uf_centos7_python3:
$(call test_python3_installation,uf-py23-centos-7)
test_uf_redhat8_python3:
$(call test_python3_installation,uf-py23-redhat-8)
test_uf_debian9_python3:
$(call test_python3_installation,uf-py23-debian-9)
test_uf_debian10_python3:
$(call test_python3_installation,uf-py23-debian-10)
define test_python3_installation
docker run -d --rm --name $1 -it $1 bash
docker exec -it $1 bash -c 'if [[ $$(python3 -V) =~ "Python 3" ]] ; then echo "$$(python3 -V) installed" ; else echo "No Python3 installation found" ; docker kill $1 ; exit 1 ; fi'
docker kill $1
endef
test_python2_all: test_splunk_python2_all test_uf_python2_all
test_splunk_python2_all: test_splunk_centos7_python2 test_splunk_redhat8_python2 test_splunk_debian9_python2 test_splunk_debian10_python2
test_uf_python2_all: test_uf_centos7_python2 test_uf_redhat8_python2 test_uf_debian9_python2 test_uf_debian10_python2
test_splunk_centos7_python2:
$(call test_python2_installation,splunk-py23-centos-7)
test_splunk_redhat8_python2:
$(call test_python2_installation,splunk-py23-redhat-8)
test_splunk_debian9_python2:
$(call test_python2_installation,splunk-py23-debian-9)
test_splunk_debian10_python2:
$(call test_python2_installation,splunk-py23-debian-10)
test_uf_centos7_python2:
$(call test_python2_installation,uf-py23-centos-7)
test_uf_redhat8_python2:
$(call test_python2_installation,uf-py23-redhat-8)
test_uf_debian9_python2:
$(call test_python2_installation,uf-py23-debian-9)
test_uf_debian10_python2:
$(call test_python2_installation,uf-py23-debian-10)
#python2 version print to stderr, hence the 2>&1
define test_python2_installation
docker run -d --rm --name $1 -it $1 bash
docker exec -it $1 bash -c 'if [[ $$(python -V 2>&1) =~ "Python 2" ]] ; then echo "$$(python -V 2>&1) is the default python" ; else echo "Python is not default to python2" ; docker kill $1 ; exit 1 ; fi'
docker kill $1
endef
test_debian10_image_size:
$(call test_image_size,splunk-debian-10)
define test_image_size
docker pull splunk/splunk:edge
CUR_SIZE=$$(docker image inspect $1:latest --format='{{.Size}}') ; \
EDGE_SIZE=$$(docker image inspect splunk/splunk:edge --format='{{.Size}}') ; \
echo "current $1 image size = "$$CUR_SIZE ; \
echo "edge image size = "$$EDGE_SIZE ; \
if [[ $$CUR_SIZE -gt $$EDGE_SIZE*140/100 ]] ; then echo "current image size is 40% more than edge image" ; exit 1 ; fi
endef
setup_clair_scanner:
mkdir clair-scanner-logs
mkdir test-results/cucumber
docker stop clair_db || true
docker rm clair_db || true
docker stop clair || true
docker rm clair || true
docker pull arminc/clair-db:${SCANNER_DATE} || docker pull arminc/clair-db:${SCANNER_DATE_YEST} || echo "WARNING: Failed to pull daily image, defaulting to latest" >> clair-scanner-logs/clair_setup_errors.log ; docker pull arminc/clair-db:latest
docker run -d --name clair_db arminc/clair-db:${SCANNER_DATE} || docker run -d --name clair_db arminc/clair-db:${SCANNER_DATE_YEST} || docker run -d --name clair_db arminc/clair-db:latest
docker run -p 6060:6060 --link clair_db:postgres -d --name clair --restart on-failure arminc/clair-local-scan:v2.0.6
wget https://github.com/arminc/clair-scanner/releases/download/${SCANNER_VERSION}/${SCANNER_FILE}
mv ${SCANNER_FILE} clair-scanner
chmod +x clair-scanner
echo "Waiting for clair daemon to start"
retries=0 ; while( ! wget -T 10 -q -O /dev/null http://0.0.0.0:6060/v1/namespaces ) ; do sleep 1 ; echo -n "." ; if [ $$retries -eq 10 ] ; then echo " Timeout, aborting." ; exit 1 ; fi ; retries=$$(($$retries+1)) ; done
echo "Daemon started."
run_clair_scan:
$(foreach image,${SCANNER_IMAGES_TO_SCAN}, mkdir test-results/clair-scanner-${image}; ./clair-scanner -c http://0.0.0.0:6060 --ip ${SCANNER_LOCALIP} -r test-results/clair-scanner-${image}/results.json -l clair-scanner-logs/${image}.log -w clair-whitelist.yml ${image}:${NONQUOTE_IMAGE_VERSION} || true ; python clair_to_junit_parser.py test-results/clair-scanner-${image}/results.json --output test-results/clair-scanner-${image}/results.xml ; )
setup_and_run_clair: setup_clair_scanner run_clair_scan
clean:
docker stop clair_db || true
docker rm clair_db || true
docker stop clair || true
docker rm clair || true
rm -rf .pytest_cache || true
rm -rf clair-scanner || true
rm -rf clair-scanner-logs || true
rm -rf test-results/* || true
docker rm -f ${TEST_IMAGE_NAME} || true
docker system prune -f --volumes
clean_ansible:
rm -rf splunk-ansible
dev_loop:
SPLUNK_IMAGE="splunk-debian-10:latest" make sample-compose-down && sleep 15 && DOCKER_BUILD_FLAGS="--no-cache" make all && sleep 15 && SPLUNK_IMAGE="splunk-debian-10:latest" make sample-compose-up

Powered by BW's shoe-string budget.