AL-Go
AL-Go copied to clipboard
Dependency without Deployment?
We have a core app that we deploy to all clients, and maintain. Eventually it will be in AppSource, but for now we deploy directly. This lives in a GitHub/AL-Go repository. Each client gets a dependent app that contains client-specific customizations, which will always be deployed directly. Each client app will live in its own GitHub repo. I can find how to point each client app to the repo for the core app for compile and build--but we do not want to redeploy the core app each time we deploy updates to client customizations. How can we set up deployment of the client apps such that they do not redeploy the core app each time?
So, you have an appDependencyProbingPath to your main app from the PTE repo - and when you deploy from the PTE repo, it also tries to deploy the appsource app?
I am only in the process of setting this up for the first dependent app--something in the documentation suggested that named dependencies would be deployed at the same time. Perhaps I misunderstood. I will try to find the reference--but there are at least three sources now--the AL-Go workshop PowerPoint, the blog instructions, and the .md files in the AL-Go repo.
Here it is: "During a build all the apps mentioned in the probing paths will be downloaded and installed on the tenant." From https://github.com/microsoft/AL-Go/blob/main/Scenarios/AppDependencies.md
Correct - during the build - these apps are downloaded and published to the container. but... - when you publish to a customer environment - they do not. Unless you set generateDependencyArtifact to true - then the dependencies will also be deployed.
Ah. Thanks for clearing that up. And thanks for mentioning the generateDependencyArtifact setting. For the record, the language in the AppDependencies.md specifies "installed on the tenant," which I think strongly implies the Azure tenant--where the customer environments live. The language in the Settings.md--"pipeline generates an artifact with the external dependencies used for building the apps" does not say that the artifact(s) will be deployed. I would not have assumed that "generate an artifact" automatically means "publish to the target environment." Should I?
Generate an artifact means generate an artifact.
When you then later publish to an environment - it will install the app(s) If the app(s) has dependencies that are not installed on the BC Saas environment and there is a dependency artifact - then it will be installed. If the app(s) has dependencies that are not installed on the BC Saas environment and there is no dependency artifact - then it will fail.
I will add another scenario doc to my todo list which covers this.
I am sure that would be welcome--no such thing as too much documentation!