Skip to content

Migrating implicit environments

With release 2.40.0 UbiOps is actively migrating to explicit environments, with dropping support for implicit environments completely in release 2.41.0. This means that when a package that contains dependency files is uploaded for a deployment, UbiOps will no longer detect it and build an implicit environment for the deployment.

To migrate your deployment packages follow the steps described in this page.

Migrate to custom environments with Client libraries

import os
import shutil

import ubiops

from ubiops.utils import wait_for_environment, wait_for_deployment_version


PROJECT_NAME = "my-project"
DEPLOYMENT_NAME = "my-deployment"
VERSION_NAME = "my-version"
ENVIRONMENT_NAME = "my-environment"
TAG_NAME = "v1"
DEPLOYMENT_DIRECTORY_PATH = "/path/to/deployment-directory"
BASE_ENVIRONMENT_NAME = "ubiops-ubuntu24-04-python3-13"

# Authenticate to the Core API with either environment variables or authorization parameters
# See for details: https://ubiops.com/docs/python_client_library/getting_started/#authenticate-to-the-core-api

core_api = ubiops.CoreApi()

shutil.make_archive(base_name='package.zip', format='zip', root_dir=DEPLOYMENT_DIRECTORY_PATH)

print("Create an environment")
core_api.environments_create(
    project_name=PROJECT_NAME, data={"name": ENVIRONMENT_NAME}
)

print("Create and build a tag")
core_api.environment_tags_create(
    project_name=PROJECT_NAME,
    environment_name=ENVIRONMENT_NAME,
    data={"name": TAG_NAME},
)
core_api.environment_tags_build(
    project_name=PROJECT_NAME,
    environment_name=ENVIRONMENT_NAME,
    tag_name=TAG_NAME,
    base_environment_name=BASE_ENVIRONMENT_NAME,
    file="package.zip",
)

print("\n\nWait for the environment to become ready")
wait_for_environment(
    client=core_api.api_client,
    project_name=PROJECT_NAME,
    environment_name=ENVIRONMENT_NAME,
    tag_name=TAG_NAME,
    stream_logs=True,
)

print("\n\nCreate a deployment version")
core_api.deployment_versions_create(
    project_name=PROJECT_NAME,
    deployment_name=DEPLOYMENT_NAME,
    data={
        "version": VERSION_NAME,
        "environment_name": ENVIRONMENT_NAME,
        "environment_tag": TAG_NAME,
        # Add any other settings needed
    }
)

print("\n\nUpload the package for the deployment version")
core_api.revisions_file_upload(
    project_name=PROJECT_NAME,
    deployment_name=DEPLOYMENT_NAME,
    version=VERSION_NAME,
    file="package.zip",
)

print("\n\nWait for the deployment version to become ready")
wait_for_deployment_version(
    client=core_api.api_client,
    project_name=PROJECT_NAME,
    deployment_name=DEPLOYMENT_NAME,
    version=VERSION_NAME,
    stream_logs=True,
)

Migrate to custom environments with CLI

DEPLOYMENT_NAME=my-deployment
VERSION_NAME=my-version
ENVIRONMENT_NAME=my-environment
TAG_NAME=v1
DEPLOYMENT_DIRECTORY_PATH=/path/to/deployment-directory
BASE_ENVIRONMENT_NAME=ubiops-ubuntu24-04-python3-13
UBIOPS_IGNORE_PATH=/path/to/ubiops-ignore-file

echo "Deploy the environment ${ENVIRONMENT_NAME}"
ubiops environments deploy ${ENVIRONMENT_NAME} \
  -base_env ${BASE_ENVIRONMENT_NAME} \
  --supports_request_format True \
  --directory ${DEPLOYMENT_DIRECTORY_PATH}

echo "Wait for the environment ${ENVIRONMENT_NAME} to be ready"
ubiops environments wait ${ENVIRONMENT_NAME} --stream_logs

echo "Deploy the deployment version ${VERSION_NAME} for deployment ${DEPLOYMENT_NAME}"
ubiops deployments deploy ${DEPLOYMENT_NAME} \
  --version_name ${VERSION_NAME} \
  --environment ${ENVIRONMENT_NAME} \
  --tag ${TAG_NAME} \
  --directory ${DEPLOYMENT_DIRECTORY_PATH} \
  --ignore_file ${UBIOPS_IGNORE_PATH} \
  # Add any other settings needed

echo "Wait for the deployment version ${VERSION_NAME} to be ready"
ubiops deployment_versions wait ${VERSION_NAME} \
  --deployment_name ${DEPLOYMENT_NAME} \
  --stream_logs