Github Actions

Verificar que tu código esté bien en tu máquina local es algo que se debe hacer como parte del proceso de desarrollo, pero muchas veces cuando el cambio es muy pequeño y lo probaste en el browser y funciona, la opción más rápida es solo hacer commit y listo, no se ejecuta los tests, estilos de código, linters etc.

Aquí es dónde brillan las acciones de GitHub, es cómo tener una red de seguridad a nivel central, lo que permite hacer las acciones es tener workflows pre establecidos para realizar verificaciones en el código o realizar despliegues.

Si funciona en tu máquina debe poder funcionar en otras, por lo que un workflow que todo proyecto debe tener es el de pruebas sean unitarias y/o de aceptación. El workflow se define en un archivo .yaml que debe estar dentro del directorio .github/workflows el nombre puede ser cualquier cosa por ejemplo pruebas.yaml en este se define cuándo se quiere ejecutar el workflow por ejemplo en cada pull request, o en cada commit en branch específicos, incluso se puede definir una estrategia de tipo matriz en la que se ejecuta el workflow en diferentes configuraciones, por ejemplo en diferentes versiones del lenguaje de programación, esto es útil en el caso de librerías open source.

Luego se definen los trabajos (jobs) que se ejecutarán, cada job tiene una lista de steps, cada step puede ejecutarse directamente como comando bash o puede usar una imagen docker que ya tiene pre configurados los comandos a realizar.

Otra alternativa es también encontrar acciones pre-fabricadas en el marketplace para realizar acciones puntuales en tu código existen para todo, chat, code review, code quality, deployment, publishing, etc.

Ejemplo de workflow básico, que configura un proyecto php con la imagen setup-php y luego ejecuta composer tests y composer ecs que son scripts definidos en composer para ejecutar tests y estilo con easy-coding-standard:

name: Code Analysis

on:
    pull_request: null
    push:
        branches:
            - dev
            - staging
            - master

jobs:
    code_analysis:
        strategy:
            fail-fast: false
            matrix:
                actions:
                    -
                        name: Run tests
                        run: composer tests
                    -
                        name: Check code style
                        run: composer ecs

        name: ${{ matrix.actions.name }}
        runs-on: ubuntu-latest

        steps:
            -   uses: actions/checkout@v2
            # see https://github.com/shivammathur/setup-php
            -   uses: shivammathur/setup-php@v2
                with:
                    php-version: 7.4
                    coverage: none

            # composer install cache - https://github.com/ramsey/composer-install
            -   uses: "ramsey/composer-install@v1"

            -   run: ${{ matrix.actions.run }}