AzFunc4DevOps.AzureDevOps 1.0.0

dotnet add package AzFunc4DevOps.AzureDevOps --version 1.0.0                
NuGet\Install-Package AzFunc4DevOps.AzureDevOps -Version 1.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AzFunc4DevOps.AzureDevOps" Version="1.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AzFunc4DevOps.AzureDevOps --version 1.0.0                
#r "nuget: AzFunc4DevOps.AzureDevOps, 1.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install AzFunc4DevOps.AzureDevOps as a Cake Addin
#addin nuget:?package=AzFunc4DevOps.AzureDevOps&version=1.0.0

// Install AzFunc4DevOps.AzureDevOps as a Cake Tool
#tool nuget:?package=AzFunc4DevOps.AzureDevOps&version=1.0.0                

AzFunc4DevOps

A set of Azure DevOps Triggers and Bindings for Azure Functions. Leverages Azure Functions platform to simplify integration, automation, import/export and data synchronization scenarios for Azure DevOps.

<img alt="Nuget" src="https://img.shields.io/nuget/v/AzFunc4DevOps.AzureDevOps?label=current%20version">

How to use

As a prerequisite, you will need Azure Functions Core Tools installed on your devbox.

1. Create a local folder, name it e.g. AzFunc4DevOpsTest and initialize an Azure Functions .NET project in it:
  func init --worker-runtime dotnet
2. Install AzFunc4DevOps.AzureDevOps NuGet package:
  dotnet add package AzFunc4DevOps.AzureDevOps --prerelease
3. Open the folder in Visual Studio Code:
  code .

Alternatively open the project in Visual Studio or any other IDE of your choice.

4. In local.settings.json file configure the following required settings:
{
    "IsEncrypted": false,
    "Values": {
        "FUNCTIONS_WORKER_RUNTIME": "dotnet",

        "AzureWebJobsStorage": "my-azure-storage-connection-string",

        "AZFUNC4DEVOPS_AZURE_DEVOPS_ORG_URL": "https://dev.azure.com/my-company-name",
        "AZFUNC4DEVOPS_AZURE_DEVOPS_PAT": "my-azure-devops-personal-access-token"
    }
}

AzureWebJobsStorage needs to be configured, because AzFunc4DevOps internally uses Azure Durable Functions, which require a storage. It's OK to use Azurite for local development.

AZFUNC4DEVOPS_AZURE_DEVOPS_ORG_URL is your Azure DevOps organization's full URL. E.g. https://dev.azure.com/my-company-name.

AZFUNC4DEVOPS_AZURE_DEVOPS_PAT is your Azure DevOps Personal Access Token. Create one in Azure DevOps portal. Alternatively use KeeShepherd tool for creating and safely handling it.

NOTE: the PAT needs to be given all relevant scopes. E.g. if your Function is going to read/write Work Items, then vso.work_write will be needed.

5. Start adding Functions that use AzFunc4DevOps triggers and bindings.

E.g. the following Function adds [Critical] title prefix to a bug, once its Severity field changes to 1 - Critical:

public static class AddCriticalToBugTitle
{
    [FunctionName(nameof(AddCriticalToBugTitle))]
    [return: WorkItem(Project = "MyProjectName")]
    public static WorkItemProxy Run
    (
        [WorkItemChangedTrigger
        (
            Project = "MyProjectName",
            WiqlQueryWhereClause = "[System.WorkItemType] = 'Bug'",
            FieldName = "Microsoft.VSTS.Common.Severity",
            ToValue = "1 - Critical"
        )]
        WorkItemChange change
    )
    {
        var item = change.NewVersion;

        if (!item.Title.StartsWith("[Critical]"))
        {
            item.Title = "[Critical] " + item.Title;
        }

        return item;
    }
}
6. Run your Function locally:
  func start

Samples

You can find more sample Functions in the samples folder.

Reference

See the documentation in our Wiki.

Contributing

Is very much welcomed.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 402 12/8/2022
0.0.6-preview 185 11/6/2022