Nota: Actualmente los ejecutores hospedados en GitHub no se admiten en GitHub Enterprise Server. Puede ver más información sobre la compatibilidad futura planeada en GitHub public roadmap.
Introducción
Tanto CircleCi como GitHub Actions te permiten crear flujos de trabajo que compilan, prueban, publican, lanzan y despliegan código automáticamente. CircleCI y GitHub Actions comparten algunas similaridades en la configuración del flujo de trabajo:
- Los archivos de configuración de flujo de trabajo están escritos en YAML y se almacenan en el repositorio.
- Los flujos de trabajo incluyen uno o más jobs.
- Los jobs incluyen uno o más pasos o comandos individuales.
- Los pasos o tareas pueden reutilizarse y compartirse con la comunidad.
Para más información, vea "Conceptos básicos de GitHub Actions".
Diferencias clave
Cuando migres desde CircleCI, considera las siguientes diferencias:
- El paralelismo automático de pruebas de CircleCI agrupa las pruebas automáticamente de acuerdo con las reglas que el usuario haya especificado o el historial de información de tiempos. Esta funcionalidad no se incluye en GitHub Actions.
- Las acciones que se ejecutan en los contenedores de Docker distinguen entre problemas de permisos, ya que los contenedores tienen un mapeo de usuarios diferente. Puede evitar muchos de estos problemas si no usa la instrucción
USER
en el Dockerfile. Para obtener más información sobre el sistema de archivos de Docker en ejecutores hospedados en GitHub Enterprise Server, consulta "Acerca de los ejecutores hospedados en GitHub".
Migrar flujos de trabajo y jobs
CircleCI define workflows
en el archivo config.yml, que permite configurar más de un flujo de trabajo. GitHub Enterprise Server necesita un archivo de flujo de trabajo por flujo de trabajo y, por tanto, no necesita que se declare workflows
. Tendrá que crear un archivo de flujo de trabajo para cada flujo de trabajo configurado en config.yml.
Tanto CircleCI como GitHub Actions configuran jobs
en el archivo de configuración mediante una sintaxis similar. Si configura dependencias entre trabajos mediante requires
en el flujo de trabajo de CircleCI, puede usar la sintaxis needs
equivalente de GitHub Actions. Para más información, vea "Sintaxis de flujo de trabajo para GitHub Actions".
Mirgrar orbes a acciones
Tanto CircleCI como GitHub Actions proporcionan un mecanismo para reutilizar y compartir tareas en un flujo de trabajo. CircleCi utiliza un concepto llamado orbes (orbs), escrito en YAML, que proporciona tareas que las personas pueden reutilizar en un flujo de trabajo. GitHub Actions cuenta con componentes reutilizables poderosos y flexibles llamados acciones (actions), los cuales compilas ya sea con archivos de JavaScript o con imagenes de Docker. Puedes crear acciones si escribes tu código personalizado para que interactúe con tu repositorio en la forma que prefieras, lo cual incluye la integración con las API de GitHub Enterprise Server y con cualquier API de terceros disponible públicamente. Por ejemplo, una acción puede publicar módulos npm, enviar alertas por SMS cuando se crean problemas urgentes o implementar código listo para producción. Para más información, vea "Creación de acciones".
Circle CI puede reutilizar partes de los flujos de trabajo con anclas y alias. GitHub Actions es compatible con las necesidades de reutilización más comunes utilizando matrices. Para obtener más información sobre las matrices, consulta "Uso de una matriz para los trabajos".
Utilizar imágenes de Docker
Tanto CircleCi como GitHub Actions son compatibles con la ejecución de pasos dentro de una imagen de Docker.
CircleCi proporciona un conjunto de imágenes pre-compiladas con dependencias comunes. En estas imágenes, USER
se establece en circleci
, lo que hace que los permisos entren en conflicto con GitHub Actions.
Recomendamos que te retires de las imágenes pre-compiladas de CircleCi cuando migres a GitHub Actions. En muchos casos, puedes utilizar acciones para instalar dependencias adicionales que necesites.
Para obtener más información sobre el sistema de archivos de Docker, consulta "Acerca de los ejecutores hospedados en GitHub".
Para obtener más información sobre las herramientas y los paquetes disponibles en imágenes de ejecutores hospedados en GitHub, consulta "Especificaciones para ejecutores hospedados en GitHub".
Utilizar variables y secretos
CircleCi y GitHub Actions son compatibles con la configuración de variables de ambiente en el archivo de configuración y con la creación de secretos utilizando la IU de CircleCI o de GitHub Enterprise Server.
Para más información, vea "Uso de variables de entorno" y "Creación y uso de secretos cifrados".
Almacenamiento en memoria caché
CircleCI y GitHub Actions proporcionan un método para almacenar archivos en cahcé manualmente en el archivo de configuración.
El almacenamiento en caché de GitHub Actions solo está disponible para los repositorios hospedados en GitHub.com o GitHub Enterprise Server 3.5 y versiones posteriores. Para más información, vea "Almacenamiento en caché de dependencias para acelerar los flujos de trabajo".
GitHub Actions no tiene un equivalente al Almacenamiento en Caché por Capas de Docker (o DLC, por sus siglas en inglés) que tiene CircleCI.
Datos persistentes entre jobs
Tanto CircleCi como GitHub Actions proporcionan mecanismos para persistir datos entre jobs.
A continuación encontrarás un ejemplo en la sintaxis de configuración tanto de CircleCi como de GitHub Actions.
CircleCI | Acciones de GitHub |
---|---|
|
|
Para más información, vea "Conservación de datos de flujo de trabajo mediante artefactos".
Usar bases de datos y contenedores de servicio
Ambos sistemas te permiten incluir contenedores adicionales para bases de datos, almacenamiento en caché, u otras dependencias.
En CircleCI, la primera imagen enumerada en config.yaml es la imagen primaria que se usa para ejecutar comandos. GitHub Actions utiliza secciones explícitas: use container
para el contenedor principal y enumere contenedores adicionales en services
.
A continuación encontrarás un ejemplo en la sintaxis de configuración tanto de CircleCi como de GitHub Actions.
CircleCI | Acciones de GitHub |
---|---|
|
|
Para más información, vea "Acerca de los contenedores de servicios".
Ejemplo completo
A continuación encontrarás un ejemplo real. A la izquierda se muestra el archivo config.yml real de CircleCI para el repositorio thoughtbot/administrator. La derecha muestra el equivalente en GitHub Actions.
CircleCI | Acciones de GitHub |
---|---|
|
|