You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
176 lines
6.4 KiB
176 lines
6.4 KiB
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
|
|
<settings>
|
|
<servers>
|
|
<!-- The servers added here are generated from environment variables. Don't change. -->
|
|
<!-- ### SERVER's USER INFO from ENV ### -->
|
|
</servers>
|
|
<mirrors>
|
|
<!-- The mirrors added here are generated from environment variables. Don't change. -->
|
|
<!-- ### mirrors from ENV ### -->
|
|
</mirrors>
|
|
<proxies>
|
|
<!-- The proxies added here are generated from environment variables. Don't change. -->
|
|
<!-- ### HTTP proxy from ENV ### -->
|
|
</proxies>
|
|
</settings>
|
|
EOF
|
|
|
|
xml=""
|
|
if [ -n "$(params.PROXY_HOST)" ] && [ -n "$(params.PROXY_PORT)" ]; then
|
|
xml="<proxy>\
|
|
<id>genproxy</id>\
|
|
<active>true</active>\
|
|
<protocol>$(params.PROXY_PROTOCOL)</protocol>\
|
|
<host>$(params.PROXY_HOST)</host>\
|
|
<port>$(params.PROXY_PORT)</port>"
|
|
if [ -n "$(params.PROXY_USER)" ] && [ -n "$(params.PROXY_PASSWORD)" ]; then
|
|
xml="$xml\
|
|
<username>$(params.PROXY_USER)</username>\
|
|
<password>$(params.PROXY_PASSWORD)</password>"
|
|
fi
|
|
if [ -n "$(params.PROXY_NON_PROXY_HOSTS)" ]; then
|
|
xml="$xml\
|
|
<nonProxyHosts>$(params.PROXY_NON_PROXY_HOSTS)</nonProxyHosts>"
|
|
fi
|
|
xml="$xml\
|
|
</proxy>"
|
|
sed -i "s|<!-- ### HTTP proxy from ENV ### -->|$xml|" "$(workspaces.maven-settings.path)/settings.xml"
|
|
fi
|
|
|
|
if [ -n "$(params.SERVER_USER)" ] && [ -n "$(params.SERVER_PASSWORD)" ]; then
|
|
xml="<server>\
|
|
<id>serverid</id>"
|
|
xml="$xml\
|
|
<username>$(params.SERVER_USER)</username>\
|
|
<password>$(params.SERVER_PASSWORD)</password>"
|
|
xml="$xml\
|
|
</server>"
|
|
sed -i "s|<!-- ### SERVER's USER INFO from ENV ### -->|$xml|" "$(workspaces.maven-settings.path)/settings.xml"
|
|
fi
|
|
|
|
if [ -n "$(params.MAVEN_MIRROR_URL)" ]; then
|
|
xml=" <mirror>\
|
|
<id>mirror.default</id>\
|
|
<url>$(params.MAVEN_MIRROR_URL)</url>\
|
|
<mirrorOf>central</mirrorOf>\
|
|
</mirror>"
|
|
sed -i "s|<!-- ### mirrors from ENV ### -->|$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)
|
|
|