Skip to main content

Build an LRA-Coordinator in the Workbench for the SAGA Feature

๐ŸŽฏcontext

You want to implement LRA-Coordinator and use it within a Saga application composition project. In this how-to, you will learn how to import the LRA-Coordinator asset into IBM Solution Designer and build the LRA coordinator project with custom tekton pipelines.

1. Import the LRA-Coordinator asset into -solutionDesignerโ€‹

Descriptionโ€‹

To use the LRA-Coordinator service within saga application composition projects, you have to import the given asset and create a project within the Solution Designer.

Preconditionsโ€‹

  • You have configured an Asset Catalog within Solution Designer.

Stepsโ€‹

  1. Open Swagger-UI of the K5 Asset Manager. The URL can be found within the k8s route 'k5-asset-manager-route'.
  2. Open the Method /{catalogAlias}/assets/importAsset and upload the given zip file.
    • file: NLRAC-2.1.3.
    • gitProviderAlias: the git provider alias, to import the project sources into.
    • groupKey: group within the git, to store the project into.
    • repositoryKey: name of the git repository, to store the project sources into.
  3. After the successful upload, you can find the project sources within the git repository as well as a new entry within your asset catalog.
  4. Open the Solution Designer and start 'create project from asset'
  5. Select the asset catalog, you imported the given zip file into.
  6. Select project 'Narayana LRA Coordinator'.
  7. Use the acronym 'NLRAC' and specify the git provider data to store your project into.

2. Build the LRA-Coordinator project with custom tekton pipelines (-solutionDesigner 4.1.0 only)โ€‹

Descriptionโ€‹

To use the LRA-Coordinator service within saga application composition projects, you have to build and release the project to use within the Solution Designer.

Preconditionsโ€‹

  • The project was successfully imported into the Solution Designer.

Stepsโ€‹

  1. Import a new custom tekton task to build and release the project (see also Product Documentation: Pipeline Customization).
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: buildpacks-release-java
spec:
params:
- name: solutionacronym
type: string
- name: k5project
type: string
- name: publish
type: string
- name: stack
type: string
- name: dddfeature
type: string
- name: bawfeature
type: string
- name: unittestfeature
type: string
- name: prereleaseuniqueness
type: string
- name: uniquesemvercheck
type: string
- name: enforceuniqueness
type: string
- default: ''
description: The name of where to store the app image.
name: APP_IMAGE
type: string
- default: 'paketobuildpacks/builder:base'
description: >-
The image on which builds will run (must include lifecycle and
compatible buildpacks).
name: BUILDER_IMAGE
type: string
- default: ''
description: >-
A subpath within the `source` input where the source to build is
located.
name: SOURCE_SUBPATH
type: string
- default: []
description: Environment variables to set during _build-time_.
name: ENV_VARS
type: array
- default: web
description: The default process type to set on the image.
name: PROCESS_TYPE
type: string
- default: ''
description: Reference to a run image to use.
name: RUN_IMAGE
type: string
- default: ''
description: >-
The name of the persistent app cache image (if no cache workspace is
provided).
name: CACHE_IMAGE
type: string
- default: 'false'
description: Do not write layer metadata or restore cached layers.
name: SKIP_RESTORE
type: string
- default: '1000'
description: The user ID of the builder image user.
name: USER_ID
type: string
- default: '1000'
description: The group ID of the builder image user.
name: GROUP_ID
type: string
- default: empty-dir
description: The name of the platform directory.
name: PLATFORM_DIR
type: string
resources:
inputs:
- name: source
type: git
- name: cluster
type: cluster
stepTemplate:
env:
- name: CNB_PLATFORM_API
value: '0.9'
name: ''
resources: {}
securityContext:
runAsNonRoot: false
runAsUser: 0
steps:
- command:
- /opt/open-banking-platform/scripts/v1/step-handle-version.sh
env:
- name: NODE_ENV
value: production
- name: PRE_RELEASE_UNIQUENESS
value: $(params.prereleaseuniqueness)
- name: UNIQUE_SEMVER_CHECK
value: $(params.uniquesemvercheck)
- name: STACK
value: $(params.stack)
- name: SOLUTION_ACRONYM
value: $(params.solutionacronym)
- name: ENFORCE_UNIQUENESS
value: $(params.enforceuniqueness)
- name: HELM_REPO_URL
valueFrom:
secretKeyRef:
key: url
name: k5-helm-repo-binding
optional: false
- name: HELM_REPO_USERNAME
valueFrom:
secretKeyRef:
key: username
name: k5-helm-repo-binding
optional: false
- name: HELM_REPO_PASSWORD
valueFrom:
secretKeyRef:
key: password
name: k5-helm-repo-binding
optional: false
image: >-
de.icr.io/isw_release/step-handle-version@sha256:12dddd334f7a8fb58733fe1ad987d72f69d7a7b22da22b2f4da6262edef0a27c
name: handle-version
resources: {}
volumeMounts:
- mountPath: /workspace/source/artifacts/handle-version
name: handle-version
workingDir: /workspace/source
- args:
- '--env-vars'
- '$(params.ENV_VARS[*])'
image: >-
docker.io/library/bash:5.1.4@sha256:b208215a4655538be652b2769d82e576bc4d0a2bb132144c060efc5be8c3f5d6
name: prepare
resources: {}
script: |
#!/usr/bin/env bash
set -e
for path in "/tekton/home" "/layers" "/workspace/source"; do
echo "> Setting permissions on '$path'..."
chown -R "$(params.USER_ID):$(params.GROUP_ID)" "$path"
if [[ "$path" == "/workspace/source" ]]; then
chmod 775 "/workspace/source"
fi
done
echo "> Parsing additional configuration..."
parsing_flag=""
envs=()
for arg in "$@"; do
if [[ "$arg" == "--env-vars" ]]; then
echo "-> Parsing env variables..."
parsing_flag="env-vars"
elif [[ "$parsing_flag" == "env-vars" ]]; then
envs+=("$arg")
fi
done
echo "> Processing any environment variables..."
ENV_DIR="/platform/env"
echo "--> Creating 'env' directory: $ENV_DIR"
mkdir -p "$ENV_DIR"
for env in "${envs[@]}"; do
IFS='=' read -r key value <<< "$env"
if [[ "$key" != "" && "$value" != "" ]]; then
path="${ENV_DIR}/${key}"
echo "--> Writing ${path}..."
echo -n "$value" > "$path"
fi
done
volumeMounts:
- mountPath: /layers
name: layers-dir
- mountPath: /platform
name: $(params.PLATFORM_DIR)
- resources: {}
name: create
command:
- /cnb/lifecycle/creator
env:
- name: K5_IMAGE_REGISTRY
valueFrom:
secretKeyRef:
key: url
name: k5-image-registry-binding
optional: true
securityContext:
runAsGroup: 1000
runAsUser: 1000
imagePullPolicy: Always
volumeMounts:
- mountPath: /layers
name: layers-dir
- mountPath: /platform
name: $(params.PLATFORM_DIR)
image: $(params.BUILDER_IMAGE)
args:
- '-app=/workspace/source/$(params.solutionacronym)-application'
- '-cache-image=$(params.CACHE_IMAGE)'
- '-uid=$(params.USER_ID)'
- '-gid=$(params.GROUP_ID)'
- '-layers=/layers'
- '-platform=/platform'
- '-report=/layers/report.toml'
- '-process-type=$(params.PROCESS_TYPE)'
- '-skip-restore=$(params.SKIP_RESTORE)'
- '-previous-image=$(params.APP_IMAGE)'
- '-run-image=$(params.RUN_IMAGE)'
- $(K5_IMAGE_REGISTRY)/solution-$(params.solutionacronym)
- image: >-
docker.io/library/bash:5.1.4@sha256:b208215a4655538be652b2769d82e576bc4d0a2bb132144c060efc5be8c3f5d6
name: results
resources: {}
script: >
#!/usr/bin/env bash
set -e
DIGEST_PATH=/workspace/source/artifacts/pack-solution-docker
DIGEST_FILE=image-digest
mkdir -p ${DIGEST_PATH}
grep "digest" /layers/report.toml | cut -d'"' -f2 | cut -d'"' -f2 | tr
-d '\n' | tee "${DIGEST_PATH}/${DIGEST_FILE}"
volumeMounts:
- mountPath: /layers
name: layers-dir
- mountPath: /workspace/source/artifacts/pack-solution-docker
name: build-publish-docker
workingDir: /workspace/source
- command:
- /opt/open-banking-platform/scripts/v1/step-helm-chart.sh
env:
- name: NODE_ENV
value: production
- name: SOLUTION_ACRONYM
value: $(params.solutionacronym)
- name: STACK
value: $(params.stack)
- name: DDD_FEATURE
value: $(params.dddfeature)
- name: BAW_FEATURE
value: $(params.bawfeature)
- name: PUBLISH
value: $(params.publish)
- name: PIPELINE_RUN_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: SERVICE_PROJECT_IMAGE_REGISTRY
valueFrom:
secretKeyRef:
key: url
name: k5-image-registry-binding
optional: true
- name: HELM_REPO_URL
valueFrom:
secretKeyRef:
key: url
name: k5-helm-repo-binding
optional: true
- name: HELM_REPO_USERNAME
valueFrom:
secretKeyRef:
key: username
name: k5-helm-repo-binding
optional: true
- name: HELM_REPO_PASSWORD
valueFrom:
secretKeyRef:
key: password
name: k5-helm-repo-binding
optional: true
- name: HELM_REPO_UPLOAD_URL
valueFrom:
secretKeyRef:
key: uploadUrl
name: k5-helm-repo-binding
optional: true
- name: HELM_REPO_REQUEST_TYPE
valueFrom:
secretKeyRef:
key: uploadRequestType
name: k5-helm-repo-binding
optional: true
- name: HELM_REPO_UPLOAD_FILE_PATTERN
valueFrom:
secretKeyRef:
key: uploadFilePattern
name: k5-helm-repo-binding
optional: true
image: >-
de.icr.io/isw_release/step-pack-helm-chart@sha256:d5e044aaeef673a8ae17b7208e922ca82e2a03a01f8558808f377ee49df141a5
name: pack-helm-chart
resources: {}
volumeMounts:
- mountPath: /workspace/source/artifacts/helm-chart
name: helm-chart
- mountPath: /workspace/source/artifacts/handle-version
name: handle-version
- mountPath: /workspace/source/artifacts/prepare-denormalize-domain-model
name: prepare-denorm-model
- mountPath: /workspace/source/artifacts/build-bpm-toolkit
name: bpm-toolkit
workingDir: /workspace/source
- command:
- /opt/open-banking-platform/scripts/v1/step-deploy-solution.sh
env:
- name: NODE_ENV
value: production
- name: SOLUTION_ACRONYM
value: $(params.solutionacronym)
- name: K5_PROJECT
value: $(params.k5project)
- name: PIPELINE_RUN_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: PIPELINE_RUN
valueFrom:
fieldRef:
fieldPath: 'metadata.labels[''tekton.dev/pipelineRun'']'
- name: CONFIG_MANAGEMENT_INTERNAL_HOST
value: 'https://k5-configuration-management.isw-test.svc'
- name: CONFIG_MANAGEMENT_NAMESPACE
value: isw-test
- name: CONFIG_MANAGEMENT_INTERNAL_COMMUNICATION
value: 'true'
- name: KEYCLOAK_HOST
valueFrom:
secretKeyRef:
key: hostname
name: configuration-management-client-secret
- name: ENVIRONMENT_CLIENT
valueFrom:
secretKeyRef:
key: client.id
name: configuration-management-client-secret
- name: ENVIRONMENT_CLIENT_SECRET
valueFrom:
secretKeyRef:
key: client.secret
name: configuration-management-client-secret
- name: KEYCLOAK_TARGET_REALM
valueFrom:
secretKeyRef:
key: realm
name: configuration-management-client-secret
- name: CA_CERT_FOLDER
value: /workspace/source/artifacts/security
image: >-
de.icr.io/isw_release/step-deploy-solution@sha256:71b49341c553081f2ba97fbaec57669077c7abdaa6c14cdf0bfa1d74039fd166
name: deploy-solution
resources: {}
volumeMounts:
- mountPath: /workspace/source/artifacts/handle-version
name: handle-version
- mountPath: /workspace/source/artifacts/helm-chart
name: helm-chart
- mountPath: /workspace/source/artifacts/pack-solution-docker
name: build-publish-docker
- mountPath: /workspace/source/artifacts/prepare-denormalize-domain-model
name: prepare-denorm-model
- mountPath: /workspace/source/artifacts/security/k5-hub-truststore
name: k5-hub-truststore
- mountPath: >-
/workspace/source/artifacts/security/k5-configuration-management-service-cert
name: k5-configuration-management-service-cert
workingDir: /workspace/source
volumes:
- emptyDir: {}
name: empty-dir
- emptyDir: {}
name: layers-dir
- emptyDir: {}
name: validate-design-model
- emptyDir: {}
name: prepare-denorm-model
- emptyDir: {}
name: bpm-toolkit
- emptyDir: {}
name: handle-version
- emptyDir: {}
name: generate-code
- emptyDir: {}
name: build-code
- emptyDir: {}
name: unit-test
- emptyDir: {}
name: build-publish-docker
- emptyDir: {}
name: helm-chart
- name: k5-hub-truststore
secret:
optional: true
secretName: k5-hub-truststore
- name: k5-configuration-management-service-cert
secret:
optional: true
secretName: k5-configuration-management-service-cert
  1. Create a new deploy and release pipeline within Solution Designer for your project (the first pipeline run will fail).
  2. Open both pipeline definitions in OpenShift and adjust the referenced task from:
taskRef:
kind: Task
name: k5-release-java

to:

taskRef:
kind: Task
name: buildpacks-release-java
  1. Start the pipelines within Solution Designer for your project again.

3. Build the LRA-Coordinator project with custom tekton pipelines (-solutionDesigner 4.1.1-FP1 and later)โ€‹

Descriptionโ€‹

To use the LRA-Coordinator service within saga application composition projects, you have to build and release the project within the Solution Designer.

Preconditionsโ€‹

  • The project was successfully imported into the Solution Designer.

Stepsโ€‹

  1. Import new custom deploy and release pipeline template (see also Product Documentation: Pipeline Customization)

Custom deploy pipeline:

apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
annotations:
k5-display-name: Buildpacks Java Deploy Pipeline
k5-supported-stacks: java
labels:
k5-pipeline-template: 'true'
k5-pipeline-type: deploy
name: k5-template-buildpacks-java-deploy
spec:
params:
- description: Defines the repository url
name: repo-url
type: string
- description: Defines the revision of the git repository
name: revision
type: string
- description: Defines the k5project
name: k5project
type: string
- description: Defines the solution acronym
name: solutionacronym
type: string
- description: Defines if the artifacts should be published
name: publish
type: string
- description: Defines the stack
name: stack
type: string
- description: Defines whether it needs to be a unique pre-release
name: prereleaseuniqueness
type: string
- description: Defines where uniqueness needs to be enforced
name: enforceuniqueness
type: string
- description: Defines whether a unique semVer check is executed
name: uniquesemvercheck
type: string
tasks:
- name: k5-git-clone
params:
- name: repo-url
value: $(params.repo-url)
- name: revision
value: $(params.revision)
taskRef:
kind: Task
name: k5-git-clone
workspaces:
- name: output
workspace: source
- name: basic-auth
workspace: basic-auth
- name: k5-validate
params:
- name: solutionacronym
value: $(params.solutionacronym)
- name: stack
value: $(params.stack)
- name: dddfeature
value: 'false'
- name: prereleaseuniqueness
value: $(params.prereleaseuniqueness)
- name: uniquesemvercheck
value: $(params.uniquesemvercheck)
- name: enforceuniqueness
value: $(params.enforceuniqueness)
runAfter:
- k5-git-clone
taskRef:
kind: Task
name: k5-validate
workspaces:
- name: source
workspace: source
- name: get-image-registry
params:
- name: pipelinenamespace
value: $(context.pipelineRun.namespace)
runAfter:
- k5-validate
taskSpec:
metadata: {}
params:
- description: The current namespace of the pipeline.
name: pipelinenamespace
type: string
results:
- description: The image container image registry.
name: SERVICE_PROJECT_IMAGE_REGISTRY
type: string
- description: The image container tag.
name: SERVICE_PROJECT_IMAGE_TAG
type: string
spec: null
steps:
- computeResources: {}
env:
- name: K5_IMAGE_REGISTRY
valueFrom:
secretKeyRef:
key: url
name: k5-image-registry-binding
optional: true
image: 'docker.io/library/bash:5.1.4@sha256:b208215a4655538be652b2769d82e576bc4d0a2bb132144c060efc5be8c3f5d6'
name: print
script: |
#!/usr/bin/env bash
if [ -z "${K5_IMAGE_REGISTRY}" ]; then
echo "image registry from secret 'k5-image-registry-binding' not found, using default"
K5_IMAGE_REGISTRY="image-registry.openshift-image-registry.svc:5000/$(params.pipelinenamespace)"
fi

K5_IMAGE_TAG=`cat /workspace/source/artifacts/handle-version/.version`

echo -n "${K5_IMAGE_REGISTRY}" > "$(results.SERVICE_PROJECT_IMAGE_REGISTRY.path)"
echo -n "${K5_IMAGE_TAG}" > "$(results.SERVICE_PROJECT_IMAGE_TAG.path)"
echo "configured image registry: ${K5_IMAGE_REGISTRY}"
echo "configured image tag: ${K5_IMAGE_TAG}"
workspaces:
- name: source
workspace: source
- name: buildpacks
params:
- name: APP_IMAGE
value: '$(tasks.get-image-registry.results.SERVICE_PROJECT_IMAGE_REGISTRY)/solution-$(params.solutionacronym):$(tasks.get-image-registry.results.SERVICE_PROJECT_IMAGE_TAG)'
- name: SOURCE_SUBPATH
value: $(params.solutionacronym)-application
- name: BUILDER_IMAGE
value: 'paketobuildpacks/builder:base'
runAfter:
- get-image-registry
taskRef:
kind: Task
name: buildpacks
workspaces:
- name: source
workspace: source
- name: get-digest
params:
- name: DIGEST
value: $(tasks.buildpacks.results.APP_IMAGE_DIGEST)
runAfter:
- buildpacks
taskSpec:
metadata: {}
params:
- name: DIGEST
type: string
spec: null
steps:
- computeResources: {}
image: 'docker.io/library/bash:5.1.4@sha256:b208215a4655538be652b2769d82e576bc4d0a2bb132144c060efc5be8c3f5d6'
name: getdigest
script: |
#!/usr/bin/env bash
set -e
DIGEST_PATH=/workspace/source/artifacts/pack-solution-docker DIGEST_FILE=image-digest
echo "Writing digest of created app image: $(params.DIGEST) to ${DIGEST_PATH}/${DIGEST_FILE}"
mkdir -p ${DIGEST_PATH}
echo -n "$(params.DIGEST)" > ${DIGEST_PATH}/${DIGEST_FILE}
workspaces:
- description: Directory where application source is located.
name: source
workspaces:
- name: source
workspace: source
- name: k5-build-publish-chart-java
params:
- name: solutionacronym
value: $(params.solutionacronym)
- name: publish
value: $(params.publish)
- name: stack
value: $(params.stack)
- name: dddfeature
value: 'false'
- name: bawfeature
value: 'false'
runAfter:
- get-digest
taskRef:
kind: Task
name: k5-build-publish-chart-java
workspaces:
- name: source
workspace: source
- name: k5-deploy
params:
- name: solutionacronym
value: $(params.solutionacronym)
- name: k5project
value: $(params.k5project)
runAfter:
- k5-build-publish-chart-java
taskRef:
kind: Task
name: k5-deploy
workspaces:
- name: source
workspace: source
workspaces:
- name: source
- name: basic-auth

Custom release pipeline:

apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
annotations:
k5-display-name: Buildpacks Java Release Pipeline
k5-supported-stacks: java
labels:
k5-pipeline-template: 'true'
k5-pipeline-type: release
name: k5-template-buildpacks-java-release
spec:
params:
- description: Defines the repository url
name: repo-url
type: string
- description: Defines the revision of the git repository
name: revision
type: string
- description: Defines the k5project
name: k5project
type: string
- description: Defines the solution acronym
name: solutionacronym
type: string
- description: Defines if the artifacts should be published
name: publish
type: string
- description: Defines the stack
name: stack
type: string
- description: Defines whether it needs to be a unique pre-release
name: prereleaseuniqueness
type: string
- description: Defines where uniqueness needs to be enforced
name: enforceuniqueness
type: string
- description: Defines whether a unique semVer check is executed
name: uniquesemvercheck
type: string
tasks:
- name: k5-git-clone
params:
- name: repo-url
value: $(params.repo-url)
- name: revision
value: $(params.revision)
taskRef:
kind: Task
name: k5-git-clone
workspaces:
- name: output
workspace: source
- name: basic-auth
workspace: basic-auth
- name: k5-validate
params:
- name: solutionacronym
value: $(params.solutionacronym)
- name: stack
value: $(params.stack)
- name: dddfeature
value: 'false'
- name: prereleaseuniqueness
value: $(params.prereleaseuniqueness)
- name: uniquesemvercheck
value: $(params.uniquesemvercheck)
- name: enforceuniqueness
value: $(params.enforceuniqueness)
runAfter:
- k5-git-clone
taskRef:
kind: Task
name: k5-validate
workspaces:
- name: source
workspace: source
- name: get-image-registry
params:
- name: pipelinenamespace
value: $(context.pipelineRun.namespace)
runAfter:
- k5-validate
taskSpec:
metadata: {}
params:
- description: The current namespace of the pipeline.
name: pipelinenamespace
type: string
results:
- description: The image container image registry.
name: SERVICE_PROJECT_IMAGE_REGISTRY
type: string
- description: The image container tag.
name: SERVICE_PROJECT_IMAGE_TAG
type: string
spec: null
steps:
- computeResources: {}
env:
- name: K5_IMAGE_REGISTRY
valueFrom:
secretKeyRef:
key: url
name: k5-image-registry-binding
optional: true
image: 'docker.io/library/bash:5.1.4@sha256:b208215a4655538be652b2769d82e576bc4d0a2bb132144c060efc5be8c3f5d6'
name: print
script: |
#!/usr/bin/env bash
if [ -z "${K5_IMAGE_REGISTRY}" ]; then
echo "image registry from secret 'k5-image-registry-binding' not found, using default"
K5_IMAGE_REGISTRY="image-registry.openshift-image-registry.svc:5000/$(params.pipelinenamespace)"
fi

K5_IMAGE_TAG=`cat /workspace/source/artifacts/handle-version/.version`

echo -n "${K5_IMAGE_REGISTRY}" > "$(results.SERVICE_PROJECT_IMAGE_REGISTRY.path)"
echo -n "${K5_IMAGE_TAG}" > "$(results.SERVICE_PROJECT_IMAGE_TAG.path)"
echo "configured image registry: ${K5_IMAGE_REGISTRY}"
echo "configured image tag: ${K5_IMAGE_TAG}"
workspaces:
- name: source
workspace: source
- name: buildpacks
params:
- name: APP_IMAGE
value: '$(tasks.get-image-registry.results.SERVICE_PROJECT_IMAGE_REGISTRY)/solution-$(params.solutionacronym):$(tasks.get-image-registry.results.SERVICE_PROJECT_IMAGE_TAG)'
- name: SOURCE_SUBPATH
value: $(params.solutionacronym)-application
- name: BUILDER_IMAGE
value: 'paketobuildpacks/builder:base'
runAfter:
- get-image-registry
taskRef:
kind: Task
name: buildpacks
workspaces:
- name: source
workspace: source
- name: get-digest
params:
- name: DIGEST
value: $(tasks.buildpacks.results.APP_IMAGE_DIGEST)
runAfter:
- buildpacks
taskSpec:
metadata: {}
params:
- name: DIGEST
type: string
spec: null
steps:
- computeResources: {}
image: 'docker.io/library/bash:5.1.4@sha256:b208215a4655538be652b2769d82e576bc4d0a2bb132144c060efc5be8c3f5d6'
name: getdigest
script: |
#!/usr/bin/env bash
set -e
DIGEST_PATH=/workspace/source/artifacts/pack-solution-docker DIGEST_FILE=image-digest
echo "Writing digest of created app image: $(params.DIGEST) to ${DIGEST_PATH}/${DIGEST_FILE}"
mkdir -p ${DIGEST_PATH}
echo -n "$(params.DIGEST)" > ${DIGEST_PATH}/${DIGEST_FILE}
workspaces:
- description: Directory where application source is located.
name: source
workspaces:
- name: source
workspace: source
- name: k5-build-publish-chart-java
params:
- name: solutionacronym
value: $(params.solutionacronym)
- name: publish
value: $(params.publish)
- name: stack
value: $(params.stack)
- name: dddfeature
value: 'false'
- name: bawfeature
value: 'false'
runAfter:
- get-digest
taskRef:
kind: Task
name: k5-build-publish-chart-java
workspaces:
- name: source
workspace: source
workspaces:
- name: source
- name: basic-auth

  1. Import buildpacks tekton pipline step from official tekton catalog:
oc apply -f https://raw.githubusercontent.com/tektoncd/catalog/master/task/buildpacks/0.6/buildpacks.yaml
  1. Create new build and release pipeline within Solution Designer based on imported templates Buildpacks Java Deploy Pipeline and Buildpacks Java Deploy Pipeline.
๐ŸŒŸCongratulations!

You have successfully imported and implemented the LRA-Coordinator into Solution Designer.