Creación de un trabajo a partir del código fuente del repositorio

Puede crear su trabajo directamente a partir del código fuente que se encuentra en un repositorio de Git con la consola y la CLI de IBM Cloud® Code Engine. Averigüe qué ventajas están disponibles al crear una imagen con Code Engine.

Creación del trabajo a partir del código fuente del repositorio desde la consola

Puede crear su trabajo directamente a partir del código fuente con la consola.

Antes de empezar, planifique la compilación. También puede encontrar consejos para crear un Dockerfile. Cada vez que ejecuta el trabajo, se utiliza la versión más reciente de los artefactos de compilación dependientes, incluidos los paquetes de compilación y la imagen de contenedor, durante el proceso de compilación y se incluyen en la imagen de contenedor resultante.

Code Engine puede enviar (subir) automáticamente imágenes a los espacios de nombres de IBM Cloud® Container Registry en su cuenta e incluso crear un espacio de nombres. Para enviar imágenes a una cuenta de Container Registry distinta o a una cuenta privada de Docker Hub, consulte Acceder a registros de contenedor privado.

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.

  1. Abra la consola de Code Engine.
  2. Seleccione Vamos.
  3. Seleccione Trabajo.
  4. Especifique un nombre para el trabajo. Utilice un nombre para el trabajo que sea exclusivo dentro del proyecto.
  5. Seleccione un proyecto de la lista de proyectos disponibles. También puede crear uno nuevo. Tenga en cuenta que debe tener un proyecto seleccionado para crear un trabajo.
  6. Seleccione Código fuente.
  7. Pulse Especificar detalles de compilación.
  8. Seleccione un repositorio de origen, por ejemplo, https://github.com/IBM/CodeEngine. Como estamos utilizando un código fuente de ejemplo que no requiere credenciales, seleccione None para el acceso de repositorio de código. Opcionalmente, puede proporcionar un nombre de rama. Si no proporciona un nombre de rama y deja el campo vacío, Code Engine utiliza automáticamente la rama predeterminada del repositorio especificado. Pulse Siguiente.
  9. Seleccione una estrategia para la compilación y los recursos para la compilación. Para obtener más información sobre las opciones de compilación, consulte Planificación de una compilación. Pulse Siguiente.
  10. Proporcione información de registro sobre dónde almacenar la imagen de la salida de compilación. Seleccione una ubicación de registro del contenedor, como IBM Registry Dallas. Si el registro es privado, debe configurar un acceso al mismo.
  11. Seleccione un secreto de Registro existente o cree uno nuevo. Si está compilando la imagen en una instancia de IBM Cloud Container Registry que está en su cuenta, puede seleccionar Code Engine managed secret y dejar que Code Engine cree y gestione el secreto automáticamente.
  12. Seleccione un espacio de nombres, un nombre y una etiqueta para la imagen. Si está compilando la imagen en una instancia de IBM Cloud Container Registry que está en su cuenta, puede seleccionar un espacio de nombres existente o dejar que Code Engine cree y gestione el espacio de nombres automáticamente.
  13. Pulse Listo.
  14. Modifique los valores predeterminados para las variables de entorno o los valores de tiempo de ejecución. Para obtener más información, consulte Opciones para crear y ejecutar un trabajo.
  15. Pulse Crear.
  16. Después de enviar la ejecución de compilación, la imagen de contenedor compilada se envía a Container Registry y, a continuación, el trabajo puede hacer referencia a la imagen compilada. Cuando el trabajo esté listo, pulse Enviar trabajo para ejecutar el trabajo en función de la configuración actual.

Las ejecuciones de compilación que se completan finalmente se suprimen automáticamente. Cuando la ejecución de compilación se basa en la configuración de compilación, esta ejecución de compilación se suprime después de 3 horas 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 48 horas.

Ahora que ha creado y ejecutado el trabajo, puede ver detalles sobre la configuración del trabajo y las ejecuciones de trabajos desde la página de trabajo.

¿Necesita ayuda? Consulte Consejos sobre la resolución de problemas de compilaciones.

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

Puede crear su trabajo directamente a partir del código fuente del repositorio con la CLI. Utilice el mandato job create para compilar una imagen a partir del código fuente del repositorio de Git y definir la configuración del trabajo.

Antes de empezar

En este caso de ejemplo, Code Engine compila una imagen a partir del código fuente del repositorio de Git, carga automáticamente la imagen en el registro de contenedor y, a continuación, crea la configuración del trabajo para hacer referencia a esta imagen compilada con el mandato job create. Debe proporcionar solo un nombre para el trabajo y el URL al repositorio de Git si la imagen se va a localizar en una cuenta de IBM Cloud Container Registry. En este caso, Code Engine gestiona el espacio de nombres automáticamente. Sin embargo, si desea utilizar un registro de contenedores diferente, debe especificar la imagen y un secreto de registro para ese registro de contenedores. Utilice el mandato ibmcloud ce jobrun submit para ejecutar el trabajo que hace referencia a la imagen compilada. Para ver una lista completa de las opciones, consulte los mandatos ibmcloud ce job create y ibmcloud ce jobrun submit.

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.

  1. Utilice el mandato job create para crear el trabajo myjob-repo para hacer referencia a una imagen que se compila a partir del código fuente de compilación de https://github.com/IBM/CodeEngine. Este mandato compila automáticamente la imagen y la carga en un espacio de nombres de IBM Cloud® Container Registry en la cuenta, y las ejecuciones de este trabajo hacen referencia a esta imagen compilada. Al especificar la opción --build-context-dir, la compilación utiliza el código fuente en el directorio helloworld. Este mandato de ejemplo utiliza la estrategia dockerfile predeterminada y el tamaño de compilación de medium predeterminado. Como el nombre de rama del repositorio no se especifica con la opción --build-commit, Code Engine utiliza automáticamente la rama predeterminada del repositorio especificado. 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-repo --build-source https://github.com/IBM/CodeEngine --build-context-dir helloworld --wait
    

    Salida de ejemplo

    Creating job 'myjob-repo'...
    Submitting build run 'myjob-repo-run-220420-15590196'...
    Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo'...
    Waiting for build run to complete...
    Build run status: 'Running'
    Build run completed successfully.
    Run 'ibmcloud ce buildrun get -n myjob-repo-run-220420-15590196' to check the build run status.
    OK
    

    Como especificamos la opción --wait, la salida del comando job create proporciona información sobre la progresión 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 de ce--abcde-glxo4kabcde en IBM Cloud 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 El URL del repositorio Git que contiene el código fuente; por ejemplo, https://github.com/IBM/CodeEngine.
    --build-context-dir El directorio del repositorio que contiene el archivo de paquetes de compilación o el Dockerfile. Este valor es opcional.
    --wait Especifica que se debe esperar a que se complete la compilación de la imagen antes de crear el trabajo.
  2. (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-repo
    

    Salida de ejemplo

    [...]
    Name:          myjob-repo
    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-repo
    
    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-repo-run-220420-15590196
      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 myjob-repo-run-220420-15590196' for details.
    
  3. 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-repo basándose en la configuración del trabajo de myjob-repo.

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

    ibmcloud ce jobrun get --name myjobrun-repo
    

    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-repo
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo
    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:          90s
      Instance Statuses:
        Succeeded:  1
      Conditions:
        Type      Status  Last Probe  Last Transition
        Pending   True    101s        101s
        Running   True    91s         91s
        Complete  True    90s         90s
    
    Events:
      Type    Reason     Age                 Source                Messages
      Normal  Updated    91s (x4 over 102s)  batch-job-controller  Updated JobRun "myjobrun-repo"
      Normal  Completed  91s                 batch-job-controller  JobRun completed successfully
    
    Instances:
      Name               Running  Status     Restarts  Age
      myjobrun-repo-0-0  0/1      Succeeded  0         102s
    

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.

Cuando el trabajo se crea desde el código fuente del repositorio o desde origen local 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 tiene una imagen de contenedor, según el estándar Open Container Initiative(OCI), entonces sólo necesita proporcionar una referencia a la imagen, que apunte a la ubicación de su registro de contenedores cuando cree (o actualice) su trabajo. Puede crear (o actualizar) su trabajo a partir de imágenes en un registro público o privado y luego acceder a la imagen referenciada desde la ejecución de su 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 creación de la imagen, puede elegir crear 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? Consulte los ejemplos de para IBM Cloud Code Engine GitHub.