skip to Main Content

I have the repositories in my Azure Container Registry

  • myregistry.azurecr.io/bicep/myappmodule:v1.0.25798
  • myregistry.azurecr.io/bicep/myappmodule:v1.0.25799

I would like to reference the latest module by the Major Version (v1) in an external bicep file. So in this case the module with version v1.0.25799 should be used.

main.bicep:

...
module appService 'br:myregistry.azurecr.io/bicep/myappmodule:v1' = {
  name: 'appService'
  params: {
    ...
  }
}
...

Is there a way to get the latest repository Version?

I tried without success:

  • br:myregistry.azurecr.io/bicep/myappmodule:v1.*
  • br:myregistry.azurecr.io/bicep/myappmodule:v1*
  • br:myregistry.azurecr.io/bicep/myappmodule:v1:latest
  • br:myregistry.azurecr.io/bicep/myappmodule:latest

2

Answers


  1. Chosen as BEST ANSWER

    Bottom line why this isn't possible at the moment: https://github.com/Azure/bicep/issues/4186#issuecomment-907600100

    There some interesting complexities if we supported version ranges rather than single versions:

    • Every module restore that uses a version range would require an additional LIST call to enumerate tags in an ACR repository before downloading the module content.
    • Local caching benefits would be reduced a bit as well because we always have to query to check if there's a newer version that falls within the requested range.
    • bicep build becomes non-deterministic. Running it once and then another time could produce two different results if new module was published. NPM and NuGet solve this problem via lock files that get committed side by side with the source.
    • Not all versions/tags follow the x.y.z format.
    • The compiled JSON that gets published to the registry contains all the dependencies as they were resolved during bicep publish. Even if you rev'd one of the dependencies, nothing will change until the module is re-published.

    (Response on my idea request in GitHub: https://github.com/Azure/bicep/discussions/7043#discussioncomment-2978469)


  2. Tested in my enviorment and found that you can not use like below format to get that latest images from container registry. You have to use the full image name with tag to use thelatest/spefic image.

    • br:myregistry.azurecr.io/bicep/myappmodule:v1.*
    • br:myregistry.azurecr.io/bicep/myappmodule:v1*
    • br:myregistry.azurecr.io/bicep/myappmodule:v1:latest
    • br:myregistry.azurecr.io/bicep/myappmodule:latest

    Pushed two images to ACR with simillar name ie you are using and for example trying to create a container instance from that images(resides in container registry)

    enter image description here

    Getting an error since the image is trying to pull to create a container instance doesn’t exist with that name.

    enter image description here

    Tried with the full name as it is in container registry it works fine.

    enter image description here

    would suggest you please use below format as it is pushed to conatainer registry.

    • myregistry.azurecr.io/bicep/myappmodule:v1.0.25798
    • myregistry.azurecr.io/bicep/myappmodule:v1.0.25799
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search