Hola, me llamo Luis y en esta ocasión les traigo este nuevo artículo.
Muchos de nosotros hemos desarrollado bibliotecas de código abierto y las hemos publicado en JCenter / Bintray. Para cada nueva versión, usamos para crear un lanzamiento en Github manualmente yendo a la pestaña de lanzamientos.
Para subir a Bintray usamos el complemento bintray-gradle, cuando se crea una nueva versión, ejecutamos manualmente el comando gradlew bintrayUpload
la terminal.
Un trabajo bastante aburrido, ¿verdad? ¿Qué pasa si podemos automatizar este flujo de trabajo? Veamos cómo podemos lograr esto usando Github Actions.
Las acciones de GitHub lo ayudan a automatizar los flujos de trabajo de desarrollo de software en el mismo lugar donde almacena el código y colabora en las solicitudes de extracción y los problemas.Puede escribir tareas individuales, llamadas acciones, y combinarlas para crear un flujo de trabajo personalizado.
Los flujos de trabajo son procesos automatizados personalizados que puede configurar en su repositorio para construir, probar, empaquetar, lanzar o implementar cualquier proyecto de código en GitHub.
Recientemente, he integrado Github Actions en mi biblioteca de código abierto RoomInspector y automaticé el flujo de trabajo de lanzamiento y publicación. Cuando se envía una nueva etiqueta a la rama maestra, se creará una nueva versión automáticamente en Github y se publicará en Bintray.
Puede verificar Room-Inspector en este repositorio de github:
En este artículo, explicaré cómo automatizar el flujo de trabajo de lanzamiento de bibliotecas utilizando acciones de Github. Al final de este artículo, obtendrá una breve idea sobre las acciones de Github y podrá automatizar su flujo de trabajo.
Índice
Empecemos…
Tenemos 2 flujos para automatizar: uno para el lanzamiento de GitHub y otro para la publicación de Bintray.
Crea un flujo de trabajo .yml
archivo llamado release.yml
en tus .github/workflows
directorio (en el directorio raíz de proyectos).
Entonces la ruta final del archivo será projectdir/.github/workflows/release.yml
o puede hacer esto simplemente yendo a la pestaña Acciones en su repositorio de Github y haciendo clic en configurar / nuevo flujo de trabajo.
Te recomiendo que compruebes la sintaxis del flujo de trabajo para las acciones de github en la documentación oficial.
Automatización del lanzamiento de Github
Copie y pegue las líneas siguientes en el archivo de flujo de trabajo.
Ahora veamos qué significan todos estos.
name
es el nombre completo de su flujo de trabajo, que se mostrará en la lista de flujos de trabajo en la pestaña de acciones.
on
define en qué flujo de trabajo de eventos se activará. En nuestro caso, queremos activar el flujo de trabajo cuando se envía una nueva etiqueta (con ‘v’ como prefijo) a la rama maestra.
Una ejecución de flujo de trabajo se compone de uno o más job
s. Los trabajos se ejecutan en paralelo de forma predeterminada. Para ejecutar trabajos de forma secuencial, puede definir dependencias en otros trabajos mediante el jobs.<job_id>.needs
palabra clave.
Cada trabajo debe tener una identificación para asociarlo con el trabajo. name
: nombre del trabajo que se muestra en GitHub.
Cada trabajo se ejecuta en un entorno especificado por runs-on
. La máquina puede ser un corredor alojado en GitHub o un corredor auto alojado.
Un trabajo contiene una secuencia de tareas llamadas steps
. Aquí definimos 3 pasos.
En primer paso, la acción de pago revisa tu repositorio bajo $GITHUB_WORKSPACE
, para que el flujo de trabajo pueda acceder a él.
En el segundo paso, estamos creando una variable de entorno. RELEASE_NAME
quitando la ‘v’ de la etiqueta.
Usos del tercer paso crear una acción de liberación que envuelve el API de lanzamiento de GitHub, específicamente al Crear una versión endpoint, para permitirle aprovechar las acciones de GitHub para crear lanzamientos.
tag_name
: El nombre de la etiqueta de esta versiónrelease_name
: El nombre del lanzamientobody
: Texto que describe el contenido del comunicado. Opcional, y no es necesario si se usabody_path
.body_path
: Un archivo con contenido que describe el lanzamiento. Opcional, y no es necesario si se usabody
.draft
:true
para crear una versión preliminar (no publicada),false
para crear uno publicado. Defecto:false
prerelease
:true
para identificar el lanzamiento como una presentación preliminar.false
para identificar el lanzamiento como un lanzamiento completo. Defectofalse
Hemos creado con éxito nuestro flujo de trabajo para automatizar el lanzamiento de github. Ahora, para cada etiqueta que esté presionando, se creará una nueva versión en Github automáticamente. Probará todo junto después de automatizar el flujo de carga de Bintray.
Automatizar la carga de Bintray
Supongo que ya tiene una cuenta de bintray y configuró el cliente gradle. De lo contrario, cree y configure una cuenta de Bintray. También configure el build.gradle
archivos con el código de la siguiente manera.
Nivel de proyecto build.gradle
Nivel de biblioteca build.gradle
Abre el publish.gradle
, puede ver que estamos accediendo a 2 variables de entorno desde el sistema: bintrayUser y bintrayApiKey. Si está accediendo a estos valores desde el archivo de propiedades, cambie a las variables de entorno.
Ahora ve a Configuraciones pestaña en su repositorio de Github y haga clic en el Misterios sección. Agregar 2 secretos nombrados BINTRAY_API_KEY Y BINTRAY_USER.
Estas claves contendrán su clave api de Bintray y su nombre de usuario respectivamente, puede copiar los valores de su página de perfil de Bintray. Usaremos estos secretos para crear las variables de entorno mencionadas anteriormente.
Como mencioné anteriormente en este artículo, un flujo de trabajo puede tener varios trabajos. Entonces, en lugar de crear un archivo de flujo de trabajo separado, agregará la carga de bintray como un trabajo en el mismo archivo de flujo de trabajo. Incluso puede agregar esto como pasos en el mismo trabajo sin crear uno nuevo.
La línea needs: release
agrega una dependencia del trabajo anterior para que los trabajos se ejecuten en orden secuencial.
Este trabajo consta de 3 pasos.
En el primer paso, igual que en el trabajo anterior, consulte el código.
Usos del segundo paso setup-java acción , que instalará Java.
En el paso Publicar biblioteca, inicializaremos las variables de entorno de los secretos que hemos creado anteriormente. Y finalmente ejecutará el bintrayUpload
comando, que cargará la biblioteca en Bintray.
El final release.yml
después de combinar ambos trabajos se verá así:
Hecho.! Ahora empuje el archivo de flujo de trabajo y verá cómo funciona.
Pruebas
- Ir Comportamiento pestaña en su repositorio de github, el flujo de trabajo que ha creado se mostrará allí.
2. Ahora cree una etiqueta y empújela.
3. Vaya a la pestaña Acciones nuevamente, puede ver que el flujo de trabajo comienza a ejecutarse.
4. Una vez que se complete el trabajo, vaya a las versiones, la nueva versión se agregará allí.
5. Vaya a su cuenta de bintray y navegue hasta la página de sus bibliotecas, puede ver que su nueva versión aparecerá en la sección de versiones.
Para concluir
Aquí he mostrado cómo automatizar la publicación y publicación de bibliotecas de Android usando acciones de Github. Para versiones futuras, no necesita hacer nada manualmente.
Una vez que su nueva actualización esté lista, cree una etiqueta y empújela, se creará una nueva versión de la biblioteca en Github y se publicará automáticamente en Bintray. No olvide actualizar la versión de la biblioteca y el registro de cambios antes de crear la etiqueta.
Los flujos de trabajo explicados son simples, lo que acelera la publicación de su biblioteca. Puede agregar más trabajos para hacerlo aún mejor, es decir; para generar etiquetas, análisis de código, ejecución de pruebas, creación de apk, etc. Puedes encontrar más acciones interesantes en Mercado de Github.
Gracias por leer. Espero que hayas disfrutado de este artículo.
Añadir comentario