aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile114
1 files changed, 70 insertions, 44 deletions
diff --git a/Makefile b/Makefile
index e8c9d31..51613f4 100644
--- a/Makefile
+++ b/Makefile
@@ -1,65 +1,91 @@
-include Makefile.version
+LANGUAGETOOL_VERSION := 5.6
+TRIVY_VERSION := 0.24.2
-envout:
- @echo "VERSION=$(VERSION)"
- @echo "BUILDARG_VERSION=$(BUILDARG_VERSION)"
- @echo "IMAGENAME=$(IMAGENAME)"
- @echo "BUILDARG_PLATFORM=$(BUILDARG_PLATFORM)"
+BUILDARG_VERSION := --build-arg VERSION=$(LANGUAGETOOL_VERSION)
+IMAGENAME := ghcr.io/someone-stole-my-name/docker-languagetool
+BUILDARG_PLATFORM := --platform linux/amd64,linux/arm64/v8
+DOCKER_EXTRA_ARGS :=
-prepare:
- sudo apt-get -qq -y install curl
+ci-deps:
+ apt-get -qq -y install \
+ binfmt-support \
+ ca-certificates \
+ curl \
+ git \
+ gnupg \
+ lsb-release \
+ qemu-user-static \
+ wget \
+ jq
-build:
+ci-deps-docker:
+ curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
+ echo "deb [arch=$(shell dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(shell lsb_release -cs) stable" |\
+ tee /etc/apt/sources.list.d/docker.list > /dev/null && \
+ cat /etc/apt/sources.list.d/docker.list && \
+ apt-get update && \
+ apt-get -qq -y install \
+ docker-ce \
+ docker-ce-cli \
+ containerd.io
+
+ci-deps-trivy:
+ wget https://github.com/aquasecurity/trivy/releases/download/v$(TRIVY_VERSION)/trivy_$(TRIVY_VERSION)_Linux-64bit.deb && \
+ dpkg -i trivy_$(TRIVY_VERSION)_Linux-64bit.deb
+
+ci-setup-buildx:
+ docker run --privileged --rm tonistiigi/binfmt --install all
+ docker buildx create --name mybuilder
+ docker buildx use mybuilder
+
+ci-prepare: ci-deps ci-deps-docker ci-deps-trivy ci-setup-buildx
+
+build: ci-prepare
docker buildx build $(BUILDARG_VERSION) $(BUILDARG_PLATFORM) -t $(IMAGENAME):latest .
docker buildx build $(BUILDARG_VERSION) --load -t $(IMAGENAME):latest .
-test: test-cleanup.1
-test: TESTIPADDRESS=$(subst ",,$(shell docker inspect languagetool | jq '.[0].NetworkSettings.IPAddress'))
-test: test-print-ip-address
-test: test-start
-test: test-run-test-lang
-test: test-run-test-en
-test: test-run-test-fr
-test: test-cleanup.2
+push: ci-prepare
+ docker buildx build $(BUILDARG_VERSION) $(BUILDARG_PLATFORM) -t $(IMAGENAME):latest . --push
+ docker buildx build $(BUILDARG_VERSION) $(BUILDARG_PLATFORM) -t $(IMAGENAME):$(shell git describe --tags --abbrev=0) . --push
+
+trivy:
+ trivy i \
+ --ignore-unfixed \
+ --exit-code 1 \
+ $(IMAGENAME):latest
-test-start:
- docker run -d --name languagetool -p 8010:8010 $(IMAGENAME):latest
- sleep 3
+test: build trivy test-int
-test-print-ip-address:
- @echo "IP address of languagetools docker container: $(TESTIPADDRESS)"
+test-int-start:
+ docker kill languagetool || true
+ docker rm languagetool || true
+ docker run --rm -d --name languagetool -p 8010:8010 $(IMAGENAME):latest
-test-run-test-lang:
+test-int-run: IP=$(subst ",,$(shell docker inspect languagetool | jq '.[0].NetworkSettings.IPAddress'))
+test-int-run:
+ timeout 60 sh -c 'until (curl -i $(IP):8010/v2/info | grep "200 OK") do sleep 1; done'
curl \
-X GET \
--header 'Accept: application/json' \
- 'http://$(TESTIPADDRESS):8010/v2/languages'
-
-test-run-test-en:
+ --fail \
+ 'http://$(IP):8010/v2/languages'
curl \
-X POST \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Accept: application/json' \
+ --fail \
-d 'text=hello%20woorld&language=en-US&motherTongue=de-DE&enabledOnly=false' \
- 'http://$(TESTIPADDRESS):8010/v2/check'
+ 'http://$(IP):8010/v2/check'
-test-run-test-fr:
- curl -X POST \
- --header 'Content-Type: application/x-www-form-urlencoded' \
- --header 'Accept: application/json' \
- -d 'text=hello%20woorld&language=fr&motherTongue=de-DE&enabledOnly=false' \
- 'http://$(TESTIPADDRESS):8010/v2/check'
-.PHONY: test-cleanup
-test-cleanup.%:
- -docker stop languagetool
- -docker rm languagetool
+test-int: test-int-start test-int-run
-.PHONY: tag
-tag: tag-push
-
-.PHONY: tag-push
-tag-push:
- docker buildx build $(BUILDARG_VERSION) $(BUILDARG_PLATFORM) -t $(IMAGENAME):latest . --push
- docker buildx build $(BUILDARG_VERSION) $(BUILDARG_PLATFORM) -t $(IMAGENAME):$(VERSION) . --push
+docker-%:
+ docker run \
+ --rm \
+ --privileged \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ -v $(shell pwd):/data \
+ -w /data $(DOCKER_EXTRA_ARGS) \
+ debian:stable sh -c "apt-get update && apt-get install make && make $*"