Presentación
Después de que creas una acción, querrás seguir lanzando características nuevas mientras trabajas con las contribuciones de la comunidad. En este tutorial se describe un proceso de ejemplo que puede seguir para liberar y mantener acciones en código abierto. El ejemplo:
- Aprovecha GitHub Actions para la integración continua, las actualizaciones de dependencias, la gestión de versiones y la automatización de tareas.
- Proporciona confianza a través de las pruebas automatizadas e insignias de compilación.
- Indica cómo puede utilizarse la acción, idealmente, como parte de un flujo de trabajo más amplio.
- Señala qué tipo de contribuciones de la comunidad recibes. (Por ejemplo: propuestas, solicitudes de cambios o reportes de vulnerabilidades.)
Para obtener un ejemplo aplicado de este proceso, vea actions/javascript-action.
Desarrollar y lanzar las acciones
En esta sección se describe un proceso de ejemplo para desarrollar y liberar acciones y se muestra cómo usar GitHub Actions para automatizar el proceso.
Acerca de las acciones de JavaScript
Las acciones de JavaScript son repositorios de Node.js con metadatos. Sin embargo, las acciones de JavaScript tienen propiedades adicionales comparadas con los proyectos tradicionales de Node.js:
-
Los paquetes dependientes se confirman junto con el código, habitualmente de forma compilada y minificada. Esto significa que las compilaciones automatizadas y contribuciones seguras de la comunidad, son importantes.
-
Las versiones etiquetadas se pueden publicar directamente en GitHub Marketplace y ser utilizadas por flujos de trabajo en GitHub.
-
Muchas acciones utilizan las API de GitHub y API de terceros, por lo que recomendamos realizar pruebas integrales robustas.
Configuración de GitHub Actions flujos de trabajo
Para facilitar el proceso de desarrollo en la siguiente sección, añade dos flujos de trabajo GitHub Actions a tu repositorio:
-
Agregue un flujo de trabajo que se desencadene cuando se inserte una confirmación en una rama de características o
main, o bien cuando se cree una solicitud de incorporación de cambios. Configura el flujo de trabajo para que ejecute tus pruebas de unidad y de integración. Para obtener un ejemplo, vea este flujo de trabajo. -
Agrega un flujo de trabajo que se active cuando se publique o edite un lanzamiento. Configura el flujo de trabajo para garantizar que cuentes con etiquetas semánticas. Puede usar una acción como JasonEtco/build-and-tag-action para compilar y agrupar el archivo de JavaScript y los metadatos, y forzar la inserción de etiquetas semánticas principales, secundarias y de revisión. Para más información sobre las etiquetas semánticas, consulta Acerca del control de versiones semántico.
Nota:
Si habilitas versiones inmutables para tu repositorio, no puedes usar esta acción para hacer un push forzado de etiquetas asociadas a versiones en GitHub. Para obtener información sobre cómo administrar las versiones con versiones inmutables, consulta Uso de versiones y etiquetas inmutables para administrar las publicaciones de tus acciones.
Proceso de desarrollo ejemplo
Aquí tienes un proceso de ejemplo que puedes seguir para ejecutar automáticamente pruebas, crear una versión y publicar en GitHub Marketplace, y publicar tu acción.
-
Realice el desarrollo de funcionalidades en ramas según GitHub Flow. Para más información, consulta flujo de trabajo de GitHub.
- Cuando se suba una confirmación a la rama de característica, tu flujo de trabajo de pruebas ejecutará las pruebas automáticamente.
-
Cree solicitudes de incorporación de cambios en la rama
mainpara iniciar debates y revisiones, y realizar la combinación cuando estén listas.-
Cuando se abre una solicitud de cambios, ya sea desde una rama o una bifurcación, tu flujo de trabajo de prueba volverá a ejecutar las pruebas, esta vez, con la confirmación de fusión.
-
Nota: por motivos de seguridad, los flujos de trabajo desencadenados por
pull_requestdesde las bifurcaciones tienen permisosGITHUB_TOKENrestringidos y no tienen acceso a los secretos. Si las pruebas u otros flujos de trabajo desencadenados tras la solicitud de incorporación de cambios necesitan acceso a los secretos, considere la posibilidad de usar otro evento, como un desencadenador manual opull_request_target. Para más información, consulta Eventos que desencadenan flujos de trabajo.
-
-
Crea un lanzamiento con etiquetado semántico. También puede publicar en GitHub Marketplace con una casilla sencilla. Para obtener más información, consulte Administrar lanzamientos en un repositorio y Publicar acciones en GitHub Marketplace.
-
Cuando se publica o edita un lanzamiento, el flujo de trabajo de este se encargará automáticamente de la compilación y ajuste de etiquetas.
-
Se recomienda crear versiones mediante etiquetas con versiones semánticas (por ejemplo,
v1.1.3) y mantener las etiquetas principales (v1) y secundarias (v1.1) actuales en la confirmación adecuada más reciente. Para obtener más información, consulta Administración de acciones personalizadas y Acerca del control de versiones semántico.
-
Resultados
A diferencia de otras estrategias de administración de versiones automatizadas, este proceso no confirma de forma intencionadas las dependencias en la rama main, solo en las confirmaciones de versión etiquetadas. Al hacerlo, se anima a los usuarios de la acción a hacer referencia a etiquetas con nombre o sha, y ayuda a garantizar la seguridad de las solicitudes de incorporación de cambios de terceros al realizar personalmente la compilación durante una versión.
El uso de versiones semánticas implica que los usuarios de tus acciones pueden fijar sus flujos de trabajo a una versión y saber que podrían seguir recibiendo las últimas características constantes y estables, dependiendo de su nivel de confort.
Trabajar con la comunidad
GitHubproporciona herramientas y guías para ayudarle a trabajar con la comunidad de código abierto. Aquí tienes algunas herramientas que te recomendamos configurar para tener una comunicación bidireccional saludable. Al proporcionar las siguientes señales a la comunidad, motivas a los demás a utilizar, modificar y contribuir con tu acción:
- Mantenga un
READMEcon una gran cantidad de ejemplos de uso e instrucciones. Para más información, consulta Acerca del archivo LÉAME del repositorio. - Incluya un distintivo de estado de flujo de trabajo en el archivo
README. Para más información, consulta Adición de un distintivo de estado de flujo de trabajo. Visite también shields.io para obtener información sobre otros distintivos que puede agregar. - Agregue archivos de estado de la comunidad como
CODE_OF_CONDUCT,CONTRIBUTINGySECURITY. Para obtener más información, consulte Creación de un archivo predeterminado de mantenimiento de la comunidad. - Mantenga las incidencias actualizadas utilizando acciones como actions/stale.
- Utiliza las funciones de seguridad de GitHub para comunicar vulnerabilidades y cómo solucionarlas. Para obtener más información, consulte Referencia de uso seguro.
Información adicional
Los ejemplos donde se emplean patrones similares incluyen: