Ejercicio 6. Reutilización de workflows y creación de releases

De Wiki de EGC
Saltar a: navegación, buscar

Página_Principal -> 2021/2022 -> Prácticas - 21/22 -> Integración_Continua_y_Despliegue_Continuo_21-22

Reutilización de workflows y creación de releases

En GitHub puede hacerse crearse una Release de un repositorio en https://github.com/<tu org>/<tu repo>/releases. Para automatizar el proceso de generación de una release a partir de un tag (siempre y cuando dicho código haya pasado las pruebas) podemos combinar el workflow django.yml con un pasos posterior de release. Para ello:

  1. Cree un nuevo workflow en la carpeta de los workflows con el siguiente contenido:
name: release

on:
  push: 
    tags:
      - '*'

jobs:
  buildTest:
    uses: <tu org>/<tu repo>/.github/workflows/django.yml@master
    secrets: 
      CODACY_PROJECT_TOKEN: ${{secrets.CODACY_PROJECT_TOKEN}}
      HEROKU_API_KEY: ${{secrets.HEROKU_API_KEY}}

  release:
    needs: buildTest
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Release
        uses: softprops/action-gh-release@v1
  1. Dado que las variables de entorno y secrets no se comparten entre workflows, hay que pasarlos explicitamente de un worflow al workflow reutilizable. Para convertir el workflow django.yml en reutilizable tenemos que modifcarlo añadiendo:
...
on:
  push:
     branches:
	   - master
  workflow_call:
    secrets:
      CODACY_PROJECT_TOKEN:
        required: true
      HEROKU_API_KEY:
...

Hagamos un push de los cambios.

  • ¿Cuántos workflows se dispara?
  • ¿Se observa algún comportamiento diferente en el workflow django.yml?

Para crear un nuevo tag hagamos:

git tag -a v1.0.0 -m “mensaje para añadir al tag que también aparecerá en la release”
git push origin v1.0.
  • ¿Cuántos workflows se lanzan?
  • ¿Cuántos jobs se ejecutan del nuevo worflow?
  • ¿Se crea correctamente la release?