Actualización de un trabajo

Puede realizar cambios en un trabajo definido y ejecutar el trabajo actualizado desde la consola o con la CLI. Los cambios en el trabajo pueden incluir la actualización de la imagen del contenedor de código, los argumentos o mandatos de código, los recursos de instancia de tiempo de ejecución o las variables de entorno.

Cada vez que se ejecuta el trabajo, 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.

Los trabajos por lotes enviados se ejecutan en paralelo, si es posible. Si el número o el tamaño de los trabajos enviados supera los límites de cuota configurados, como el número máximo de instancias en ejecución, Code Engine pone en cola los trabajos y los retardos que los ejecutan hasta que finalicen suficientes trabajos. Para obtener más información sobre cuotas y límites de los trabajos, incluida la memoria y la CPU, consulte Límites y cuotas de Code Engine.

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.

Actualización de un trabajo desde la consola

Cuando un trabajo está en estado preparado, puede actualizar el trabajo. Vamos a actualizar el trabajo myjob que creó anteriormente para cambiar la salida de saludo y variables de entorno mediante la actualización de una variable de entorno. Cuando se envía una solicitud a este trabajo de ejemplo « icr.io/codeengine/helloworld », el trabajo lee la variable de entorno « TARGET » y muestra « "Hello ${TARGET}!" ». Si esta variable de entorno está vacía, se devuelve "Hello World!". Para obtener más información sobre el código utilizado en este ejemplo, consulte helloworld.

  1. Vaya a la página de trabajo.

    1. En la página «Proyectos» de Code Engine, haz clic en el nombre de tu proyecto.
    2. Haz clic en « Trabajos » y, a continuación, en la pestaña « Trabajos ».
    3. Haz clic en el nombre del trabajo que quieras actualizar.
  2. En la pestaña Configuración > Variables de entorno, haz clic en Añadir variable de entorno. Añada una variable de entorno literal con el nombre de TARGET con un valor de Sunshine. El icr.io/codeengine/helloworld produce el mensaje, Hello <value_of_TARGET>!>.

  3. Haz clic en «Añadir» para añadir tu variable de entorno.

  4. Pulse Desplegar.

  5. Pulse Enviar trabajo.

  6. En el panel Enviar trabajo, esta vez cambie el valor de CPU por una de las opciones de CPU válidas para la memoria especificada. Observe que debe utilizar combinaciones de memoria y CPU válidas. Pulse Enviar trabajo de nuevo para ejecutar este trabajo. El sistema muestra el estado del trabajo en la página Detalles del trabajo. Observe el valor de CPU actualizado en la sección Configuration de los detalles del trabajo.

  7. Al visualizar los registros del trabajo desde la consola para este trabajo, la salida del trabajo actualizado es Hello Sunshine!.

Actualización de un trabajo con la CLI

Con la CLI, puede actualizar una configuración de trabajo existente o especificar los cambios en una nueva ejecución de trabajo.

Actualización de una configuración de trabajo con la CLI

uede actualizar una configuración de trabajo existente con el mandato ibmcloud ce job update.

  1. Utilice el mandato job update para actualizar el trabajo myjob para que haga referencia a una imagen distinta.

    ibmcloud ce job update --name myjob --image icr.io/codeengine/testjob
    

    Ejecute el mandato ibmcloud ce job get -n myjob para visualizar detalles del trabajo actualizado.

    Salida de ejemplo

    Name:          myjob
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-04T11:56:22-04:00
    Last Job Run:
        Name:     myjob-jobrun-abcde
        Age:      32d
        Created:  2021-08-06T13:50:02-04:00
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:     1
        Memory:  4G
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    [...]
    
  2. Ejecute el mandato ibmcloud ce jobrun submit para ejecutar un trabajo que haga referencia a esta configuración de trabajo actualizada. Para el mandato jobrun submit, utilice la opción --job para que haga referencia a una configuración de trabajo definida. Aunque la opción --name no es necesaria si se especifica la opción --job, el siguiente mandato de ejemplo especifica la opción --name para proporcionar un nombre para esta ejecución de trabajo.

    ibmcloud ce jobrun submit --name myjobrun1 --job myjob
    
  3. Ejecute ibmcloud ce jobrun get -n myjobrun1 para ver los detalles de esta ejecución de trabajo. Tenga en cuenta que la imagen referenciada es icr.io/codeengine/testjob, que está basada en la configuración de trabajo actualizada.

    Salida de ejemplo

    Getting jobrun 'myjobrun1'...
    Getting instances of jobrun 'myjobrun1'...
    Getting events of jobrun 'myjobrun1'...
    [...]
    Name:          myjobrun1
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-15T11:56:22-04:00
    Job Ref:              myjob
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        JOP_ARRAY_SIZE Value:  1
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          11s
        Instance Statuses:
            Succeeded:  1
        Conditions:
            Type      Status  Last Probe  Last Transition
        Pending   True    15s         15s
        Running   True    11s         11s
        Complete  True    11s         11s
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    16s (x3 over 20s)  batch-job-controller  Updated JobRun "myjobrun1"
        Normal  Completed  16s                batch-job-controller  JobRun completed successfully
    Instances:
        Name           Running  Status     Restarts  Age
        myjobrun1-0-0  0/1      Succeeded  0         20s
    

Actualización de una ejecución de trabajo con la CLI

Puede especificar cambios para una ejecución de trabajo con el mandato ibmcloud ce jobrun resubmit. El mandato jobrun submit vuelve a enviar una ejecución de trabajo que hace referencia a una ejecución de trabajo anterior.

  1. Utilice el mandato jobrun resubmit para volver a enviar la ejecución del trabajo myjobrun1 y cambiar los índices de matriz de 0 a 1-4. Aunque la opción --name no es necesaria para el mandato jobrun resubmit, el siguiente mandato de ejemplo especifica la opción --name para proporcionar un nombre para esta ejecución de trabajo.

    ibmcloud ce jobrun resubmit -jobrun myjobrun1 --array-indices "1-4" --name myjobrunresubmit
    
  2. Ejecute el mandato ibmcloud ce jobrun get -n myjobrunresubmit para visualizar detalles de la ejecución de trabajo actualizada. Tenga en cuenta que el valor de los índices de matriz se actualiza para esta ejecución de trabajo.

    Salida de ejemplo

    Getting jobrun 'myjobrunresubmit'...
    Getting instances of jobrun 'myjobrunresubmit'...
    Getting events of jobrun 'myjobrunresubmit'...
    [...]
    Name:          myjobrunresubmit2
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-04T11:56:22-04:00
    Job Ref:              myjob
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         1-4
        Array Size:            4
        JOP_ARRAY_SIZE Value:  4
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          34s
        Instance Statuses:
            Succeeded:  4
        Conditions:
            Type      Status  Last Probe  Last Transition
        Pending   True    38s         38s
        Running   True    36s         36s
        Complete  True    34s         34s
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    36s (x7 over 40s)  batch-job-controller  Updated JobRun "myjobrunresubmit"
        Normal  Completed  36s                batch-job-controller  JobRun completed successfully
    Instances:
        Name                  Running  Status     Restarts  Age
        myjobrunresubmit-1-0  0/1      Succeeded  0         40s
        myjobrunresubmit-2-0  0/1      Succeeded  0         40s
        myjobrunresubmit-3-0  0/1      Succeeded  0         40s
        myjobrunresubmit-4-0  0/1      Succeeded  0         40s
    

Las ejecuciones de trabajo que se envían (o reenvían) con la CLI que no hacen referencia a una configuración de trabajo definida no se pueden visualizar desde la consola.