-
Notifications
You must be signed in to change notification settings - Fork 57
6.0.0 Migration Guide
CromwellOnAzure has significant changes in its deployment model. If you haven't customized your deployment or added your own ACR, --Update
should work seamlessly. For others, please note the following:
-
Service Images: CoA will no longer publish service images on
mcr.microsoft.com
. All previous images will be removed by September 2025. Instead, CoA deployments (including updates) will create an ACR in your resource group or use an existing one you specify. The specifiedcromwell
image will be imported into that ACR, and AKS will be configured to use it for the three CoA service images. -
Customized Deployments: If you haven't customized your deployments (e.g. private networking) these changes should be transparent. Otherwise, read on.
If you host your own service images and wish to continue, you have three options:
- Build and Push Your Own Images: From the sources.
-
Use a New Binary Tool: To build and import your
trigger-service
andtes
images into your current deployment workflow. - Register Your Current ACR: With the binary deployment tool to take over the deployment workflow.
-
Deployer tool (and
build-push-acr
): Must have outbound access toapi.github.com
. -
ACR: Must have outbound access to
mcr.microsoft.com
and Ubuntu distro binary repositories, as well as wherever you are currently accessing thecromwell
image (by default DockerHub). Note thatmcr.microsoft.com
does not require public internet access from inside Azure Private Networks, but Ubuntu repositories do.
If your networking requirements do not allow this, follow the "Build and Push Your Own Images" route referenced above.
This is the simplest approach. Run the new deployment binary tool as before. It will:
- Create a new ACR in your resource group.
- Configure your User-Assigned Managed Identity for pull request access.
- Download service image sources from GitHub, upload them to the ACR, build and push them.
- Import your Crowell image into that ACR.
Inbound access can be disabled to both the deployer tool and ACR.
If you use either tool provided by this project, it is highly recommended that you create a PAT in GitHub and you add that to an environment variable named GITHUB_TOKEN
.
The binary deployer has a new configuration option: AcrId
, the resource id of the ACR you wish to use. The deploying agent must have permission to add role assignments to that ACR, which be in the same subscription as the CoA deployment. This will perform the same tasks as the previous option, but with the specified ACR.
If updating an existing deployment with customized service image paths, set TesImageName
and TriggerServiceImageName
to empty strings to remove customizations. Otherwise, the deployer tool may warn you that images won't be upgraded or assume you upgraded them yourself, possibly leading to a broken deployment.
If you prefer to build and push your service images yourself, you can:
- Use the provided
build-push-acr
binary tool. - Run a couple of
az cli
commands with local source code. - Build and publish the images yourself.
The first two approaches require ACR outbound access mentioned above and the build-push-acr
tool may need api.github.com
access. Details for using the build-push-acr
tool and the az cli
commands are provided below.
If building images yourself, use Docker Compose with each Dockerfile from the src
directories, push the resulting images to your ACR, and pass the paths to the deployer using the TesImageName
and TriggerServiceImageName
options.
The build-push-acr
tool has command-line help (--help
or -?
). It supports two build-type modes (CoA
is applicable) and two source code modes: github
(online release) or local source code (e.g. a clone of the official GitHub repos).
For online releases, only GitHub releases (e.g. 6.0.0) can be specified. The local source code option requires the directory containing the top-level .sln
file.
The subscription, resource-group, and registry arguments are the subscription guid, resource group name, and registry name of the ACR which will build both images needed for CoA and return the docker tag
value for the trigger-service and TES images (the tag is prefixed with "Image tag: " in case you are scripting this tool).
This page describes the feature of the Azure command-line tool that uses ACR to build and host images. For CoA, that tool will need to be invoked twice:
- az acr build --registry $ACR_NAME --image cromwellonazure/triggerservice:$TAG --file /path/to/source-root/src/Dockerfile-TriggerService /path/to/source-root/src
- az acr build --registry $ACR_NAME --image cromwellonazure/tes:$TAG --file /path/to/source-root/src/ga4gh-tes/src/Dockerfile-Tes /path/to/source-root/src/ga4gh-tes/src
Where /path/to/source-root
is the directory containing the top-level .sln
file, $TAG
is the chosen tag, and $ACR_NAME
is the name of the ACR.
The deployer tool provides new configuration options for the managed ACR approach. They are required when deploying unreleased builds of the source tree and are mutually exclusive:
- GitHubCommit: Tag, branch, short commit, or full commit value in the official repo. Because of the way GitHub currently works, full commit values should even in clones (on GitHub) of the original repo.
-
SolutionDir: Root of the cloned source repository (contains the
.sln
file).
To search, expand the Pages section above.