Skip to content
Snippets Groups Projects
build.yml 2.72 KiB
Newer Older
  • Learn to ignore specific revisions
  • David Diederich's avatar
    David Diederich committed
    trigger: [ 'master' ]
    
    pool:
      name: Hosted Ubuntu 1604
      demands: maven
    
    variables:
      osProjectName: notification
      dockerDir: provider/$(osProjectName)-gcp/docker
      imageName: os-$(osProjectName)-app
      sourceImageName: gcr.io/opendes/$(imageName)
      tag: $(Build.BuildNumber)
    
    steps:
      - task: DownloadSecureFile@1
        name: gcrKey
        inputs:
          secureFile: cicd-push-image-to-cr-keyfile.json
    
    
      - task: Maven@3
        displayName: 'Build and test'
        inputs:
          jdkVersionOption: 1.8
          jdkArchitectureOption: 'x64'
          mavenPomFile: 'pom.xml'
          goals: "clean install"
          options: '--settings configuration/settings.xml -DVSTS_FEED_TOKEN=$(VSTS_FEED_TOKEN)'
          testResultsFiles: '**/TEST-*.xml'
    
      - bash: |
          #!/bin/bash
    
          set -e
          pushd $(dockerDir)
          docker-compose build $(imageName)
          echo 'Image done.'
          cat $(gcrKey.secureFilePath) | docker login -u _json_key --password-stdin https://gcr.io
          echo 'Login done.'
    
          docker tag $(sourceImageName) $(sourceImageName):$(tag)
          docker push $(sourceImageName):$(tag)
          popd
        displayName: 'Docker image build and push'
    
    
      - bash: |
          sed -i -e "s|{{definitionName}}|$(build.DefinitionName)|g" deploy.sh
          sed -i -e "s|{{sourceBranchName}}|$(build.SourceBranchName)|g" deploy.sh
          sed -i -e "s|{{buildNumber}}|$(build.BuildNumber)|g" deploy.sh
        workingDirectory: provider/notification-gcp/scripts
        displayName: 'Gomplate GCP deploy script'
    
      - task: ArchiveFiles@2
        displayName: 'Archive integration-tests'
        inputs:
          rootFolderOrFile: 'testing'
          archiveFile: 'provider/notification-gcp/target/integration-tests.zip'
          includeRootFolder: false
    
      - task: CopyFiles@2
        displayName: 'Copy deployable jar and integration tests zip'
        inputs:
          sourceFolder: 'provider/notification-gcp/target'
          contents: |
            *spring-boot.jar
            integration-tests.zip
          targetFolder: '$(build.artifactstagingdirectory)/deploy'
    
      - task: CopyFiles@2
        displayName: 'Copy maven settings.xml'
        inputs:
          sourceFolder: 'configuration'
          contents: 'settings.xml'
          targetFolder: '$(build.artifactstagingdirectory)/deploy'
    
      - task: CopyFiles@2
        displayName: 'Copy deploy scripts'
        inputs:
          sourceFolder: 'provider/notification-gcp/scripts'
          contents: '**'
          targetFolder: '$(build.artifactstagingdirectory)/deploy'
    
      - task: CopyFiles@2
        displayName: 'Copy deployment yaml'
        inputs:
          sourceFolder: 'provider/notification-gcp/src/main/appengine'
          contents: '**'
          targetFolder: '$(build.artifactstagingdirectory)/deploy'
    
      - task: PublishBuildArtifacts@1
        displayName: 'Publish Artifact: drop'
        inputs:
          PathtoPublish: '$(build.artifactstagingdirectory)'