Despliegue de la aplicación desde el código fuente local con la CLI

Puede desplegar la aplicación directamente desde el código fuente en la estación de trabajo local con la CLI de IBM Cloud® Code Engine. Utilice el mandato app create para compilar una imagen desde el código fuente local y despliegue la aplicación para que haga referencia a esta imagen compilada.

Cuando envía una compilación que extrae código de un directorio local, el código fuente se empaqueta en un archivo de archivado. Code Engine carga automáticamente la imagen en un espacio de nombres de IBM Cloud® Container Registry en su cuenta y, a continuación, crea y despliega la aplicación para hacer referencia a esta imagen compilada. Tenga en cuenta que solo puede tener IBM Cloud Container Registry como destino para las compilaciones locales. La imagen de origen se crea en el mismo espacio de nombres que la imagen de compilación. Para este caso de ejemplo, solo debe proporcionar un nombre para la aplicación y la vía de acceso del código fuente local. Para ver una lista completa de opciones, consulte el mandato ibmcloud ce app create.

Para obtener información sobre los permisos necesarios para acceder a los registros de imágenes, consulte Configuración de autorizaciones para registros de imágenes.

Puede elegir ignorar determinados patrones de archivo del código fuente utilizando el archivo .ceignore, que se comporta de forma similar a un archivo .gitignore. Por ejemplo, las entradas de un archivo .ceignore para una aplicación node.js pueden incluir node_modules y .npm. Para más ejemplos de patrones de archivos a ignorar, consulte el repositorio GitHub.gitignore.

Se requiere IBM Cloud® Container Registry para este caso de ejemplo.

Antes de empezar

Antes de trabajar con el código fuente local, asegúrese de que el código fuente esté en una ubicación accesible en la estación de trabajo local.

Este ejemplo utiliza los ejemplos de https://github.com/IBM/CodeEngine; en concreto, el ejemplo de helloworld.

  1. Descargue el código fuente de ejemplo de https://github.com/IBM/CodeEngine en la estación de trabajo local con el mandato siguiente.

    git clone https://github.com/IBM/CodeEngine
    
  2. Vaya al directorio CodeEngine\helloworld.

  3. En el directorio CodeEngine\helloworld, cree y despliegue la aplicación myapp-local, que utiliza una imagen compilada a partir del código fuente de CodeEngine\helloworld en la estación de trabajo local. Este mandato compila y envía automáticamente la imagen a un espacio de nombres Container Registry en su cuenta. Si no tiene un espacio de nombres Container Registry existente, Code Engine crea automáticamente uno.

    ibmcloud ce application create --name myapp-local --build-source .
    

    . indica que el código fuente de compilación se encuentra en el directorio de trabajo actual.

    Salida de ejemplo

    Creating application 'myapp-local'...
    Packaging files to upload from source path '.'...
    Submitting build run 'myapp-local-run-220414-171750199'...
    Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/app-myapp-local:220414-2117-rdaga'...
    Waiting for build run to complete...
    Build run status: 'Running'
    Build run completed successfully.
    Run 'ibmcloud ce buildrun get -n myapp-local-run-220414-171750199' to check the build run status.
    Waiting for application 'myapp-local' to become ready.
    Configuration 'myapp-local' is waiting for a Revision to become ready.
    Ingress has not yet been reconciled.
    Waiting for load balancer to be ready.
    Run 'ibmcloud ce application get -n myapp-local' to check the application status.
    OK
    
    https://myapp-local.glxo4kabcde.us-south.codeengine.appdomain.cloud
    

    Observe la salida del application create Comando proporciona información sobre la progresión de la ejecución de la compilación antes de crear e implementar la aplicación.

    En este ejemplo, la imagen compilada se carga en el espacio de nombres ce--abcde-glxo4kabcde en Container Registry.

    En la tabla siguiente se resumen las opciones que se utilizan con el mandato app create en este ejemplo. Para obtener más información sobre el mandato y sus opciones, consulte el mandato ibmcloud ce app create.

    Descripción del mandato
    Opción Descripción
    --name

    El nombre de la aplicación. Utilice un nombre que sea exclusivo dentro del proyecto. Este valor es obligatorio.

    • El nombre debe empezar por una letra minúscula.
    • El nombre debe terminar con un carácter alfanumérico en minúsculas.
    • El nombre debe tener 63 caracteres o menos y puede contener letras, números y guiones (-).
    --build-source La vía de acceso al código fuente local.
  4. Utilice el mandato application get para visualizar información sobre la aplicación, incluida la información sobre la compilación.

    ibmcloud ce application get --name myapp-local
    

    Salida de ejemplo

    [...]
    Name:          myapp-local
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-04-14T16:10:11-04:00
    URL:                https://myapp-local.Sta.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myapp-local.glxo4kabcde.svc.cluster.local
    Console URL:        https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp-local/configuration
    Status Summary:  Application deployed successfully
    
    Environment Variables:    
        Type     Name             Value  
        Literal  CE_API_BASE_URL  https://api.private.us-south.codeengine.cloud.ibm.com
        Literal  CE_APP           myapp  
        Literal  CE_DOMAIN        us-south.codeengine.appdomain.cloud  
        Literal  CE_PROJECT_ID    abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
        Literal  CE_REGION        us-south  
        Literal  CE_SUBDOMAIN     abcdabcdab
    Image:                  private.us.icr.io/ce--abcde-glxo4kabcde/app-myapp-local:220414-2010-sqsoj
    Resource Allocation:
      CPU:                1
      Ephemeral Storage:  400M
      Memory:             4G
    Registry Secrets:
      ce-auto-icr-private-us-south
    
    Revisions:
      myapp-local-00001:
        Age:                23m
        Latest:             true
        Traffic:            100%
        Image:              private.us.icr.io/ce--abcde-glxo4kabcde/app-myapp-local:220414-2010-sqsoj (pinned to 86944c)  
        Running Instances:  0
    
    Runtime:
      Concurrency:    100
      Maximum Scale:  10
      Minimum Scale:  0
      Timeout:        300
    
    Build Information:
      Build Run Name:     myapp-local-run-220414-161009244
      Build Type:         git
      Build Strategy:     dockerfile-medium
      Timeout:            600
      Source:             https://github.com/IBM/CodeEngine
      Context Directory:  helloworld
      Dockerfile:         Dockerfile
    
      Build Run Summary:  Succeeded
      Build Run Status:   Succeeded
      Build Run Reason:   All Steps have completed executing
      Run 'ibmcloud ce buildrun get -n myapp-local-run-220414-161009244' for details.
    [...]
    

Ahora que la aplicación se crea y se despliega a partir del código fuente local, puede actualizarla para que se adapte a sus necesidades utilizando el mandato ibmcloud ce app update. Para obtener más información sobre la actualización de aplicaciones, consulte Actualización de la aplicación. Si desea actualizar el código fuente para utilizarlo con la aplicación, debe proporcionar la opción --build-source en el mandato application update.

En lugar de compilar la imagen desde el código fuente local y desplegar la aplicación con un solo mandato, puede elegir compilar primero desde el código fuente local antes de desplegar la aplicación. Consulte Creación de una configuración de compilación que extrae el origen de una estación de trabajo local.

Cuando la app se despliega desde el origen local o desde el código fuente de repositorio desde la CLI, la ejecución de compilación resultante no se basa en una configuración de compilación. Las ejecuciones de compilación que se completan finalmente se suprimen automáticamente. Las ejecuciones de compilación que no se basan en una configuración de compilación se suprimen después de 1 hora si la ejecución de compilación es satisfactoria. Si la ejecución de compilación no es satisfactoria, esta ejecución de compilación se suprime después de 24 horas. Sólo puede visualizar información sobre esta ejecución de compilación con la CLI. No puede ver esta ejecución de compilación en la consola.

Próximos pasos

Después de desplegar la aplicación, puede actualizar la aplicación desplegada y su código referenciado utilizando varias formas, independientemente de cómo haya creado o actualizado previamente la aplicación:

  • Si tienes una imagen de contenedor, según el estándar Open Container Initiative(OCI), entonces sólo necesitas proporcionar una referencia a la imagen, que apunte a la ubicación de tu registro de contenedores cuando despliegues tu aplicación. Puede desplegar la app con una imagen en un registro público o registro privado.

    Si ha creado la app utilizando el mandato app create y ha especificado la opción --build-source para crear la imagen de contenedor desde el origen local o de repositorio, y desea cambiar la app para que apunte a una imagen de contenedor diferente, primero debe eliminar la asociación de la compilación de la app. Por ejemplo, ejecute ibmcloud ce application update -n APP_NAME --build-clear. Después de eliminar la asociación de la compilación de la app, puede actualizar la app para que haga referencia a una imagen diferente.

  • Si está empezando con un código fuente que reside en un repositorio de Git, puede dejar que Code Engine se encargue de compilar la imagen desde el código fuente y desplegar la aplicación con una única operación. En este caso de ejemplo, Code Engine carga la imagen en IBM Cloud® Container Registry. Para obtener más información, consulte Despliegue de la aplicación a partir del código fuente del repositorio. Si desea tener más control sobre la compilación de la imagen, puede elegir compilar la imagen con Code Engine antes de desplegar la aplicación.

  • Si está empezando con un código fuente que reside en una estación de trabajo local, puede dejar que Code Engine se encargue de compilar la imagen desde el código fuente y desplegar la aplicación con un único mandato de CLI. En este caso de ejemplo, Code Engine carga la imagen en IBM Cloud® Container Registry. Para obtener más información, consulte Despliegue de la aplicación a partir del código fuente local con la CLI. Si desea tener más control sobre la compilación de la imagen, puede elegir compilar la imagen con Code Engine antes de desplegar la aplicación.

    Por ejemplo, puede dejar que Code Engine maneje la compilación del código fuente local mientras avanza en el desarrollo del código fuente para la aplicación. Una vez que la imagen ha madurado, puede actualizar la aplicación desplegada para que haga referencia a la imagen específica que desee. Puede repetir este proceso según sea necesario.

Cuando despliega la aplicación actualizada, se descarga y se despliega la última versión de la imagen de contenedor referenciada, a menos que se especifique una etiqueta para la imagen. Si se especifica una etiqueta para la imagen, se utiliza la imagen etiquetada para el despliegue.

¿Desea ver más ejemplos de código? Consulte los ejemplos de para IBM Cloud Code Engine GitHub.