rules/AzureDevOps.RetentionSettings.Rule.ps1

# PSRule rule definitions for Azure DevOps Retention Settings

# Synopsis: The target should satisfy its applicable organizational policy
Rule 'Azure.DevOps.RetentionSettings.ArtifactMinimumRetentionDays' `
    -Ref 'ADO-RET-001' `
    -Type 'Azure.DevOps.RetentionSettings' `
    -If { (Get-AzDevOpsPolicyAssessment -TargetObject $TargetObject -RuleId 'Azure.DevOps.RetentionSettings.ArtifactMinimumRetentionDays' -Policy $Configuration.assessmentPolicies.'Azure.DevOps.RetentionSettings.ArtifactMinimumRetentionDays').Outcome -in @('Pass', 'Fail') } `
    -Tag @{ release = 'GA'; assessment = 'Policy' } `
    -Level Warning {
        $assessment = Get-AzDevOpsPolicyAssessment -TargetObject $TargetObject -RuleId 'Azure.DevOps.RetentionSettings.ArtifactMinimumRetentionDays' -Policy $Configuration.assessmentPolicies.'Azure.DevOps.RetentionSettings.ArtifactMinimumRetentionDays'
        Reason $assessment.ReasonCode
        Recommend 'Apply the referenced organizational policy or collect the missing evidence.'
        $Assert.HasFieldValue($assessment, 'Outcome', 'Pass')
}

# Synopsis: The target should satisfy its applicable organizational policy
Rule 'Azure.DevOps.RetentionSettings.PullRequestRunsMinimumRetentionDays' `
    -Ref 'ADO-RET-002' `
    -Type 'Azure.DevOps.RetentionSettings' `
    -If { (Get-AzDevOpsPolicyAssessment -TargetObject $TargetObject -RuleId 'Azure.DevOps.RetentionSettings.PullRequestRunsMinimumRetentionDays' -Policy $Configuration.assessmentPolicies.'Azure.DevOps.RetentionSettings.PullRequestRunsMinimumRetentionDays').Outcome -in @('Pass', 'Fail') } `
    -Tag @{ release = 'GA'; assessment = 'Policy' } `
    -Level Warning {
        $assessment = Get-AzDevOpsPolicyAssessment -TargetObject $TargetObject -RuleId 'Azure.DevOps.RetentionSettings.PullRequestRunsMinimumRetentionDays' -Policy $Configuration.assessmentPolicies.'Azure.DevOps.RetentionSettings.PullRequestRunsMinimumRetentionDays'
        Reason $assessment.ReasonCode
        Recommend 'Apply the referenced organizational policy or collect the missing evidence.'
        $Assert.HasFieldValue($assessment, 'Outcome', 'Pass')
}