Compilación de una imagen de contenedor con mandatos de compilación autónomos (CLI)

Cuando su código existe como fuente en un archivo local o en un repositorio Git, Code Engine le ofrece opciones para construir su código como una imagen de contenedor, según el estándar Open Container Initiative(OCI). Con la CLI de Code Engine, puede crear una imagen de contenedor con un solo mandato.

Code Engine ofrece la flexibilidad necesaria para manejar el proceso de compilación siempre que vaya a desplegar la aplicación desde el código fuente del repositorio, desplegar la aplicación desde el código fuente local con la CLI, crear un trabajo a partir del código fuente del repositorio o crear un trabajo a partir del código fuente local con la CLI.

Sin embargo, si desea tener más control sobre la compilación de la imagen de contenedor, Code Engine le ofrece la flexibilidad necesaria para crear la imagen de contenedor utilizando una de las opciones siguientes:

  • Utilice un único mandato de CLI, buildrun submit, para ejecutar una ejecución de compilación. La ventaja de esta opción es que puede obtener la compilación con un único mandato de CLI; sin embargo, la configuración de la compilación no se conserva.
  • Defina una configuración de compilación desde la que pueda ejecutar varias ejecuciones de compilación. Consulte Compilación de una imagen de contenedor utilizando una configuración de compilación.

Cuando ha completado la compilación y la imagen existe, puede desplegar la imagen del contenedor como una aplicación o crear un trabajo que haga referencia a su imagen.

Vamos a aprender a compilar la imagen de contenedor con un solo mandato, sin hacer referencia a una configuración de compilación. En este caso de ejemplo, IBM Cloud® Code Engine extrae el código fuente de un repositorio de Git o de un directorio local, lo compila y, a continuación, envía (sube) la imagen del contenedor a un registro. Puede elegir repositorios y registros públicos o privados. Puede optar por especificar los detalles del registro con un secreto de registro para su salida de compilación con acceso proporcionado por el usuario. O bien, puede dejar que Code Engine se encargue de compilar la imagen automáticamente a partir de su código fuente y de almacenarla en IBM Cloud Container Registry con acceso automático.

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 .gitignoreGitHub.

Tenga en cuenta los puntos siguientes antes de compilar la imagen de contenedor:

  • Antes de empezar a crear imágenes, revise la información de planificación. También deberá verificar que puede acceder al registro. Consulte Configuración de autorizaciones para registros de contenedores.

  • Si compila varias versiones de la misma imagen de contenedor, la última versión de la imagen de contenedor se descarga y se utiliza cuando ejecuta el trabajo o despliega la aplicación, a menos que se especifique una etiqueta para la imagen. Si se especifica una etiqueta para la imagen, la imagen etiquetada se utiliza para la aplicación o el trabajo.

  • Las ejecuciones de compilación enviadas con la CLI que no hacen referencia a una configuración de compilación definida también se pueden ver desde la consola. En la página del proyecto, pulse Compilaciones de imagen para ver la lista de compilaciones de imagen y ejecuciones de compilación. Con la CLI, utilice el mandato ibmcloud ce buildrun list para ver una lista de todas las ejecuciones de compilación en un proyecto.

  • Code Engine tiene cuotas para las ejecuciones de compilación dentro de un proyecto. Para obtener más información sobre los límites de Code Engine, consulte Límites y cuotas de Code Engine.

Las ejecuciones de compilación que se completan finalmente se suprimen automáticamente. Cuando ejecuta una ejecución de compilación con un único mandato de CLI de forma que no se basa en una configuración de compilación, esta ejecución de compilación se suprime 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.

Ejecución de una única compilación que extrae el código fuente del repositorio público con la CLI

Si el código fuente está ubicado en un repositorio público y desea utilizar un único mandato para compilar y generar una imagen de contenedor, utilice el mandato buildrun submit para crear la imagen de contenedor sin crear una configuración de compilación reutilizable.

Para la salida de compilación, puede elegir el acceso automático y dejar que Code Engine se encargue de compilar la imagen automáticamente a partir del código fuente y de almacenarla en IBM Cloud Container Registry. En este caso, no es necesario especificar un secreto de registro ni la ubicación del registro de imágenes. O bien, puede elegir el acceso proporcionado por el usuario y especificar los detalles del registro junto con un secreto de registro para acceder a su imagen creada en el registro.

Para obtener una lista completa de las opciones para ejecutar una única compilación, consulte el mandato ibmcloud ce buildrun submit.

Ejecución de una única compilación con la CLI (con código fuente de repositorio público y acceso automático al registro)

En este caso de ejemplo de acceso automático, Code Engine compila una imagen a partir del código fuente del repositorio de Git público y la carga en IBM Cloud Container Registry con acceso automático utilizando las opciones de compilación con el mandato buildrun submit. En este caso, no es necesario especificar un secreto de registro o la ubicación del registro de imágenes.

Consulte Configuración de autorizaciones para registros de imágenes para obtener más información sobre cómo establecer los permisos necesarios para que Code Engine acceda automáticamente a estas imágenes en Container Registry.

Antes de empezar

  1. Ejecute una compilación para crear una imagen a partir de un repositorio de Git público y deje que Code Engine almacene automáticamente la imagen y acceda a ella. Por ejemplo, el siguiente mandato de buildrun submit ejecuta una ejecución de compilación denominada helloworld-buildrun que se compila a partir del código fuente en el repositorio de Git público https://github.com/IBM/CodeEngine.

    ibmcloud ce buildrun submit --name helloworld-buildrun --source https://github.com/IBM/CodeEngine --context-dir /hello
    
    • En este ejemplo, el mandato 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 --commit, Code Engine utiliza automáticamente la rama predeterminada del repositorio especificado, que es main para este repositorio de Git.
    • Al no especificar la ubicación del registro de imágenes o un secreto de registro, Code Engine empuja la salida de construcción a IBM Cloud Container Registry con acceso automático.
    • Code Engine determina automáticamente si el código fuente reside en un repositorio o en una estación de trabajo local, basándose en el valor de la opción --source.

    Salida de ejemplo

    Submitting build run 'helloworld-buildrun'...
    Creating image 'private.us.icr.io/ce--12ce3-defg4h5ij6d/buildrun-helloworld-buildrun'...
    Run 'ibmcloud ce buildrun get -n helloworld-buildrun' to check the build run status.
    OK
    

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

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

    El nombre de la ejecución de compilación. Utilice un nombre que sea exclusivo dentro del proyecto.

    • El nombre debe empezar y terminar con una letra minúscula.
    • El nombre debe tener 63 caracteres o menos y puede contener caracteres alfanuméricos en minúsculas y guiones (-).
    --source El URL del repositorio de Git o la vía de acceso al origen local que contiene el código fuente, por ejemplo, https://github.com/IBM/CodeEngine.
    --context-dir El directorio del repositorio que contiene el archivo de paquetes de compilación o el Dockerfile. Especifique este valor si el archivo de paquetes de compilación o el archivo Dockerfile se encuentra en un subdirectorio.
  2. Utilice el mandato buildrun get para comprobar el estado de la ejecución de la compilación.

    ibmcloud ce buildrun get -n helloworld-buildrun
    

    Salida de ejemplo

    Observe el nombre generado para la imagen y que el nombre del secreto de registro creado automáticamente tiene el formato ce-auto-icr-private-<region>.

    Getting build 'helloworld-buildrun'
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'ibmcloud ce buildrun events -n helloworld-buildrun' to get the system events of the build run.
    Run 'ibmcloud ce buildrun logs -f -n helloworld-buildrun' to follow the logs of the build run.
    OK
    
    Name:          helloworld-buildrun  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-07T15:30:46-04:00  
    Build Type:    git
    
    Summary:       Succeeded
    Status:        Succeeded
    Reason:        All Steps have completed executing
    Source:
        Commit Branch:  main
        Commit SHA:     946dd18f6e5a5474336786bc28d7dda93aec49c1
        Commit Author:  COMMIT_AUTHOR
    Image Digest:  sha256:ba3c445a27238040e102c083f76ad8922effcc3a7c4dc97b8472e626d87c11a2
    
    Image:              private.us.icr.io/ce--12ce3-defg4h5ij6d/buildrun-helloworld-buildrun
    Registry Secret:    ce-auto-icr-private-us-south
    Build Strategy:     dockerfile-medium
    Timeout:            10m0s
    Source:             https://github.com/IBM/CodeEngine
    Commit:             main
    Context Directory:  /hello
    Dockerfile:         Dockerfile
    

Ejecución de una única compilación con la CLI (con código fuente de repositorio público y acceso proporcionado por el usuario al registro)

En este caso de ejemplo de acceso proporcionado por el usuario, Code Engine compila una imagen a partir del código fuente de repositorio de Git público y, a continuación, la carga en el registro de contenedor con el acceso de registro que proporciona con un único mandato de compilación.

Antes de empezar

  1. Ejecute una compilación para crear una imagen a partir de un repositorio Git público y especifique la ubicación del registro de imágenes para la salida de la compilación con un secreto de registro. Por ejemplo, el siguiente mandato buildrun submit ejecuta una ejecución de compilación denominada helloworld-buildrun2 que se compila desde el repositorio público Git https://github.com/IBM/CodeEngine y almacena la imagen en el registro de us.icr.io/mynamespace/codeengine-helloworld utilizando el secreto de registro de myregistry para acceder a este registro.

    ibmcloud ce buildrun submit --name helloworld-buildrun2 --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source https://github.com/IBM/CodeEngine --context-dir /hello
    
    • En este ejemplo, el mandato 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 --commit, Code Engine utiliza automáticamente la rama predeterminada del repositorio especificado, que es main para este repositorio de Git.
    • Si utiliza la opción --strategy con el valor dockerfile, asegúrese de que la opción --dockerfile se ha establecido correctamente con el nombre del dockerfile. El valor predeterminado para la opción --strategy es Dockerfile.
    • Code Engine determina automáticamente si el código fuente reside en un repositorio o en una estación de trabajo local, basándose en el valor de la opción --source.

    Salida de ejemplo

    Submitting build run 'helloworld-buildrun2'...
    Creating image 'us.icr.io/mynamespace/codeengine-helloworld'...
    Run 'ibmcloud ce buildrun get -n helloworld-buildrun2' to check the build run status.
    OK
    

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

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

    El nombre de la ejecución de compilación. Utilice un nombre que sea exclusivo dentro del proyecto. Este valor es necesario.

    • El nombre debe empezar y terminar con una letra minúscula.
    • El nombre debe tener 63 caracteres o menos y puede contener caracteres alfanuméricos en minúsculas y guiones (-).
    --image La ubicación del registro de imágenes. El formato de la ubicación debe ser REGISTRY/NAMESPACE/REPOSITORY o REGISTRY/NAMESPACE/REPOSITORY:TAG, donde TAG es opcional. Si no se especifica TAG, el valor predeterminado es latest.
    --registry-secret El secreto de registro que se utiliza para acceder al registro cuando se crea la imagen del contenedor. Ejecute el mandato secret create --format registry para crear un secreto de registro. El secreto de registro se utiliza para autenticarse con un registro privado.
    --source El URL del repositorio de Git o la vía de acceso al origen local que contiene el código fuente, por ejemplo, https://github.com/IBM/CodeEngine.
    --context-dir El directorio del repositorio que contiene el archivo de paquetes de compilación o el Dockerfile. Especifique este valor si el archivo de paquetes de compilación o el archivo Dockerfile se encuentra en un subdirectorio.
  2. Utilice el mandato buildrun get para comprobar el estado de la ejecución de la compilación.

    ibmcloud ce buildrun get --name helloworld-buildrun2
    

    Salida de ejemplo

    Getting build run 'helloworld-buildrun2'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun events -n helloworld-buildrun2' to get the system events of the build run.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun logs -f -n helloworld-buildrun2' to follow the logs of the build run.
    OK
    
    Name:          helloworld-buildrun2  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-07T15:57:43-04:00
    Build Type:    git
    
    Summary:       Succeeded
    Status:        Succeeded
    Reason:        All Steps have completed executing
    Source:
        Commit Branch:  main
        Commit SHA:     946dd18f6e5a5474336786bc28d7dda93aec49c1
        Commit Author:  COMMIT_AUTHOR
    Image Digest:  sha256:6312ee613efa5bec7baa20c47f607e7f15473947d5675fd7384491bee8023afc
    
    Image:              us.icr.io/mynamespace/codeengine-helloworld2
    Registry Secret:    myregistry
    Build Strategy:     dockerfile-medium
    Timeout:            10m0s
    Source:             https://github.com/IBM/CodeEngine
    Context Directory:  /hello
    Dockerfile:         Dockerfile
    

Si recibe un error de validación del mandato, compruebe que su secreto existe. Si hace referencia a un secreto de registro (--registry-secret) para la imagen y el secreto no existe, consulte Acceso a registros de contenedor. Para obtener más información sobre las compilaciones, consulte las sugerencias sobre resolución de problemas.

Ejecución de una única compilación que extrae el código fuente del repositorio privado con la CLI

Si el código fuente está ubicado en un repositorio privado y desea utilizar un único mandato para compilar y generar una imagen de contenedor, utilice el mandato buildrun submit para crear la imagen de contenedor sin crear una configuración de compilación reutilizable.

Para la salida de compilación, puede elegir el acceso automático y dejar que Code Engine se encargue de compilar la imagen automáticamente a partir del código fuente y de almacenarla en IBM Cloud Container Registry. En este caso, no es necesario especificar un secreto de registro ni la ubicación del registro de imágenes. O bien, puede elegir el acceso proporcionado por el usuario y especificar los detalles del registro junto con un secreto de registro para acceder a su imagen creada en el registro.

Para obtener una lista completa de las opciones para ejecutar una única compilación, consulte el mandato ibmcloud ce buildrun submit.

Ejecución de una única compilación con la CLI (con código fuente de repositorio privado y acceso automático al registro)

En este caso de ejemplo de acceso automático, Code Engine compila una imagen a partir del código fuente del repositorio privado y la carga en IBM Cloud Container Registry con acceso automático utilizando las opciones de compilación con el mandato buildrun submit. En este caso, no es necesario especificar un secreto de registro o la ubicación del registro de imágenes.

Consulte Configuración de autorizaciones para registros de imágenes para obtener más información sobre cómo establecer los permisos necesarios para que Code Engine acceda automáticamente a estas imágenes en Container Registry.

Antes de empezar

  1. Ejecute una compilación para crear una imagen a partir de un repositorio privado y deje que Code Engine almacene automáticamente la imagen y acceda a ella. Por ejemplo, el siguiente mandato de buildrun submit ejecuta una ejecución de compilación denominada helloworld-buildrun-private que se compila a partir del repositorio de Git privado https://github.com/myprivaterepo/builds.

    ibmcloud ce buildrun submit --name helloworld-buildrun-private --source git@github.com:myprivaterepo/builds.git --context-dir /hello --strategy buildpacks --git-repo-secret myrepossh
    
    • Este mandato de ejemplo utiliza la estrategia buildpacks y el tamaño de compilación de medium.
    • Al no especificar la ubicación del registro de imágenes o un secreto de registro, Code Engine empuja la salida de construcción a IBM Cloud Container Registry con acceso automático.
    • Dado que el código fuente en el repositorio Git especificado es privado, el acceso requiere un secreto SSH. Un secreto SSH también se utiliza como un secreto de acceso al repositorio Git. Como resultado, --source que especifique debe utilizar el protocolo SSH, como por ejemplo git@github.com:myprivaterepo/builds.git. El valor de --source no debe utilizar el formato http o https.
    • Como el nombre de rama del repositorio no se especifica con la opción --commit, Code Engine utiliza automáticamente la rama predeterminada del repositorio especificado.
    • Code Engine determina automáticamente si el código fuente reside en un repositorio o en una estación de trabajo local, basándose en el valor de la opción --source.

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

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

    El nombre de la ejecución de compilación. Utilice un nombre que sea exclusivo dentro del proyecto. Este valor es necesario.

    • El nombre debe empezar y terminar con una letra minúscula.
    • El nombre debe tener 63 caracteres o menos y puede contener caracteres alfanuméricos en minúsculas y guiones (-).
    --source El URL del repositorio de Git o la vía de acceso al origen local que contiene el código fuente, por ejemplo, git@github.com:myprivaterepo/builds.git.
    --context-dir El directorio del repositorio que contiene el archivo de paquetes de compilación o el Dockerfile. Especifique este valor si el archivo de paquetes de compilación o el archivo Dockerfile se encuentra en un subdirectorio.
    --strategy La estrategia que se va a utilizar para compilar la imagen. Los valores válidos son dockerfile y buildpacks.
    --git-repo-secret El nombre del secreto SSH, que contiene las credenciales para acceder al repositorio privado que contiene el código fuente para crear la imagen de contenedor. Ejecute el mandato secret create --ssh para crear este secreto. Un secreto SSH también se utiliza como un secreto de acceso al repositorio Git.
  2. Utilice el mandato buildrun get para comprobar el estado de la ejecución de la compilación.

    ibmcloud ce buildrun get --name helloworld-buildrun-private
    

    Salida de ejemplo

    Getting build run 'helloworld-buildrun-private'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'ibmcloud ce buildrun events -n helloworld-buildrun-private' to get the system events of the build run.
    Run 'ibmcloud ce buildrun logs -f -n helloworld-buildrun-private' to follow the logs of the build run.
    OK
    
    Name:          helloworld-buildrun-private  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-08T06:02:36-05:00  
    Build Type:    git  
    
    Summary:       Succeeded  
    Status:        Succeeded  
    Reason:        All Steps have completed executing   
    Source:          
        Commit Branch:  main  
        Commit SHA:     946dd18f6e5a5474336786bc28d7dda93aec49c1  
        Commit Author:  COMMIT_AUTHOR  
    Image Digest:  sha256:39c4a87bc43102c2ee88562072c57c135b8dcc5cc4a1104e1d782fe3acc5d5b6  
    Image:              private.us.icr.io/ce--e97a8-odof2whblw5/build-helloworld-buildrun-private
    Registry Secret:    ce-auto-icr-private-us-south  
    Build Strategy:     buildpacks-v3-medium
    Timeout:            10m0s
    Source:             git@github.com:myprivaterepo/builds.git  
    Context Directory:  /hello  
    Repo Secret:        myrepossh
    

Ejecución de una única compilación con la CLI (con código fuente de repositorio privado y acceso a registro proporcionado por el usuario al registro)

En este caso de ejemplo de acceso proporcionado por el usuario, Code Engine compila una imagen a partir del código fuente de repositorio privado con un secreto de repositorio de Git que proporciona y, a continuación, la carga en el registro de contenedor con el acceso de registro que proporciona con un único mandato de compilación.

Antes de empezar

  1. Ejecute una compilación para crear una imagen a partir de un repositorio privado y especifique la ubicación del registro de imágenes para la salida de la compilación con un secreto de registro. El siguiente mandato buildrun submit de ejemplo ejecuta una ejecución de compilación denominada helloworld-buildrun-private2 que se compila desde el repositorio privado Git https://github.com/myprivaterepo/builds y almacena la imagen en us.icr.io/mynamespace/codeengine-helloworld utilizando el secreto de registro myregistry para acceder a este registro.

    ibmcloud ce buildrun submit --name helloworld-buildrun-private2 --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source git@github.com:myprivaterepo/builds.git --context-dir /hello --strategy buildpacks --git-repo-secret myrepossh
    
    • Este mandato de ejemplo utiliza la estrategia buildpacks y el tamaño de compilación de medium predeterminado.
    • Dado que el repositorio Git proporcionado es privado, el acceso requiere un secreto SSH. Un secreto SSH también se utiliza como un secreto de acceso al repositorio Git. Como resultado, --source que especifique debe utilizar el protocolo SSH, como por ejemplo git@github.com:myprivaterepo/builds.git. El valor de --source no debe utilizar el formato http o https.
    • Como el nombre de rama del repositorio no se especifica con la opción --commit, Code Engine utiliza automáticamente la rama predeterminada del repositorio especificado.
    • Code Engine determina automáticamente si el código fuente reside en un repositorio o en una estación de trabajo local, basándose en el valor de la opción --source.

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

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

    El nombre de la ejecución de compilación. Utilice un nombre que sea exclusivo dentro del proyecto. Este valor es necesario.

    • El nombre debe empezar y terminar con una letra minúscula.
    • El nombre debe tener 63 caracteres o menos y puede contener caracteres alfanuméricos en minúsculas y guiones (-).
    --image La ubicación del registro de imágenes. El formato de la ubicación debe ser REGISTRY/NAMESPACE/REPOSITORY o REGISTRY/NAMESPACE/REPOSITORY:TAG, donde TAG es opcional. Si no se especifica TAG, el valor predeterminado es latest.
    --registry-secret El secreto de registro que se utiliza para acceder al registro cuando se crea la imagen del contenedor. Ejecute el mandato secret create --format registry para crear un secreto de registro. El secreto de registro se utiliza para autenticarse con un registro privado.
    --source El URL del repositorio de Git o la vía de acceso al origen local que contiene el código fuente, por ejemplo, git@github.com:myprivaterepo/builds.git.
    --context-dir El directorio del repositorio que contiene el archivo de paquetes de compilación o el Dockerfile. Especifique este valor si el archivo de paquetes de compilación o el archivo Dockerfile se encuentra en un subdirectorio.
    --strategy La estrategia que se va a utilizar para compilar la imagen. Los valores válidos son dockerfile y buildpacks.
    --git-repo-secret El nombre del secreto SSH, que contiene las credenciales para acceder al repositorio privado que contiene el código fuente para crear la imagen de contenedor. Ejecute el mandato secret create --ssh para crear este secreto. Un secreto SSH también se utiliza como un secreto de acceso al repositorio Git.
  2. Utilice el mandato buildrun get para comprobar el estado de la ejecución de la compilación.

    ibmcloud ce buildrun get --name helloworld-buildrun-private2
    

    Salida de ejemplo

    Getting build run 'helloworld-buildrun-private2'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'ibmcloud ce buildrun events -n helloworld-buildrun-private2' to get the system events of the build run.
    Run 'ibmcloud ce buildrun logs -f -n helloworld-buildrun-private2' to follow the logs of the build run.
    OK
    
    Name:          helloworld-buildrun-private2  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d10h
    Created:       2022-06-08T06:11:05-05:00  
    Build Type:    git  
    
    Summary:       Succeeded  
    Status:        Succeeded  
    Reason:        All Steps have completed executing  
    Source:          
        Commit Branch:  main  
        Commit SHA:     946dd18f6e5a5474336786bc28d7dda93aec49c1  
        Commit Author:  COMMIT_AUTHOR  
    Image Digest:  sha256:39c4a87bc43102c2ee88562072c57c135b8dcc5cc4a1104e1d782fe3acc5d5b6  
    
    Image:              us.icr.io/mynamespace/codeengine-helloworld  
    Registry Secret:    myregistry  
    Build Strategy:     buildpacks-v3-medium  
    Timeout:            10m0s  
    Source:             git@github.com:myprivaterepo/builds.git  
    Context Directory:  /hello  
    Repo Secret:        myrepossh
    

Ejecución de una única compilación que extrae el código fuente de un directorio local

Si el código fuente está en la estación de trabajo local y desea utilizar un único mandato para compilar y generar una imagen de contenedor, utilice el mandato buildrun submit para crear la imagen de contenedor sin crear una configuración de compilación reutilizable.

Para la salida de compilación, puede elegir el acceso automático y dejar que Code Engine se encargue de compilar la imagen automáticamente a partir del código fuente y de almacenarla en IBM Cloud Container Registry. En este caso, no es necesario especificar un secreto de registro ni la ubicación del registro de imágenes. O bien, puede elegir el acceso proporcionado por el usuario y especificar los detalles del registro junto con un secreto de registro para acceder a su imagen creada en el registro.

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 y se carga en la instancia de IBM Cloud Container Registry. 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.

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 .gitignoreGitHub.

Para obtener una lista completa de las opciones para ejecutar una única compilación, consulte el mandato ibmcloud ce buildrun submit.

Ejecución de una única compilación con la CLI (con el código fuente local y el acceso automático al registro)

En este caso de ejemplo de acceso automático, Code Engine compila una imagen a partir del código fuente local y la carga automáticamente en IBM Cloud Container Registry con acceso automático utilizando las opciones de compilación con el mandato buildrun submit.

Consulte Configuración de autorizaciones para registros de imágenes para obtener más información sobre cómo establecer los permisos necesarios para que Code Engine acceda automáticamente a estas imágenes en Container Registry. En este caso, no es necesario especificar un secreto de registro o la ubicación del registro de imágenes.

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, ejecute una compilación para compilar una imagen a partir del código fuente de helloworld en la estación de trabajo local y deje que Code Engine almacene automáticamente la imagen y acceda a ella. 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. Por ejemplo, el siguiente mandato buildrun submit ejecuta una ejecución de compilación denominada buildrun-local-dockerfile que se crea a partir del código fuente local.

    ibmcloud ce buildrun submit --name buildrun-local-dockerfile --source .
    

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

    • Este mandato de ejemplo utiliza la estrategia dockerfile predeterminada y el tamaño de compilación de medium predeterminado.
    • Al no especificar la ubicación del registro de imágenes o un secreto de registro, Code Engine empuja la salida de construcción a IBM Cloud Container Registry con acceso automático.
    • Code Engine determina automáticamente si el código fuente reside en un repositorio o en una estación de trabajo local, basándose en el valor de la opción --source.

    Salida de ejemplo

    Packaging files to upload from source path '.'...
    Submitting build run 'buildrun-local-dockerfile'...
    Creating image 'private.us.icr.io/ce--27fe9-glxo4k7nj7d/buildrun-buildrun-local-dockerfile'...
    Run 'ibmcloud ce buildrun get -n buildrun-local-dockerfile' to check the build run status.
    OK
    

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

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

    El nombre de la ejecución de compilación. Utilice un nombre que sea exclusivo dentro del proyecto. Este valor es necesario.

    • El nombre debe empezar y terminar con una letra minúscula.
    • El nombre debe tener 63 caracteres o menos y puede contener caracteres alfanuméricos en minúsculas y guiones (-).
    --source La vía de acceso al origen local que contiene el código fuente o el URL del repositorio de Git, por ejemplo, ..
  4. Utilice el mandato buildrun get para comprobar el estado de la ejecución de la compilación.

    ibmcloud ce buildrun get --name buildrun-local-dockerfile
    

    Salida de ejemplo

    Getting build run 'buildrun-local-dockerfile'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun events -n buildrun-local-dockerfile' to get the system events of the build run.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun logs -f -n buildrun-local-dockerfile' to follow the logs of the build run.
    OK
    
    Name:          buildrun-local-dockerfile  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-07T16:09:34-04:00
    Build Type:    local
    
    Summary:       Succeeded
    Status:        Succeeded
    Reason:        All Steps have completed executing
    Source:
        Source Image Digest:  sha256:ced7abc34f018941145efb56e9a0c1fca99236653c2a05dd5b8b985928ff5f4f
    Image Digest:  sha256:6459430ff49436494aa5e3103eaac98ad90ea50df88a2e14af6314fe88f3c952
    
    Image:                   private.us.icr.io/ce--27fe9-glxo4k7nj7d/buildrun-buildrun-local-dockerfile
    Registry Secret:         ce-auto-icr-private-us-south
    Build Strategy:          dockerfile-medium
    Timeout:                 10m0s
    Source Image:            private.us.icr.io/ce--27fe9-glxo4k7nj7d/buildrun-buildrun-local-dockerfile-source
    Source Registry Secret:  ce-auto-icr-private-us-south
    Dockerfile:              Dockerfile
    

    Observe el nombre generado para la imagen y que el nombre del secreto de registro creado automáticamente tiene el formato ce-auto-icr-private-<region>.

Ejecución de una única compilación con la CLI (con el código fuente local y el acceso proporcionado por el usuario al registro)

En este caso de ejemplo de acceso proporcionado por el usuario, Code Engine compila una imagen a partir del código fuente local y, a continuación, la carga en el registro de contenedor con el acceso de registro que proporciona con el mandato buildrun submit.

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. Desde el directorio CodeEngine\helloworld, ejecute una ejecución de compilación para compilar una imagen desde la helloworld fuente en su estación de trabajo local y especifique la ubicación del registro de imágenes para la salida de compilación con un secreto de registro. Este mandato buildrun submit crea automáticamente la imagen y la envía al registro que especifique con la opción --image. Especifique la opción --registry-secret para acceder al registro.

    ibmcloud ce buildrun submit --name buildrun-local-dockerfile2 --source . --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry
    

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

    • Code Engine determina automáticamente si el código fuente reside en un repositorio o en una estación de trabajo local, basándose en el valor de la opción --source.
    • En este ejemplo, el mandato utiliza la estrategia dockerfile predeterminada y el tamaño de compilación de medium predeterminado.

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

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

    El nombre de la ejecución de compilación. Utilice un nombre que sea exclusivo dentro del proyecto. Este valor es necesario.

    • El nombre debe empezar y terminar con una letra minúscula.
    • El nombre debe tener 63 caracteres o menos y puede contener caracteres alfanuméricos en minúsculas y guiones (-).
    --source La vía de acceso al origen local que contiene el código fuente o el URL del repositorio de Git, por ejemplo, ..
    --image La ubicación del registro de imágenes. El formato de la ubicación debe ser REGISTRY/NAMESPACE/REPOSITORY o REGISTRY/NAMESPACE/REPOSITORY:TAG, donde TAG es opcional. Si no se especifica TAG, el valor predeterminado es latest.
    --registry-secret El secreto de registro que se utiliza para acceder al registro cuando se crea la imagen del contenedor. Ejecute el mandato secret create --format registry para crear un secreto de registro. El secreto de registro se utiliza para autenticarse con un registro privado.
  4. Utilice el mandato buildrun get para comprobar el estado de la ejecución de la compilación.

    ibmcloud ce buildrun get --name buildrun-local-dockerfile2
    

    Salida de ejemplo

    Getting build run 'buildrun-local-dockerfile2'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun events -n buildrun-local-dockerfile2' to get the system events of the build run.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun logs -f -n buildrun-local-dockerfile2' to follow the logs of the build run.
    OK
    
    Name:          buildrun-local-dockerfile2  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-07T16:34:42-04:00
    Build Type:    local
    
    Summary:       Succeeded
    Status:        Succeeded
    Reason:        All Steps have completed executing
    Source:
        Source Image Digest:  sha256:00fb80a8cdc17394ccae564efceb81f48c2cbcbd76afd0fb0b74019352933a63
    Image Digest:  sha256:25bc4bedccc1b34c98ccd92368246df3e61a7cf0cf4915a32f111669b60e2fea
    
    Image:                   us.icr.io/mynamespace/codeengine-helloworld
    Registry Secret:         myregistry
    Build Strategy:          dockerfile-medium
    Timeout:                 10m0s
    Source Image:            us.icr.io/mynamespace/codeengine-helloworld-source
    Source Registry Secret:  myregistry
    Dockerfile:              Dockerfile
    

Pasos siguientes para compilaciones

Ahora que ha creado una imagen de contenedor a partir del código fuente, puede crear una aplicación o un trabajo que utilice la imagen de contenedor. Consulte Despliegue de aplicaciones y Ejecución de trabajos.

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