Cómo publicar automáticamente versiones de GitHub desde etiquetas de Git
Las versiones de GitHub proporcionan un método de fácil acceso para que los usuarios finales descarguen archivos binarios de software versionados. Puede crearlos manualmente, pero es mucho más fácil dejar que GitHub Actions los cree automáticamente usando etiquetas de lanzamiento creadas en su repositorio.
Uso de lanzamientos etiquetados
Las etiquetas son una característica existente en Git, con soporte extendido ofrecido por GitHub con versiones, que ofrecen un lugar para alojar archivos binarios con registros de cambios asociados.
Puede crear una etiqueta como si creara una rama, excepto que es un punto fijo que no se mueve y siempre apunta a una confirmación específica. Esto es útil para crear lanzamientos versionados, y la mayoría de las personas crearán etiquetas utilizando el formato de control de versiones semántico (Major.Minor.Patch).
Las etiquetas se pueden enviar a GitHub, donde se pueden usar en otros flujos de trabajo de automatización. En este caso, configuraremos un script de GitHub Actions que escuchará las confirmaciones que contengan versiones etiquetadas y publicará automáticamente los artefactos de compilación en una versión.
Configuración de acciones de GitHub
Primero, querrá asegurarse de tener una compilación de GitHub Actions que funcione y que sus scripts de compilación funcionen correctamente. La configuración exacta de su flujo de trabajo dependerá del tipo de proyecto que esté creando, pero, en general, no desea depurar dos problemas a la vez, por lo que debe agregar la publicación de versiones una vez que ya tenga artefactos en funcionamiento. Puede leer nuestra guía para configurar una compilación de GitHub Actions para obtener más información.
Lo primero que debe hacer es editar la sección «on» de su secuencia de comandos de acciones para que también se ejecute cuando se crean las etiquetas. De forma predeterminada, probablemente tenga el evento «push» para realizar un seguimiento de los lanzamientos o la rama principal. Deberá agregar etiquetas y establecer un filtro. Para todas las etiquetas, simplemente use un comodín:
Al final del flujo de trabajo, después de que todo esté construido, crearemos la entrada Release. Este es un paso de dos partes: primero, necesitaremos crear un nuevo objeto Release con todos los metadatos, y luego podemos usar la URL de publicación generada para cargar los artefactos. Puede crear varios pasos de carga si tiene varios artefactos.
En cualquier caso, solo querremos ejecutar estos pasos si el flujo de trabajo se está ejecutando debido a una etiqueta. Podemos hacer esto con una simple if
verificación y verificar si el github.ref
objeto es una etiqueta, que almacena el nombre de referencia de la rama o etiqueta que activó el flujo de trabajo.
El primer paso es crear un objeto Release, que se puede hacer con el siguiente paso. No es necesario crear manualmente el token de GitHub: es un token especial al que siempre se puede hacer referencia desde los scripts de acciones.
- name: Create Release
if: startsWith(github.ref, 'refs/tags/')
uses: actions/create-release@v1
id: create_release
with:
draft: false
prerelease: false
release_name: ${{ github.ref }}
tag_name: ${{ github.ref }}
body_path: CHANGELOG.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Tenga en cuenta aquí que el registro de cambios para la versión se almacena en CHANGELOG.md
, que debe existir para que el flujo de trabajo se ejecute correctamente . Puede editar esto con cada etiqueta para cambiar la reducción que muestra GitHub en la página de lanzamiento. Existen herramientas para generar esto automáticamente con mensajes de confirmación, pero la mayoría de los equipos tendrán su propio método para administrar esto de todos modos.
A continuación, puede comenzar a cargar artefactos. Esto usa la URL de carga del paso anterior, y deberá definir una ruta donde se pueda encontrar junto con el nombre para mostrar del recurso.
- name: Upload Release
if: startsWith(github.ref, 'refs/tags/')
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: Oxide.Ext.Sanctuary/bin/Release/net48/Oxide.Ext.Sanctuary.dll
asset_name: Oxide.Ext.Sanctuary.dll
asset_content_type: application/octet-stream
Tenga en cuenta aquí que el tipo de contenido se establece en octet-stream
, lo cual es típico para datos binarios como ejecutables y DLL. Si está publicando un ZIP o algún otro tipo de archivo, querrá cambiar esto, aunque solo afecta las imágenes en la página de lanzamiento.
Ahora, puede confirmar los cambios en el flujo de trabajo de Acciones y luego crear una nueva etiqueta y enviarla a GitHub. Debería ver que se crea una nueva ejecución de flujo de trabajo, excepto que en lugar de ejecutarse fuera de la rama maestra, se ejecuta debido a la etiqueta:
Una vez que haya terminado, verá el lanzamiento en la barra lateral de GitHub.
Deja una respuesta