// Module included in the following assemblies: // // * cli_reference/developer_cli_odo/odo-architecture.adoc [id="odo-push-workflow_{context}"] = {odo-title} push workflow This section describes `{odo-title} push` workflow. {odo-title} push deploys user code on an {product-title} cluster with all the necessary {product-title} resources. . Creating resources + If not already created, `{odo-title}` push creates the following {product-title} resources: + * `DeploymentConfig` object: ** Two init containers are executed: `copy-supervisord` and `copy-files-to-volume`. The init containers copy files onto the `emptyDir` and the `PersistentVolume` type of volumes respectively. ** The application container starts. The first process in the application container is the `go-init` process with PID=1. ** `go-init` process starts the SupervisorD daemon. + [NOTE] ==== The user application code has not been copied into the application container yet, so the `SupervisorD` daemon does not execute the `run` script. ==== + * `Service` object * `Secret` objects * `PersistentVolumeClaim` object . Indexing files + * A file indexer indexes the files in the source code directory. The indexer traverses through the source code directories recursively and finds files which have been created, deleted, or renamed. * A file indexer maintains the indexed information in an {odo-title} index file inside the `.odo` directory. * If the {odo-title} index file is not present, it means that the file indexer is being executed for the first time, and creates a new {odo-title} index JSON file. The {odo-title} index JSON file contains a file map - the relative file paths of the traversed files and the absolute paths of the changed and deleted files. . Pushing code + Local code is copied into the application container, usually under `/tmp/src`. . Executing `assemble-and-restart` + On a successful copy of the source code, the `assemble-and-restart` script is executed inside the running application container.