|
| 1 | +GIT_TAG := $(shell git describe --exact-match --tags --abbrev=0 2> /dev/null || echo untagged) |
| 2 | +ifeq ($(GIT_TAG),untagged) |
| 3 | +# "SNAPSHOT" is "latest" for Java |
| 4 | +VERSION := 0.0.0-SNAPSHOT |
| 5 | +else |
| 6 | +# remove the "v" prefix, not allowed |
| 7 | +VERSION := $(GIT_TAG:v=) |
| 8 | +endif |
| 9 | + |
| 10 | +# work dir |
| 11 | +WD := $(shell echo "`pwd`/client") |
| 12 | + |
| 13 | +DOCKER = docker run --rm -v $(WD):/wd --workdir /wd |
| 14 | +MVN = $(DOCKER) -v $(HOME)/.m2:/root/.m2 -e JAVA_SDK_MAVEN_PASSWORD=${JAVA_SDK_MAVEN_PASSWORD} maven:3-openjdk-8 mvn -s settings.xml |
| 15 | +CHOWN = chown -R $(shell id -u):$(shell id -g) |
| 16 | + |
| 17 | +publish: generate |
| 18 | + # https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-apache-maven-for-use-with-github-packages |
| 19 | + $(MVN) deploy -DskipTests -DaltDeploymentRepository=github::default::https://maven.pkg.github.com/argoproj/argo-workflows |
| 20 | + |
| 21 | +generate: |
| 22 | + rm -Rf $(WD) |
| 23 | + mkdir -p $(WD) |
| 24 | + cp settings.xml $(WD)/settings.xml |
| 25 | + cat ../../api/openapi-spec/swagger.json | \ |
| 26 | + sed 's/io.k8s.api.core.v1.//' | \ |
| 27 | + sed 's/io.k8s.apimachinery.pkg.apis.meta.v1.//' \ |
| 28 | + > $(WD)/swagger.json |
| 29 | + $(DOCKER) openapitools/openapi-generator-cli:v5.2.1 \ |
| 30 | + generate \ |
| 31 | + -i /wd/swagger.json \ |
| 32 | + -g java \ |
| 33 | + -o /wd \ |
| 34 | + -p hideGenerationTimestamp=true \ |
| 35 | + -p dateLibrary=java8 \ |
| 36 | + --api-package io.argoproj.workflow.apis \ |
| 37 | + --invoker-package io.argoproj.workflow \ |
| 38 | + --model-package io.argoproj.workflow.models \ |
| 39 | + --skip-validate-spec \ |
| 40 | + --group-id io.argoproj.workflow \ |
| 41 | + --artifact-id argo-client-java \ |
| 42 | + --import-mappings Time=java.time.Instant \ |
| 43 | + --import-mappings Affinity=io.kubernetes.client.openapi.models.V1Affinity \ |
| 44 | + --import-mappings ConfigMapKeySelector=io.kubernetes.client.openapi.models.V1ConfigMapKeySelector \ |
| 45 | + --import-mappings Container=io.kubernetes.client.openapi.models.V1Container \ |
| 46 | + --import-mappings ContainerPort=io.kubernetes.client.openapi.models.V1ContainerPort \ |
| 47 | + --import-mappings EnvFromSource=io.kubernetes.client.openapi.models.V1EnvFromSource \ |
| 48 | + --import-mappings EnvVar=io.kubernetes.client.openapi.models.V1EnvVar \ |
| 49 | + --import-mappings HostAlias=io.kubernetes.client.openapi.models.V1HostAlias \ |
| 50 | + --import-mappings Lifecycle=io.kubernetes.client.openapi.models.V1Lifecycle \ |
| 51 | + --import-mappings ListMeta=io.kubernetes.client.openapi.models.V1ListMeta \ |
| 52 | + --import-mappings LocalObjectReference=io.kubernetes.client.openapi.models.V1LocalObjectReference \ |
| 53 | + --import-mappings ObjectMeta=io.kubernetes.client.openapi.models.V1ObjectMeta \ |
| 54 | + --import-mappings ObjectReference=io.kubernetes.client.openapi.models.V1ObjectReference \ |
| 55 | + --import-mappings PersistentVolumeClaim=io.kubernetes.client.openapi.models.V1PersistentVolumeClaim \ |
| 56 | + --import-mappings PodDisruptionBudgetSpec=io.kubernetes.client.openapi.models.V1beta1PodDisruptionBudgetSpec \ |
| 57 | + --import-mappings PodDNSConfig=io.kubernetes.client.openapi.models.V1PodDNSConfig \ |
| 58 | + --import-mappings PodSecurityContext=io.kubernetes.client.openapi.models.V1PodSecurityContext \ |
| 59 | + --import-mappings Probe=io.kubernetes.client.openapi.models.V1Probe \ |
| 60 | + --import-mappings ResourceRequirements=io.kubernetes.client.openapi.models.V1ResourceRequirements \ |
| 61 | + --import-mappings SecretKeySelector=io.kubernetes.client.openapi.models.V1SecretKeySelector \ |
| 62 | + --import-mappings SecurityContext=io.kubernetes.client.openapi.models.V1SecurityContext \ |
| 63 | + --import-mappings Toleration=io.kubernetes.client.openapi.models.V1Toleration \ |
| 64 | + --import-mappings Volume=io.kubernetes.client.openapi.models.V1Volume \ |
| 65 | + --import-mappings VolumeDevice=io.kubernetes.client.openapi.models.V1VolumeDevice \ |
| 66 | + --import-mappings VolumeMount=io.kubernetes.client.openapi.models.V1VolumeMount \ |
| 67 | + --generate-alias-as-model |
| 68 | + # https://vsupalov.com/docker-shared-permissions/#set-the-docker-user-when-running-your-container |
| 69 | + $(CHOWN) $(WD) || sudo $(CHOWN) $(WD) |
| 70 | + # replace the generated pom.xml, because that has too many dependencies |
| 71 | + sed 's/0.0.0-VERSION/$(VERSION)/' pom.xml > $(WD)/pom.xml |
| 72 | + |
0 commit comments