mirror of
https://github.com/JHUAPL/PINE.git
synced 2026-01-09 20:47:59 -05:00
Including: 1. Generated python documentat in docs/. 2. Starting a new python client in client/. 3. Moving testing data to test/. 4. The addition of Cypress UI tests and pytest tests in test/. 5. A number of bug fixes and improvements.
173 lines
7.2 KiB
YAML
173 lines
7.2 KiB
YAML
# (C) 2019 The Johns Hopkins University Applied Physics Laboratory LLC.
|
||
parameters:
|
||
appReleaseName: ""
|
||
appTlsSecretName: $(appTlsSecretName)
|
||
appUrl: ""
|
||
azureContainerRegistry: $(azureContainerRegistry)
|
||
azureSubscriptionEndpointForSecrets: $(azureSubscriptionEndpointForSecrets)
|
||
backendStorageMountPath: "/mnt/azure"
|
||
backendStorageShareName: ""
|
||
deployEnvironment: $(deployEnvironment)
|
||
deploymentName: "CONTAINER_DEPLOY"
|
||
helmChart: "pine-chart"
|
||
imageTag: $(Build.BuildId)
|
||
ingressClass: "nginx"
|
||
kubeServiceConnection: $(kubeServiceConnection)
|
||
namespace: $(namespace)
|
||
secrets: []
|
||
redisImageName: $(redisImageName)
|
||
eveImageName: $(eveImageName)
|
||
backendImageName: $(backendImageName)
|
||
frontendImageName: $(frontendImageName)
|
||
pipelineImageName: $(pipelineImageName)
|
||
|
||
jobs:
|
||
# track deployments on the environment
|
||
- deployment: "${{ parameters.deploymentName }}"
|
||
pool: Default
|
||
# creates an environment if it doesn’t exist
|
||
environment: ${{ parameters.deployEnvironment }}
|
||
strategy:
|
||
# default deployment strategy
|
||
runOnce:
|
||
deploy:
|
||
steps:
|
||
- task: Bash@3
|
||
displayName: Display settings
|
||
inputs:
|
||
targetType: 'inline'
|
||
script: |
|
||
echo "appReleaseName: ${{ parameters.appReleaseName }}"
|
||
echo "appUrl: ${{ parameters.appUrl }}"
|
||
echo "deployEnvironment: ${{ parameters.deployEnvironment }}"
|
||
echo "kubeServiceConnection: ${{ parameters.kubeServiceConnection }}"
|
||
echo "namespace: ${{ parameters.namespace }}"
|
||
echo "ingressClass: ${{ parameters.ingressClass }}"
|
||
echo "imageTag: ${{ parameters.imageTag }}"
|
||
- bash: |
|
||
if [ -z "$APP_RELEASE_NAME" ]; then
|
||
echo "##vso[task.logissue type=error;]Missing template parameter \"appReleaseName\""
|
||
echo "##vso[task.complete result=Failed;]"
|
||
fi
|
||
if [ -z "$APP_URL" ]; then
|
||
echo "##vso[task.logissue type=error;]Missing template parameter \"appUrl\""
|
||
echo "##vso[task.complete result=Failed;]"
|
||
fi
|
||
if [ -z "$AZURE_SUBSCRIPTION" ]; then
|
||
echo "##vso[task.logissue type=error;]Missing variable \"azureSubscriptionEndpointForSecrets\""
|
||
echo "##vso[task.complete result=Failed;]"
|
||
fi
|
||
env:
|
||
APP_RELEASE_NAME: ${{ parameters.appReleaseName }}
|
||
APP_URL: ${{ parameters.appUrl }}
|
||
AZURE_SUBSCRIPTION: ${{ parameters.azureSubscriptionEndpointForSecrets }}
|
||
displayName: Check for required parameters
|
||
- task: HelmInstaller@1
|
||
displayName: 'Install Helm 2.16.1'
|
||
inputs:
|
||
helmVersionToInstall: 2.16.1
|
||
- task: HelmDeploy@0
|
||
displayName: 'helm init'
|
||
inputs:
|
||
connectionType: None
|
||
command: init
|
||
upgradeTiller: false
|
||
arguments: '-c'
|
||
tillerNamespace: '${{ parameters.namespace }}'
|
||
- task: Bash@3
|
||
displayName: "set default overrides"
|
||
inputs:
|
||
targetType: 'inline'
|
||
script: |
|
||
#!/bin/bash
|
||
echo "Creating pipelineHelmOverrideValues.yml file"
|
||
cat > pipelineHelmOverrideValues.yml <<- EOM
|
||
fullnameOverride: ${{ parameters.appReleaseName }}
|
||
name: ${{ parameters.appReleaseName }}
|
||
eve:
|
||
image:
|
||
repository: ${{ parameters.azureContainerRegistry }}/${{ parameters.eveImageName }}
|
||
tag: ${{ parameters.imageTag }}
|
||
redis:
|
||
image:
|
||
repository: ${{ parameters.azureContainerRegistry }}/${{ parameters.redisImageName }}
|
||
tag: ${{ parameters.imageTag }}
|
||
backend:
|
||
image:
|
||
repository: ${{ parameters.azureContainerRegistry }}/${{ parameters.backendImageName }}
|
||
tag: ${{ parameters.imageTag }}
|
||
persistence:
|
||
enabled: true
|
||
shareName: ${{ parameters.backendStorageShareName }}
|
||
mountPath: ${{ parameters.backendStorageMountPath }}
|
||
nlpAnnotation:
|
||
image:
|
||
repository: ${{ parameters.azureContainerRegistry }}/${{ parameters.pipelineImageName }}
|
||
tag: ${{ parameters.imageTag }}
|
||
frontend:
|
||
serverName: ${{ parameters.appUrl }}
|
||
image:
|
||
repository: ${{ parameters.azureContainerRegistry }}/${{ parameters.frontendImageName }}
|
||
tag: ${{ parameters.imageTag }}
|
||
namespace: ${{ parameters.namespace }}
|
||
ingress:
|
||
annotations:
|
||
kubernetes.io/ingress.class: ${{ parameters.ingressClass }}
|
||
hosts:
|
||
- ${{ parameters.appUrl }}
|
||
tls:
|
||
- hosts:
|
||
- ${{ parameters.appUrl }}
|
||
secretName: ${{ parameters.appTlsSecretName }}
|
||
EOM
|
||
echo "File created"
|
||
cat pipelineHelmOverrideValues.yml
|
||
- ${{ if ne(parameters.secrets, '') }}:
|
||
- task: Bash@3
|
||
displayName: "Add secrets section to overrides"
|
||
inputs:
|
||
targetType: 'inline'
|
||
script: |
|
||
#!/bin/bash
|
||
cat >> pipelineHelmOverrideValues.yml <<- EOM
|
||
secrets:
|
||
EOM
|
||
echo "File updated"
|
||
- ${{ each secret in parameters.secrets }}:
|
||
- task: Bash@3
|
||
displayName: "Add secret to overrides"
|
||
inputs:
|
||
targetType: 'inline'
|
||
script: |
|
||
#!/bin/bash
|
||
cat >> pipelineHelmOverrideValues.yml <<- EOM
|
||
${{ secret.key }}:
|
||
EOM
|
||
echo "File updated"
|
||
- ${{ each secretData in secret.value }}:
|
||
- task: Bash@3
|
||
displayName: "Add secret data to overrides"
|
||
inputs:
|
||
targetType: 'inline'
|
||
script: |
|
||
#!/bin/bash
|
||
cat >> pipelineHelmOverrideValues.yml <<- EOM
|
||
${{ secretData.key }}: ${{ secretData.value }}
|
||
EOM
|
||
- task: KubernetesManifest@0
|
||
displayName: bake
|
||
name: 'bake'
|
||
inputs:
|
||
action: bake
|
||
namespace: '${{ parameters.namespace }}'
|
||
helmChart: '$(Pipeline.Workspace)/${{ parameters.helmChart }}'
|
||
releaseName: ${{ parameters.appReleaseName }}
|
||
overrideFiles: 'pipelineHelmOverrideValues.yml'
|
||
timeoutInMinutes: 900
|
||
- task: KubernetesManifest@0
|
||
displayName: deploy
|
||
inputs:
|
||
kubernetesServiceConnection: '${{ parameters.kubeServiceConnection }}'
|
||
namespace: '${{ parameters.namespace }}'
|
||
manifests: $(bake.manifestsBundle)
|