Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Build Anonlink app using tag for base image
  • Loading branch information
hardbyte committed Feb 19, 2020
commit 75c18245d8ad3cd25050174e09dfd6228eefb0a8
17 changes: 10 additions & 7 deletions .azurePipeline/templateDockerBuildPush.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ parameters:
imageName: ''
imageTag: ''
jobName: ''
skip: 'false'
skip: 'False'
dockerBuildArgs: ''
extraJobs: []
dependsOn: ''
Expand All @@ -28,20 +28,23 @@ jobs:
displayName: ${{ parameters.jobName }}
pool:
vmImage: "ubuntu-latest"
condition: and(succeeded(), variables['SKIP'])
condition: and(succeeded(), eq(variables['SKIP'], 'False'))
dependsOn: ${{ parameters.dependsOn }}
variables:
DOCKER_TAG: ${{ parameters.imageTag }}
SKIP: eq('${{ parameters.skip }}', 'false')
SKIP: ${{ parameters.skip }}
DOCKER_BUILD_ARGS: ${{ parameters.dockerBuildArgs }}
steps:
- bash: |
if [ -z "$DOCKER_TAG" ]; then
echo "Empty docker tag"
else
echo "Non empty docker tag $DOCKER_TAG"
fi
echo "Parameters.imageTag = \"${{ parameters.imageTag }}\""
echo "Variable DOCKER_TAG = \"$(DOCKER_TAG)\""

echo "Variable DOCKER_TAG = \"$DOCKER_TAG\""
echo "Variable SKIP = \"$SKIP\""
echo "Variable DOCKER_BUILD_ARGS = \"$DOCKER_BUILD_ARGS\""
env:
DOCKER_TAG: $(DOCKER_TAG)
displayName: Echo tag parameter and variables
Expand All @@ -52,9 +55,9 @@ jobs:
displayName: 'Dockerhub login'
- script: |
if [[ -z "${{ parameters.dockerFilePath }}" ]]; then
docker build -t ${{ parameters.imageName }}:$(DOCKER_TAG) ${{ parameters.dockerBuildArgs }} ${{ parameters.folder }}
docker build -t ${{ parameters.imageName }}:$(DOCKER_TAG) $(DOCKER_BUILD_ARGS) ${{ parameters.folder }}
else
docker build -t ${{ parameters.imageName }}:$(DOCKER_TAG) -f ${{ parameters.dockerFilePath }} ${{ parameters.dockerBuildArgs }} ${{ parameters.folder }}
docker build -t ${{ parameters.imageName }}:$(DOCKER_TAG) -f ${{ parameters.dockerFilePath }} $(DOCKER_BUILD_ARGS) ${{ parameters.folder }}
fi
docker push ${{ parameters.imageName }}:$(DOCKER_TAG)
displayName: 'Build and push docker image'
Expand Down
36 changes: 25 additions & 11 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ stages:
dependsOn: []
jobs:
- job: HashBaseDependencies
timeoutInMinutes: 5
displayName: Hash Dependencies
pool:
vmImage: 'ubuntu-latest'
Expand All @@ -53,10 +52,10 @@ stages:
# has the image?
echo "Trying to pull $(SetDockerBaseTag.DOCKER_BASE_TAG)"
if docker pull data61/anonlink-base:$(SetDockerBaseTag.DOCKER_BASE_TAG) ; then
echo "Image pulled"
echo "Base image pulled. Skipping building the base image."
echo "##vso[task.setvariable variable=BUILD_BASE;isOutput=true]false"
else
echo "Image wasn't present"
echo "Base image with correct tag wasn't present."
echo "##vso[task.setvariable variable=BUILD_BASE;isOutput=true]true"
fi
name: BaseRequired
Expand All @@ -68,10 +67,32 @@ stages:
imageName: data61/anonlink-base
jobName: 'anonlink_base'
imageTag: $[dependencies.HashBaseDependencies.outputs['SetDockerBaseTag.DOCKER_BASE_TAG']]
skip: $[dependencies.HashBaseDependencies.outputs['BaseRequired.BUILD_BASE']]
skip: $[eq(dependencies.HashBaseDependencies.outputs['BaseRequired.BUILD_BASE'], 'false')]

- stage: stage_docker_image_build
displayName: Anonlink Docker build
dependsOn: [stage_base_docker_image_build]
jobs:
# Why do we recompute the base hash? Because we can't pass variables between stages.
# https://github.com/microsoft/azure-pipelines-tasks/issues/4743
- job: HashBaseDependencies
displayName: Hash Dependencies
pool:
vmImage: 'ubuntu-latest'
steps:
- template: .azurePipeline/templateSetVariableDockerBaseTag.yml
- template: .azurePipeline/templateDockerBuildPush.yml
parameters:
folder: './backend'
jobName: 'anonlink_app'
dependsOn: HashBaseDependencies
imageName: data61/anonlink-app
# this part is still todo automated
dockerBuildArgs: "--build-arg VERSION=84164cd33c77ba15258283426317403a896d49582f636d5ada0943afd6efa3b2"
#dockerBuildArgs: "--build-arg VERSION=$[dependencies.HashBaseDependencies.outputs['SetDockerBaseTag.DOCKER_BASE_TAG']]"

- stage: stage_docker_nginx_image_build
displayName: Nginx Docker build
dependsOn: []
jobs:
- template: .azurePipeline/templateDockerBuildPush.yml
Expand All @@ -80,13 +101,6 @@ stages:
dockerFilePath: './frontend/Dockerfile'
imageName: data61/anonlink-nginx
jobName: 'anonlink_nginx'
- template: .azurePipeline/templateDockerBuildPush.yml
parameters:
folder: './backend'
imageName: data61/anonlink-app
jobName: 'anonlink_app'
${{ if eq(variables['newBaseImage'], true) }}:
dockerBuildArgs: '--build-arg VERSION=TODO'

- stage: stage_benchmark_image_build
displayName: Build benchmark image
Expand Down
4 changes: 2 additions & 2 deletions base/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ Flask==1.1.1
gunicorn==20.0.4
ijson==2.3
iso8601==0.1.12
jaeger-client==3.12.0
jaeger-client==4.0.0
marshmallow==3.0.0b10
minio==5.0.7
opentracing==1.3.0
opentracing==2.3.0
opentracing_instrumentation==2.4.3
psycopg2==2.7.5
pytest==5.1.3
Expand Down