apiVersion: tekton.dev/v1 kind: Task metadata: name: maven labels: app.kubernetes.io/version: "0.4" annotations: tekton.dev/pipelines.minVersion: "0.50.0" tekton.dev/categories: Build Tools tekton.dev/tags: build-tool tekton.dev/platforms: "linux/amd64,linux/s390x,linux/ppc64le" spec: description: >- This Task can be used to run a Maven build. It uses a workspace to store m2 local repo. workspaces: - name: source description: The workspace consisting of maven project. - name: maven-settings description: >- The workspace consisting of the custom maven settings provided by the user. - name: maven-local-repo description: Local repo (m2) workspace optional: true params: - name: MAVEN_IMAGE type: string description: Maven base image default: docker.io/library/maven:3.9-eclipse-temurin-17-alpine - name: GOALS description: maven goals to run type: array default: - "package" - name: MAVEN_MIRROR_URL description: The Maven repository mirror url type: string default: "" - name: SERVER_USER description: The username for the server type: string default: "" - name: SERVER_PASSWORD description: The password for the server type: string default: "" - name: PROXY_USER description: The username for the proxy server type: string default: "" - name: PROXY_PASSWORD description: The password for the proxy server type: string default: "" - name: PROXY_PORT description: Port number for the proxy server type: string default: "" - name: PROXY_HOST description: Proxy server Host type: string default: "" - name: PROXY_NON_PROXY_HOSTS description: Non proxy server host type: string default: "" - name: PROXY_PROTOCOL description: Protocol for the proxy ie http or https type: string default: "http" - name: CONTEXT_DIR type: string description: >- The context directory within the repository for sources on which we want to execute maven goals. default: "." results: - description: Maven project group id name: group-id type: string - description: Maven project artifact id name: artifact-id type: string - description: version name: version type: string steps: - name: mvn-settings image: registry.access.redhat.com/ubi8/ubi-minimal:8.2 securityContext: runAsNonRoot: false runAsUser: 0 script: | #!/usr/bin/env bash [[ -f $(workspaces.maven-settings.path)/settings.xml ]] && \ echo "using existing $(workspaces.maven-settings.path)/settings.xml" && exit 0 cat > "$(workspaces.maven-settings.path)/settings.xml" < EOF xml="" if [ -n "$(params.PROXY_HOST)" ] && [ -n "$(params.PROXY_PORT)" ]; then xml="\ genproxy\ true\ $(params.PROXY_PROTOCOL)\ $(params.PROXY_HOST)\ $(params.PROXY_PORT)" if [ -n "$(params.PROXY_USER)" ] && [ -n "$(params.PROXY_PASSWORD)" ]; then xml="$xml\ $(params.PROXY_USER)\ $(params.PROXY_PASSWORD)" fi if [ -n "$(params.PROXY_NON_PROXY_HOSTS)" ]; then xml="$xml\ $(params.PROXY_NON_PROXY_HOSTS)" fi xml="$xml\ " sed -i "s||$xml|" "$(workspaces.maven-settings.path)/settings.xml" fi if [ -n "$(params.SERVER_USER)" ] && [ -n "$(params.SERVER_PASSWORD)" ]; then xml="\ serverid" xml="$xml\ $(params.SERVER_USER)\ $(params.SERVER_PASSWORD)" xml="$xml\ " sed -i "s||$xml|" "$(workspaces.maven-settings.path)/settings.xml" fi if [ -n "$(params.MAVEN_MIRROR_URL)" ]; then xml=" \ mirror.default\ $(params.MAVEN_MIRROR_URL)\ central\ " sed -i "s||$xml|" "$(workspaces.maven-settings.path)/settings.xml" fi - name: mvn-goals image: $(params.MAVEN_IMAGE) workingDir: $(workspaces.source.path)/$(params.CONTEXT_DIR) args: ["$(params.GOALS[*])"] securityContext: runAsNonRoot: false runAsUser: 0 script: | #!/usr/bin/env bash /usr/bin/mvn -s $(workspaces.maven-settings.path)/settings.xml "$@" '-Dmaven.repo.local=$(workspaces.maven-local-repo.path)/.m2' GROUPID=$(/usr/bin/mvn -s $(workspaces.maven-settings.path)/settings.xml '-Dmaven.repo.local=$(workspaces.maven-local-repo.path)/.m2' -q -Dexec.executable=echo -Dexec.args='${project.groupId}' --non-recursive exec:exec) echo -n $GROUPID | tee $(results.group-id.path) ARTIFACTID=$(/usr/bin/mvn -s $(workspaces.maven-settings.path)/settings.xml '-Dmaven.repo.local=$(workspaces.maven-local-repo.path)/.m2' -q -Dexec.executable=echo -Dexec.args='${project.artifactId}' --non-recursive exec:exec) echo -n $ARTIFACTID | tee $(results.artifact-id.path) VERSION=$(/usr/bin/mvn -s $(workspaces.maven-settings.path)/settings.xml '-Dmaven.repo.local=$(workspaces.maven-local-repo.path)/.m2' -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec) echo -n $VERSION | tee $(results.version.path)