parameters: Image: '' Tag: '' ContainerCommand: '' steps: # 'envVars' in the 'Docker@1' task is a bit funky. When you want to use a # variable, you have to quote it. But the quote is also sent directly to # Docker and ends up in the variable, which you don't want. To work around # this, we set the correct variable first (which becomes an env-variable), and # pass that env-variable through to Docker. We cannot use the normal # 'variables' entry, as we are a template. So that results in this bit of # Bash code. Not because it is pretty, but it is the only way we found that # works. - bash: | echo "##vso[task.setvariable variable=TARGET_BRANCH]${SYSTEM_PULLREQUEST_TARGETBRANCH}" echo "Target branch is ${SYSTEM_PULLREQUEST_TARGETBRANCH}" displayName: "Set target branch" condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest')) - task: Docker@1 ${{ if eq(parameters.Image, 'compile-farm') }}: displayName: 'Build' ${{ if eq(parameters.Image, 'compile-farm-ci') }}: displayName: 'Build and test' # Run the commit-checker only if it is a Pull Request condition: and(succeeded(), or(not(contains(variables['Agent.JobName'], 'commit-checker')), eq(variables['Build.Reason'], 'PullRequest'))) inputs: command: 'Run an image' imageName: openttd/${{ parameters.Image }}:${{ parameters.Tag }} volumes: | $(Build.SourcesDirectory):$(Build.SourcesDirectory) /usr/local/share/games/openttd:/usr/local/share/games/openttd workingDirectory: '$(Build.SourcesDirectory)' containerCommand: ${{ parameters.ContainerCommand }} runInBackground: false envVars: | TARGET_BRANCH CTEST_OUTPUT_ON_FAILURE=1