diff options
author | Christian Segundo | 2022-03-07 20:58:31 +0100 |
---|---|---|
committer | Christian Segundo | 2022-03-07 20:58:31 +0100 |
commit | 66ae9ab6eb3751ae7507156e696e3215cab0a496 (patch) | |
tree | 4b9a9cb190a725a15f62446dfd6aea84012ae59c /Makefile | |
parent | c3b760f58b1b548a2435fda1f52dbaa26b190a88 (diff) | |
download | languagetool-66ae9ab6eb3751ae7507156e696e3215cab0a496.tar.gz |
Full refactor
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 114 |
1 files changed, 70 insertions, 44 deletions
@@ -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 $*" |