Azure DevOps Pipelines. Unable to Set Timeout on Task Level

Viewed 68

Azure documentation states:

You can also set the timeout for each task individually - see task control options.

Yet, my task still times out despite me following the syntax and using self-hosted agent. Here is my Pipeline:

trigger: none

pool:
  name: 'DevOps-Agent2-VM'
steps:
- checkout: none

- task: PowerShell@2
  timeoutInMinutes: 5760
  inputs:
    targetType: 'inline'
    script: |
        Write-Host Starting writing log file
        $PathLogFiles = "C:\Logs"
        $DayFileNameLog = Get-Date -Format yyyyMMddHHmmss
        $NewFolderName = Get-Date -Format yyyyMMddHHmmss
        $PathLogFileFull = "$PathLogFiles\PSRemotingLogs-$DayFileNameLog.log"
        Start-Transcript -Path "$PathLogFileFull" -Append

        $Timer = New-Timespan -Hours 96
        $Clock = [diagnostics.stopwatch]::StartNew()
        While ($clock.elapsed -lt $timer){
        Get-Date
        Start-Sleep -Seconds 600
        }       
        Write-Host Timer end

        Write-Host Stopping writing log file
        Stop-Transcript
1 Answers

First you have place time out under job, then only it'll work for your tasks- see below.

trigger:
  - none
resources:
  - repo: self
variables:
  - group: iosvariables
jobs:
  - job: build
    timeoutInMinutes: 180
    pool:
      vmImage: 'macos-latest'
    steps:
    - checkout: self
      persistCredentials: true
      clean: true
    - task: NodeTool@0
      timeoutInMinutes: 180
      displayName: 'Install Node'
      inputs:
        versionSpec: '18.8.0' # you can use your desired version here
    - script: yarn install
      displayName: Install Dependencies
    - script: |
        # Disable autocommit on version bump 
        yarn config set version-sign-git-tag false
        yarn config set version-git-tag false
        yarn config set version-commit-hooks false
        Checkout branch where the build is triggered
        git checkout $(Build.SourceBranchName)
        # Extract existing version of package.json
        oldVer=$(jq -r ".version" package.json)
        # Bump version
        yarn version --patch
        # Add bumped version to staging
        git add *
        # Extract new version of package.json
        newVer=$(jq -r ".version" package.json)
        # Set environment variables
        echo "##vso[task.setvariable variable=OLD_VERSION]$oldVer"
        echo "##vso[task.setvariable variable=NEW_VERSION]$newVer"
      displayName: 'Bump version and set variables'

    - task: InstallAppleCertificate@2
      timeoutInMinutes: 180
      displayName: Install Apple Certificate
      inputs:
        certSecureFile: 'abc.p12'
        certPwd: '$(p12password)'
        keychain: 'temp'
        deleteCert: true
    - task: InstallAppleProvisioningProfile@1
      timeoutInMinutes: 180
      displayName: 'Install Apple Provisioning Profile'
      inputs:
        provisioningProfileLocation: 'secureFiles'
        provProfileSecureFile: 'abc_QA.mobileprovision'
        removeProfile: true
    - task: CocoaPods@0
      timeoutInMinutes: 180
      displayName: 'Install CocoaPods'
      inputs:
        workingDirectory: '/Users/runner/work/1/s/packages/abc-xyz/ios'
    - task: Xcode@5
      timeoutInMinutes: 180
      displayName: 'Build IPA'
      inputs:
        actions: 'build'
        configuration: 'Qa'
        sdk: 'iphoneos'
        scheme: 'abcQa'
        xcWorkspacePath: '/Users/runner/work/1/s/packages/abc-xyz/ios/abcmobile.xcworkspace'
        packageApp: true
        exportPath: 'output/$(SDK)/$(Configuration)'
        exportMethod: 'enterprise'
        signingOption: 'manual'
        signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
        provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'
    - task: CopyFiles@2
      timeoutInMinutes: 180
      displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
      inputs:
        SourceFolder: '$(system.defaultworkingdirectory)'
        Contents: |
          **/*.ipa
          **/*.dSYM/**
        TargetFolder: '$(build.artifactstagingdirectory)'
        overWrite: true
        cleanTargetFolder: true
    - task: PublishBuildArtifacts@1
      timeoutInMinutes: 180
      displayName: 'Publish Artifact: iOSBuild'
      inputs:
        ArtifactName: iOSBuild
Related