Addressables and Release Channels - Development, Stage and Live

I’m prototyping an application that is planned to rely on Addressables. I’m trying to get my head around the workflow.

Goal: Have an application build that targets a specific build catalog on a remote server.

Example:
TestApp-Dev.exe would pull down the catalog/assets from [some cloud service]/dev/[the assets being worked on]
TestApp-Stage.exe would pull down from [some cloud service]/stage/[the assets being reviewed]
TestApp.exe would pull down from [some cloud service]/live/[the main release]

Problem is updating the catalogs. I can make a one build but once I switch to the other channels/releases it warns me that previous builds loose the connection to the catalog.

Ideally, it would be great when working on addressables, I can give the review team a build, and have a release build that doesn’t need to be updated.

Is there a workflow to address this? There has got to be away to develop, stage and release assets.

Found a solution. It’s Three steps.

This is partially from: Profiles | Addressables | 1.19.19

Solution:
Step One: Modifying profiles, add to the Remote Custom Paths a runtime variable, e.g. {MyNamespace.MyClass.MyURL}/content/[BuildTarget]. This makes all the catalogs urls variable.

Step Two: In the Addressable Asset Settings → Catalog set a Player Version Override to something custom that’s the same on all versions of the app. This makes all the catalog.json and catalog.hash the same. (different only by directory set in step one.)

Step Three: Make a config file that is apart of the application build that you referenced in the custom paths.
example:
MyURL = “https://youdomain.com/development/” on the dev build.
MyURL = “https://youdomain.com/staging/” on the staging build.

Now the asset bundles can be dropped into whatever directory and they should work. Added functionality is a version control but I’ll get to that later.

I hope this helps people. If you got another better idea, please share. Also, tell me if this helped you.