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