Creación del trabajo a partir del código fuente local con la CLI

Puede crear su trabajo directamente desde el código fuente en la estación de trabajo local con la CLI de IBM Cloud® Code Engine. Utilice el mandato job create para compilar una imagen desde el código fuente local y definir la configuración de su trabajo para hacer 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 la cuenta y, a continuación, crea el trabajo para hacer referencia a esta imagen compilada. Tenga en cuenta que solo puede especificar IBM Cloud Container Registry como destino para las compilaciones locales. Para este caso de ejemplo, solo debe proporcionar un nombre para el trabajo y la vía de acceso al código fuente local. Para ver una lista completa de opciones, consulte el mandato ibmcloud ce job 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 ver más ejemplos de patrones de archivos que se deben ignorar, consulta el repositorio « GitHub.gitignore ».

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

Antes de empezar

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 el trabajo myjob-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 IBM Cloud Container Registry en su cuenta. Si no tiene un espacio de nombres Container Registry existente, Code Engine crea automáticamente uno. Al añadir la opción --wait, especifica que el trabajo de creación debe esperar a que se complete la compilación de la imagen.

    ibmcloud ce job create --name myjob-local --build-source . --wait
    

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

    Salida de ejemplo

    Creating job 'myjob-local'...
    Packaging files to upload from source path '.'...
    Submitting build run 'myjob-local-run-220420-150457582'...
    Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-local'...
    Waiting for build run to complete...
    Build run status: 'Running'
    Build run completed successfully.
    Run 'ibmcloud ce buildrun get -n myjob-local-run-220420-150457582' to check the build run status.
    OK
    

    Dado que hemos especificado la opción « --wait », la salida del job create comando proporciona información sobre el progreso de la ejecución de la compilación antes de que se cree el trabajo.

    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 job create en este ejemplo. Para obtener más información sobre el mandato y sus opciones, consulte el mandato ibmcloud ce job create.

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

    El nombre del trabajo. Utilice un nombre que sea exclusivo dentro del proyecto. Este valor es obligatorio.

    • El nombre debe empezar y 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.
    --wait Especifica que se debe esperar a que se complete la compilación de la imagen antes de crear el trabajo.
  4. (opcional) Utilice el mandato job get para visualizar información sobre el trabajo, incluida la información sobre la compilación.

    ibmcloud ce job get --name myjob-local
    

    Salida de ejemplo

    [...]
    Name:          myjob-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
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-local
    Resource Allocation:
      CPU:     1
      Memory:  4G
    Registry Secrets:
      ce-auto-icr-private-us-south
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    Build Information:
      Build Run Name:     myjob-local-run-220420-150457582
      Build Type:         local
      Build Strategy:     dockerfile-medium
      Timeout:            600
      Source:             .
      Dockerfile:         Dockerfile
      Build Run Summary:  Succeeded
      Build Run Status:   Succeeded
      Build Run Reason:   All Steps have completed executing
      Run 'ibmcloud ce buildrun get -n myjob-local-run-220420-150457582' for details..
    [...]
    
  5. Ahora que se ha creado el trabajo y se ha compilado la imagen, ejecute el trabajo que hace referencia a la imagen compilada. Este mandato de ejemplo ejecuta la ejecución del trabajo de myjobrun-local basándose en la configuración del trabajo de myjob-local.

    ibmcloud ce jobrun submit --name myjobrun-local --job myjob-local
    
  6. (opcional) Vea los detalles de la ejecución del trabajo.

    ibmcloud ce jobrun get --name myjobrun-local
    

    Salida de ejemplo

    Getting jobrun 'myjobrun-local'...
    Getting instances of jobrun 'myjobrun-local'...
    Getting events of jobrun 'myjobrun-local'...
    Run 'ibmcloud ce jobrun events -n myjobrun-local' to get the system events of the job run instances.
    Run 'ibmcloud ce jobrun logs -f -n myjobrun-local' to follow the logs of the job run instances.
    OK
    Name:          myjobrun-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
    Job Ref:              myjob-local
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-local
    Resource Allocation:
      CPU:                1
      Ephemeral Storage:  400M
      Memory:             4G
    Registry Secrets:
      ce-auto-icr-private-us-south
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        JOP_ARRAY_SIZE Value:  1
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
      Completed:          2m40s
      Instance Statuses:
        Succeeded:  1
      Conditions:
        Type      Status  Last Probe  Last Transition
        Pending   True    2m44s       2m44s
        Running   True    2m40s       2m40s
        Complete  True    2m40s       2m40s
    Events:
      Type    Reason     Age                    Source                Messages
      Normal  Updated    2m41s (x3 over 2m45s)  batch-job-controller  Updated JobRun "myjobrun-local"
      Normal  Completed  2m41s                  batch-job-controller  JobRun completed successfully
    Instances:
      Name                Running  Status     Restarts  Age
      myjobrun-local-0-0  0/1      Succeeded  0         2m45s
    

Ahora que el trabajo se crea y se ejecuta desde el código fuente del repositorio, puede actualizar el trabajo para que se adapte a sus necesidades utilizando el mandato ibmcloud ce job update. Para obtener más información sobre la actualización de trabajos, consulte Actualización de un trabajo. Si desea actualizar el código fuente para utilizarlo con el trabajo, debe proporcionar la opción --build-source en el mandato job update.

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

Cuando el trabajo se crea desde el origen local o desde el código fuente de repositorio con 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 crear el trabajo, envíelo para ejecutarlo. Consulte Ejecución de un trabajo. Puede ejecutar el trabajo varias veces.

  • Después de ejecutar el trabajo, para ver los detalles del trabajo y las ejecuciones del trabajo, consulte Detalles de trabajo.

  • Ahora que se ha creado el trabajo, se recomienda que los trabajos estén controlados por sucesos. Con las suscripciones de sucesos, puede desencadenar los trabajos utilizando planificaciones periódicas o establecer el trabajo para que reaccione a sucesos como las cargas de archivos.

  • Puede actualizar el trabajo y su código referenciado de varias formas, independientemente de cómo haya creado o actualizado el trabajo con anterioridad.

    • Si dispones de una imagen de contenedor que cumpla con el estándar de la Open Container Initiative(OCI), solo tendrás que proporcionar una referencia a dicha imagen, que apunte a la ubicación de tu registro de contenedores, al crear (o actualizar) tu trabajo. Puedes crear (o actualizar) tu trabajo a partir de imágenes de un registro público o privado y, a continuación, acceder a la imagen a la que se hace referencia desde la ejecución de tu trabajo.

      Si ha creado el trabajo utilizando el mandato job 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 el trabajo para que apunte a una imagen de contenedor diferente, primero debe eliminar la asociación de la compilación del trabajo. Por ejemplo, ejecute ibmcloud ce job update -n JOB_NAME --build-clear. Después de eliminar la asociación de la compilación del trabajo, puede actualizar el trabajo 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 crear (o actualizar) el trabajo 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 Creación de un trabajo 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 crear (o actualizar) el trabajo y ejecutarlo.

    • 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 crear el trabajo 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 Creación del trabajo 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 crear (o actualizar) el trabajo y ejecutarlo.

    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 el trabajo. Una vez que la imagen ha madurado, puede actualizar el trabajo para que haga referencia a la imagen específica que desee. Puede repetir este proceso según sea necesario.

    Cuando ejecuta el trabajo actualizado, se utiliza la última versión de la imagen de contenedor referenciada para la ejecución del trabajo, a menos que se especifique una etiqueta para la imagen. Si se especifica una etiqueta para la imagen, se utiliza la imagen etiquetada para la ejecución del trabajo.

¿Desea ver más ejemplos de código? Echa un vistazo a Ejemplos para el repositorio « IBM Cloud Code Engine GitHub ».