From 617db11dcab604e36044c7e6ac04f7151d7bbcd1 Mon Sep 17 00:00:00 2001 From: Sherman Yang Date: Mon, 12 Oct 2020 10:24:26 -0500 Subject: [PATCH] enhance devops to support maven validate, custom Dockerfile, and Python integration tests --- devops/build-stage.yml | 6 +++++- devops/deploy-stages.yml | 5 +++++ devops/tasks/acr-publish.yml | 11 ++++++++++- devops/tasks/deployment-steps.yml | 13 +++++++++++++ devops/tasks/python-integration-test.yml | 18 ++++++++++++++++++ 5 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 devops/tasks/python-integration-test.yml diff --git a/devops/build-stage.yml b/devops/build-stage.yml index f6e0ead5..5e305fb1 100644 --- a/devops/build-stage.yml +++ b/devops/build-stage.yml @@ -44,7 +44,11 @@ stages: clean: all steps: - download: none - + - task: Maven@3 + displayName: 'Maven: validate' + inputs: + mavenPomFile: ${{ parameters.mavenPomFile }} + goals: 'validate' - task: Maven@3 displayName: 'Maven Core Build' condition: ne('${{ parameters.serviceCoreMavenOptions }}', '') diff --git a/devops/deploy-stages.yml b/devops/deploy-stages.yml index baab9a9c..b5dc34c8 100644 --- a/devops/deploy-stages.yml +++ b/devops/deploy-stages.yml @@ -25,6 +25,7 @@ parameters: testCoreMavenGoal: 'install' skipDeploy: false skipTest: 'false' + dockerFile: '' stages: @@ -71,6 +72,10 @@ stages: environment: ${{ environment }} chartPath: ${{ parameters.chartPath }} valuesFile: ${{ parameters.valuesFile }} + dockerFile: ${{ parameters.dockerFile }} hldRegPath: ${{ parameters.hldRegPath }} skipDeploy: ${{ parameters.skipDeploy }} skipTest: ${{ parameters.skipTest }} + runPythonTest: ${{ parameters.runPythonTest }} + testPythonFilePath: ${{ parameters.testPythonFilePath }} + testPythonFile: ${{ parameters.testPythonFile }} diff --git a/devops/tasks/acr-publish.yml b/devops/tasks/acr-publish.yml index 016af18c..9b01ea46 100644 --- a/devops/tasks/acr-publish.yml +++ b/devops/tasks/acr-publish.yml @@ -18,6 +18,8 @@ parameters: environment: '' providerName: '' jarFilePath: '' + artifactName: '' + dockerFile: '' steps: - task: AzureCLI@1 @@ -26,6 +28,8 @@ steps: env: JAR_FILE_PATH: ${{ parameters.jarFilePath }} IMAGE: $(CONTAINER_REGISTRY_NAME).azurecr.io/${{ parameters.imageRepoName }}-${{ parameters.environment }}:$(Build.SourceVersion) + DOCKERFILE: ${{ parameters.dockerFile }} + inputs: azureSubscription: '$(SERVICE_CONNECTION_NAME)' addSpnToEnvironment: true @@ -47,7 +51,12 @@ steps: echo "------------------------------------" az acr login -n $(CONTAINER_REGISTRY_NAME) - writeDockerFile + if [[ ! ${DOCKERFILE} ]]; then + writeDockerFile + else + cp ${{ parameters.artifactName }}/${DOCKERFILE} Dockerfile + fi + jar_file_name=$(basename $JAR_FILE_PATH) cp $JAR_FILE_PATH . diff --git a/devops/tasks/deployment-steps.yml b/devops/tasks/deployment-steps.yml index f3d8325e..719d3dc9 100644 --- a/devops/tasks/deployment-steps.yml +++ b/devops/tasks/deployment-steps.yml @@ -28,6 +28,11 @@ parameters: testCoreMavenOptions: '' testArtifactLocation: 'drop/deploy' elasticEndpoint: '' + skipTest: '' + dockerFile: '' + testPythonFilePath: '' + testPythonFile: '' + runPythonTest: '' steps: - template: detect-jar.yml @@ -43,6 +48,8 @@ steps: jarFilePath: $(DetectJarScript.JAR_FILE_PATH) providerName: ${{ parameters.providerName }} imageRepoName: ${{ parameters.serviceName }} + artifactName: ${{ parameters.artifactName }} + dockerFile: ${{ parameters.dockerFile }} - template: aks-deployment-steps.yml parameters: @@ -90,3 +97,9 @@ steps: options: $(MAVEN_INTEGRATION_TEST_OPTIONS) publishJUnitResults: ${{ parameters.mavenPublishJUnitResults }} + - template: python-integration-test.yml + parameters: + stepName: PythonRunIntegrationTests + testPythonFilePath: ${{ parameters.testPythonFilePath }} + testPythonFile: ${{ parameters.testPythonFile }} + runPythonTest: ${{ parameters.runPythonTest }} diff --git a/devops/tasks/python-integration-test.yml b/devops/tasks/python-integration-test.yml new file mode 100644 index 00000000..f22c173a --- /dev/null +++ b/devops/tasks/python-integration-test.yml @@ -0,0 +1,18 @@ + +parameters: + stepName: '' + runPythonTest: '' + testPythonFilePath: '' + testPythonFile: '' + testArtifactLocation: 'drop/deploy' + +steps: + - task: Bash@3 + condition: and(succeeded(), eq('${{ parameters.runPythonTest }}', 'true')) + name: ${{ parameters.stepName }} + displayName: 'Run python integration tests' + inputs: + targetType: filePath + filePath: '$(System.DefaultWorkingDirectory)/${{ parameters.testArtifactLocation }}/${{ parameters.testPythonFilePath }}/${{ parameters.testPythonFile }}' + arguments: '$(AUTH_SECRET) $(AUTH_SERVICE_TOKEN_X_API_KEY)' + workingDirectory: '$(System.DefaultWorkingDirectory)/${{ parameters.testArtifactLocation }}/${{ parameters.testPythonFilePath }}' \ No newline at end of file -- GitLab