Files
PINE/azure-pipeline-templates/deploy.yml
Laura Glendenning d6aa00330d Add development updates.
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.
2020-07-30 11:59:05 -04:00

173 lines
7.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# (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 doesnt 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)