charts/osdu-admin-ui/templates/job.yaml (162 lines of code) (raw):
{{- if ne (.Values.adminUIEnabled | toString | lower) "false" }}
---
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Release.Name }}-build
namespace: {{ .Release.Namespace }}
spec:
ttlSecondsAfterFinished: 120
template:
spec:
serviceAccountName: workload-identity-sa
volumes:
- name: script
configMap:
name: admin-ui-build-script
defaultMode: 0500
- name: app-module-ts
configMap:
name: admin-ui-app-module-ts
defaultMode: 0500
- name: {{ .Release.Name }}-storage
persistentVolumeClaim:
claimName: {{ .Release.Name }}-pvc
- name: environment-ts
configMap:
name: environment-ts
initContainers:
- name: data-seed
image: mcr.microsoft.com/cbl-mariner/base/nodejs:18
command: ["/bin/sh"]
args:
- -c
- |
tdnf install -y curl jq tar && \
/script/init.sh
volumeMounts:
- name: script
mountPath: "/script"
- name: {{ .Release.Name }}-storage
mountPath: "/dist"
- name: environment-ts
mountPath: "/code/environment.ts"
subPath: environment.ts
env:
- name: APP_INSIGHTS
value: {{ .Values.insightsKey | quote }}
- name: AZURE_TENANT_ID
value: {{ .Values.tenantId | quote }}
- name: AZURE_CLIENT_ID
value: {{ .Values.clientId | quote }}
- name: DATA_DOMAIN
value: ".dataservices.energy"
- name: DATA_PARTITION
value: 'opendes'
- name: REDIRECT_URI
value: {{ .Values.redirectUri | quote }}
- name: URL
value: https://community.opengroup.org/osdu/ui/admin-ui-group/admin-ui-totalenergies/admin-ui-totalenergies/-/archive/main/admin-ui-totalenergies-main.tar.gz
- name: NODE_OPTIONS
value: "--max-old-space-size=4096"
resources:
requests:
memory: "4Gi"
cpu: "500m"
limits:
memory: "4Gi"
cpu: "1"
containers:
- name: sleep
image: istio/base
command: ["/bin/sleep", "30"]
volumeMounts:
- name: script
mountPath: "/script"
restartPolicy: Never
---
apiVersion: v1
kind: ConfigMap
metadata:
name: admin-ui-build-script
namespace: {{ .Release.Namespace }}
data:
init.sh: |
#!/usr/bin/env sh
set -euo pipefail
set -o nounset
echo "=================================================================="
echo " Installing Kubectl "
echo "=================================================================="
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
mv kubectl /usr/local/bin/
kubectl version --client
echo "=================================================================="
echo " Waiting for IstioGateway External IP "
echo "=================================================================="
SERVICE_NAME="istio-ingress-external"
NAMESPACE="istio-system"
while true; do
EXTERNAL_IP=$(kubectl get svc $SERVICE_NAME -n $NAMESPACE -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
if [ -n "$EXTERNAL_IP" ]; then
echo "External IP is $EXTERNAL_IP"
break
else
echo "External IP not assigned yet. Retrying in 10 seconds..."
sleep 10
fi
done
echo "=================================================================="
echo " Downloading Admin UI Source Code "
echo "=================================================================="
url_basename=$(basename ${URL})
echo "Derived filename from URL: ${url_basename}"
# Download the file using curl
echo "Downloading file from ${URL} to ${url_basename}"
curl -so ${url_basename} ${URL}
# Extract the tar.gz file
mkdir -p extracted_files
tar -xzf ${url_basename} --strip-components=1 -C extracted_files
cd extracted_files/OSDUApp
# Install Packages
npm install -g @angular/cli && npm install && npm ci
# Copy custom Files
echo "Copying the custom code."
#cp /code/environment.ts ./src/environments/environment.ts
cp providers/azure/routing.ts ./src/app/
cp src/config/config.azure.json ./src/config/config.json && rm src/config/config.*.json
# Remove trailing % from APP_INSIGHTS if present
APP_INSIGHTS=$(echo "$APP_INSIGHTS" | sed 's/%$//')
ENDPOINT=$(echo "http://$EXTERNAL_IP/api")
echo "APP_INSIGHTS: $APP_INSIGHTS"
echo "AZURE_CLIENT_ID: $AZURE_CLIENT_ID"
echo "DATA_DOMAIN: $DATA_DOMAIN"
echo "DATA_PARTITION: $DATA_PARTITION"
echo "AZURE_TENANT_ID: $AZURE_TENANT_ID"
echo "REDIRECT_URI: $REDIRECT_URI"
echo "ENDPOINT: $ENDPOINT"
# Perform JQ replace here
jq \
--arg client "$AZURE_CLIENT_ID" \
--arg domain "$DATA_DOMAIN" \
--arg partition "$DATA_PARTITION" \
--arg tenant "$AZURE_TENANT_ID" \
--arg redirect "$REDIRECT_URI" \
--arg endpoint "$ENDPOINT" \
'.settings.data_partition = $partition |
.settings.domain_name = $domain |
.settings.idp.tenant_id = $tenant |
.settings.idp.client_id = $client |
.settings.idp.scope = $client + "/.default" |
.settings.idp.redirect_uri = $redirect |
.settings.api_endpoints.entitlement_endpoint = $endpoint |
.settings.api_endpoints.storage_endpoint = $endpoint |
.settings.api_endpoints.search_endpoint = $endpoint |
.settings.api_endpoints.legal_endpoint = $endpoint |
.settings.api_endpoints.schema_endpoint = $endpoint |
.settings.api_endpoints.file_endpoint = $endpoint |
.settings.api_endpoints.graphAPI_endpoint = "https://graph.microsoft.com/v1.0/" |
.settings.api_endpoints.workflow_endpoint = $endpoint |
.settings.api_endpoints.secrets_endpoint = $endpoint |
.settings.api_endpoints.wddms_endpoint = $endpoint' \
src/config/config.json > src/config/tmp.json && mv src/config/tmp.json src/config/config.json
cat src/config/config.json
# Building Angular code
echo "Building Angular code."
ng build
# Copy to share
echo "Copying the build to the share."
# mkdir -p /dist/adminui
cp -r dist/OSDUApp/* /dist
exit 0
{{- end }}