-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
126 lines (100 loc) · 2.98 KB
/
Makefile
File metadata and controls
126 lines (100 loc) · 2.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
SHELL:=bash
#
# Build docker image for qgis platform
#
NAME=qgis-platform
BUILDID=$(shell date +"%Y%m%d%H%M")
COMMITID=$(shell git rev-parse --short HEAD)
# There is 5 flavors of qgis
# see https://www.qgis.org/fr/site/forusers/alldownloads.html
#
# - release
# - nigthly-release
# - ltr
# - nightly-ltr
# - nightly
# 'ltr' is the default'
FLAVOR:=ltr
REPO_TARGET:=debian
ifeq ($(FLAVOR),nightly-release)
BUILD_ARGS=--build-arg qgis_repository=$(REPO_TARGET)-nightly-release
else ifeq ($(FLAVOR),ltr)
BUILD_ARGS=--build-arg qgis_repository=$(REPO_TARGET)-ltr
else ifeq ($(FLAVOR),nightly-ltr)
BUILD_ARGS=--build-arg qgis_repository=$(REPO_TARGET)-nightly-ltr
else ifeq ($(FLAVOR),nightly)
BUILD_ARGS=--build-arg qgis_repository=$(REPO_TARGET)-nightly
else ifeq ($(FLAVOR),release)
BUILD_ARGS=--build-arg qgis_repository=$(REPO_TARGET)
else
BUILD_ARGS=--build-arg qgis_repository=$(REPO_TARGET)-ltr
endif
ifdef QGIS_VERSION
BUILD_ARGS += --build-arg qgis_version=$(QGIS_VERSION)
endif
ifdef REGISTRY_URL
REGISTRY_PREFIX=$(REGISTRY_URL)/
BUILD_ARGS += --build-arg REGISTRY_PREFIX=$(REGISTRY_PREFIX)
endif
MANIFEST=factory.manifest
ifndef REGISTRY_PREFIX
REGISTRY_TAG_PREFIX:=3liz/
else
REGISTRY_TAG_PREFIX:=$(REGISTRY_PREFIX)
endif
all:
@echo "Usage: make [build|tag|push|deliver|clean]"
BUILDIMAGE=$(REGISTRY_TAG_PREFIX)$(NAME):$(FLAVOR)
ifdef DOCKER_BUILDER
DOCKER_BUILDER_OPTS=--provenance=true --sbom=true --builder=$(DOCKER_BUILDER)
endif
build::
docker buildx build --pull $(BUILD_ARGS) $(DOCKER_BUILDER_OPTS) \
--label org.opencontainers.image.version=$(FLAVOR)-$$(date -u +%Y-%m-%dT%H-%M-%SZ) \
-t $(BUILDIMAGE) $(CACHE) .
build:: manifest
manifest:
docker run --rm -v $$(pwd)/manifest.sh:/manifest -e FLAVOR=$(FLAVOR) \
-e NAME=$(NAME) -e BUILDID=$(BUILDID) -e COMMITID=$(COMMITID) \
$(BUILDIMAGE) /manifest > $(MANIFEST)
@cat $(MANIFEST)
LOCAL_HOME ?= $(shell pwd)
BECOME_USER:=$(shell id -u)
test:
mkdir -p $(shell pwd)/.local $(LOCAL_HOME)/.cache
docker run --rm --name qgis-platform-test-$(FLAVOR) -w /src \
-u $(BECOME_USER) \
-v $(shell pwd):/src \
-v $(shell pwd)/.local:/.local \
-v $(LOCAL_HOME)/.cache:/.cache \
-e PIP_CACHE_DIR=/.cache \
-e PYTEST_ADDOPTS="$(PYTEST_ADDOPTS)" \
-e QGIS_OPTIONS_PATH=/src/tests/qgis \
-e QGIS_DEBUG=$(QGIS_DEBUG) \
$(BUILDIMAGE) ./tests/run-tests.sh
deliver: tag push
tag:
@@{ \
set -e; \
source factory.manifest; \
if [[ "$$flavor" != "$(FLAVOR)" ]]; then \
echo "Flavor manifest mismatch"; \
exit 1; \
fi; \
docker tag $(BUILDIMAGE) $(REGISTRY_TAG_PREFIX)$(NAME):$$version; \
if [ ! -z $$version_short ]; then \
docker tag $(BUILDIMAGE) $(REGISTRY_TAG_PREFIX)$(NAME):$$version_short; \
fi; \
}
push:
@@{ \
set -e; \
source factory.manifest; \
docker push $(REGISTRY_PREFIX)$(NAME):$$version; \
docker push $(REGISTRY_PREFIX)$(NAME):$$flavor; \
if [ ! -z $$version_short ]; then \
docker push $(REGISTRY_PREFIX)$(NAME):$$version_short; \
fi \
}
clean:
docker rmi -f $(shell docker images $(BUILDIMAGE) -q)||true