Code Monkey home page Code Monkey logo

azure-functions-tooling-feed's Introduction

Azure Functions Tooling Feed

The Azure Functions Tooling Feed is consumed by Visual Studio and Visual Studio code to make sure they are always using the latest core tools and matching templates. The Azure Functions Tooling Feed is hosted at https://functionscdn.azureedge.net/public/cli-feed-v3.json.

Structure

{
  "tags": {                                                    // Tags acts as a pointer to various release trains
    "v1": {                                                    // Release train for v1 Functions runtime (prod)
      "release": "1.2.0",                                      // Target release for this tag
      "displayName": "Azure Functions v1 (.NET Framework)",    // The fallback display text in case localized strings are not present
      "displayVersion": "v1",                                  // Strings used to construct localized display text
      "releaseQuality": "GA",                                  // Strings used to construct localized display text
      "targetFramework": ".NET Framework",                     // Strings used to construct localized display text
      "hidden": false                                          // Indicates whether the release train is publically visible
    }
  },
  "releases": {
    "1.2.0": {
      "cli": "",                                           // URL of the zip file contiaining the corresponding CLI
      "localEntryPoint": "func.exe",                       // How to start the CLI i.e. via dotnet.exe for func.dll or directly incase for func.exe
      "itemTemplates": "",                                 // URL of the NuGet Package for Item templates consumed by Visual Studio
      "projectTemplates": "",                              // URL of the NuGet Package for Item templates consumed by Visual Studio
      "templateApiZip": "",                                // URL of the zip file containing templates into JSON files.
      "sha2": ""                                           // SHA2 for the CLI zip
    }
  }
}

Update Guidelines

  1. Feed additive, so new releases are added to the feed. Existing releases are never removed from the feed.
  2. Consider a version format of X.Y.Z (Major.Minor.Patch). 
    • Minor version update
      • For v1: "1.0.12” was updated to “1.1.0” when cli was updated from 1.0.12 to 1.0.13
      • For v2:  "2.0.1” was updated to “2.1.0” when cli was updated from 2.0.1-beta.25 to 2.0.1-beta.26 
    • Patch version update
      • For v1: "1.1.0” was updated to “1.1.1” when templates were updated from 1.0.3.10186 to 1.0.3.10187.
      • For v2:  "2.1.0” was updated to “2.1.1” when templates were updated from 2.0.0-beta-10177 to 2.0.0-beta-10178

Related GitHub Repositories

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

azure-functions-tooling-feed's People

Contributors

ahmelsayed avatar alrod avatar ankitkumarr avatar arroyc avatar azfuncgh avatar brettsam avatar ejizba avatar fabiocav avatar francisco-gamino avatar gzuber avatar hazhzeng avatar jimmylewis avatar jviau avatar kashimiz avatar kshyju avatar liliankasem avatar maiqbal11 avatar mathewc avatar mattchenderson avatar mhoeger avatar michaelpeng36 avatar microsoft-github-policy-service[bot] avatar microsoftopensource avatar pragnagopa avatar satvu avatar soninaren avatar surgupta-msft avatar v-smanchem avatar vpofengineering avatar yojagad avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

azure-functions-tooling-feed's Issues

v3-preview feed gone?

Seems the feed for v3-preview was removed. Why?

Visual studio is now complaining that there is no functions runtime available.

Hide .NET 5 for V3 - tooling feed

Set .NET5 for v3 and v4 - set both false

NET 5.0 -isolated is showing up because its not hidden in the feed, both the v3 tag and the net5-isolated entry in that release have hidden = false. By design for VS, probably a bug in the feed.

Screen Shot 2022-08-31 at 3 47 16 PM

note net5-isolated IS disabled for v4, but we still are pulling in the v3 version of it. It needs to be hidden = true in both places.
Screen Shot 2022-08-31 at 3 47 34 PM

v3-preview missing from feed.json

The feed.json file is no longer getting v3-preview even though the tags and releases folders contain the appropriate content. I believe this is tied to my issue listed here Azure/azure-functions-host#5145 where I cannot start my v3-preview project that was working yesterday.
C:\Users[user]\AppData\Local\AzureFunctionsTools\feed.json

Help?

Add .NET Standard 2.0 compatible worker as option to dotnet-isolated entry

The tooling feed will need to expose a new isolated worker which is built against .NET Standard 2.0. This should not initially be a public feed entry - validation will be needed against it.

New templates to be created which would be a part of that: Azure/azure-functions-templates#1186

Per tooling partner discussion, v4 runtime variant needs to call this out with a new required capability. A proposal might be "netfx-isolated" or similar (v1 used the string "netframework" it looks like). As long as it's a new key, that should be fine. To keep things reasonably consisting, it is probably worth keeping the "-isolated" suffix on it. Overall, we need some discussion for the specific entry's title.

Tooling feed updates for in-process .NET 8

We need to update the tooling feed to include the .NET 8 in-proc Core Tools package, using the appropriate tooling suffix (tag).

Ensure the tooling feed generator is updated.

Update generator tool to split item template ID structure as needed

A diff shows that #500 was incorrect and should not have been merged.

4.67.0 had differing item templates for some stacks. This needs to be preserved. The source of the version used in 4.68.0 seems to be

dotnetEntry.itemTemplates = Helper.GetTemplateUrl($"{templatePrefix}.ItemTemplates", coreToolsMajor);

combined with
private static readonly IDictionary<string, string> _dotnetToTemplatesPrefix = new Dictionary<string, string>()
{
{ "net8-isolated", "Microsoft.Azure.Functions.Worker" },
{ "net7-isolated", "Microsoft.Azure.Functions.Worker" },
{ "net6-isolated", "Microsoft.Azure.Functions.Worker" },
{ "net6", "Microsoft.Azure.WebJobs" },
{ "net5-isolated", "Microsoft.Azure.Functions.Worker" },
{ "netcore3", "Microsoft.Azure.WebJobs" },
{ "netcore2", "Microsoft.Azure.WebJobs" },
{ "netframework", "Microsoft.Azure.WebJobs" },
{ "netfx-isolated", "Microsoft.Azure.Functions.Worker" }
};

We should update this to instead split things up. I'd suggest replacing the format strings here with a pair of dictionaries containing the full IDs, one for the item templates, and one for the project templates.

In an ideal world, the feed bases itself off of a previous (probably GA) entry. Then, none of this would need to be hardcoded in this way at all.

Update tooling feed to expose .NET 6.0 Isolated

The feed should be modified to expose (unhide) the .NET 6.0 isolated to enable the tooling experience.

  • Create a PR for the feed to unhide .NET 6 isolated
  • Have Phil and Nathan to test this in VS and VS Code
  • Merge PR and publish feed changes

Add validation tests for v4 and v3 cli-tool-feeds

After talking briefly with Naren, it seems like the tests that can add value are something like these.

  1. Make sure the package links that are part of the updated cli-tool-feed are valid (i.e. they are available and downloadable) >> This is to ensure there is no human error while updating existing item-templates/project-templates
  2. Make sure the cli-tool-feed structure follows a knowledge base model which means a new property can be added but we cannot delete a property from existing elements.
    @soninaren

Tooling feed updates for in-process .NET 8

We need to update the tooling feed to include the .NET 8 in-proc Core Tools package, using the appropriate tooling suffix (tag).

Ensure the tooling feed generator is updated.

V4 feed is behind V3 feed for V3 runtime

Per title, I noticed I was getting a really old Core Tools version (3.0.3442) in VS 16.11.5

Interestingly, @cachai2 is on 16.9.11 but is getting Core Tools 3.0.3785. These seem to be pulling from different feed versions. In both cases, they are looking for the GA V3 entry. But with different feed, wildly different results.

V4 feed

"v3": {
"release": "3.23.5",
"releaseQuality": "GA",
"hidden": false
},

"3.23.5": {
"templates": "https://functionscdn.azureedge.net/public/TemplatesApi/3.1.1648.zip",
"workerRuntimes": {
"dotnet": {
"netcore3": {
"displayInfo": {
"displayName": ".NET Core 3",
"hidden": false,
"displayVersion": "v3",
"targetFramework": ".NET Core",
"description": "LTS"
},
"capabilities": "",
"sdk": {
"name": "Microsoft.NET.Sdk.Functions",
"version": "3.0.13"
},
"default": true,
"localEntryPoint": "func.exe",
"targetFramework": "netcoreapp3.1",
"itemTemplates": "https://www.nuget.org/api/v2/package/Microsoft.Azure.WebJobs.ItemTemplates/3.1.1812",
"projectTemplates": "https://www.nuget.org/api/v2/package/Microsoft.Azure.WebJobs.ProjectTemplates/3.1.1812",
"projectTemplateId": {
"csharp": "Microsoft.AzureFunctions.ProjectTemplate.CSharp.3.x"
},
"localContainerBaseImage": "DOCKER|mcr.microsoft.com/azure-functions/dotnet:3.0-appservice",
"serviceAppSettings": {
"FUNCTIONS_EXTENSION_VERSION": "~3",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
},
"windowsSiteConfig": {
"netFrameworkVersion": "v4.0"
},
"linuxSiteConfig": {
"linuxFxVersion": "DOTNET|3.1"
}
},
"net5-isolated": {
"displayInfo": {
"displayName": ".NET 5",
"hidden": false,
"displayVersion": "v3",
"targetFramework": ".NET 5",
"description": "Isolated"
},
"capabilities": "isolated,net5",
"sdk": {
"name": "Microsoft.Azure.Functions.Worker.Sdk",
"version": "1.0.3"
},
"default": false,
"toolingSuffix": "net5-isolated",
"localEntryPoint": "dotnet.exe",
"targetFramework": "net5.0",
"itemTemplates": "https://www.nuget.org/api/v2/package/Microsoft.Azure.Functions.Worker.ItemTemplates/3.1.1796",
"projectTemplates": "https://www.nuget.org/api/v2/package/Microsoft.Azure.Functions.Worker.ProjectTemplates/3.1.1796",
"projectTemplateId": {
"csharp": "Microsoft.AzureFunctions.ProjectTemplate.CSharp.Isolated.3.x"
},
"localContainerBaseImage": "DOCKER|mcr.microsoft.com/azure-functions/dotnet-isolated:3.0-dotnet-isolated5.0-appservice",
"serviceAppSettings": {
"FUNCTIONS_EXTENSION_VERSION": "~3",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
},
"windowsSiteConfig": {
"netFrameworkVersion": "v5.0"
},
"linuxSiteConfig": {
"linuxFxVersion": "DOTNET-ISOLATED|5.0"
}
}
}
},
"coreTools": [
{
"OS": "Linux",
"Architecture": "x64",
"downloadLink": "https://functionscdn.azureedge.net/public/3.0.3442/Azure.Functions.Cli.linux-x64.3.0.3442.zip",

V3 feed

"v3": {
"release": "3.30.0",
"displayName": "Azure Functions v3 (.NET Core)",
"displayVersion": "v3",
"releaseQuality": "GA",
"targetFramework": ".NET Core",
"hidden": false
}

"3.30.0": {
"Microsoft.NET.Sdk.Functions": "3.0.13",
"cli": "https://functionscdn.azureedge.net/public/3.0.3785/Azure.Functions.Cli.min.win-x86.3.0.3785.zip",

Publishing 8.0 Azure Function App (Linux), deployment failed with BadRequest: AppSetting with name 'WEBSITE_USE_PLACEHOLDER_DOTNETISOLATED ' is not allowed.

The following added setting in the feed since 4.61.0 is causing an issue with Publish from Visual Studio

          "WEBSITE_USE_PLACEHOLDER_DOTNETISOLATED ": "1"

REPRO STEPS

  1. File > New project > Azure Functions > .NET 8.0 Isolated, leave other options as default (Http trigger)
  2. Publish to Azure Function App (Linux)
    Plan Type: App service plan

image

internal bug:
https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1917518

Improve message in Installing CLI dialog

VS shows following dialog when downloading Azure Function Core Tools
installingcli

Message is confusing as it displays the CLI feed version and not the Azure Functions Core tools version.
Update message to: Downloading Azure Functions CLI tools

Add tooling feed tests

This repository holds feed for several packages and tools, which some of our other tools (VS, VS Code Extension) rely on.

Even though the feed is updated via automation (not yet for v4 feed), we don't have tests to validate the feed. We need to add some tests that validate basic scenarios for our feed such as -- making sure the AppSettings values are correct, capabilities are accurate and never remove unintentionally, and several other scenarios that typically shouldn't change.

This issue tracks the work to create an initial setup with very basic tests. We can then follow-up by adding more robust tests for better coverage.

cc: @phil-allen-msft (thanks for suggesting this)

Feed generator generates incorrect CLI link

In standaloneCli entries, for x64 Windows, the generator includes the link for the min version of the CLI. This is inconsistent with other platforms. In the past we always included the full CLI links. I think this may have been a bug.

standaloneCli": [
        {
          "OS": "Linux",
          "Architecture": "x64",
          "downloadLink": "https://functionscdn.azureedge.net/public/3.0.3233/Azure.Functions.Cli.linux-x64.3.0.3233.zip",
          "sha2": "4e34f8495c701b481292be70ca3abfc77a7449dccab58211298890657a743e19"
        },
        {
          "OS": "Windows",
          "Architecture": "x64",
          "downloadLink": "https://functionscdn.azureedge.net/public/3.0.3233/Azure.Functions.Cli.min.win-x64.3.0.3233.zip",
          "sha2": "be79e10b575a7111a33f2450a287b3ed9d6b2bd9d0702ee9297200fc569ac29d"
        },
        {
          "OS": "Windows",
          "Architecture": "x86",
          "downloadLink": "https://functionscdn.azureedge.net/public/3.0.3233/Azure.Functions.Cli.win-x86.3.0.3233.zip",
          "sha2": "9db43d54b20c918a9004bfaa3984f96613cfd7d61db4069126308bcacf26a9cf"
        }
      ]

Here, the link for Windows x64 is "..Azure.Functions.Cli.min.win-x64.3.0.3233.zip"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.