es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Modificar automáticamente el contenido de un archivo basado en el nombre de la rama de la solicitud de extracción de Github.

Quiero configurar una forma automática en Github que haga algo como esto:

Cuando se fusiona una PR, Github debería ejecutar un script que pueda modificar algunos números pequeños en un archivo. Pero los números deberían estar basados en el nombre de la rama.

Por ejemplo:
Nombre de la rama: A_some_branch_name

Entonces, el script verifica el nombre de la rama y obtiene file.txt y línea 1: versión: 1.1 agrega 1 al último número. A línea 1: versión: 1.2.

Preferiblemente no quiero usar acciones de Github.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no es posible lograr esto sin usar Github Actions. Github Actions es la única forma de ejecutar un script automático cuando se fusiona una Pull Request.

    Existen otras alternativas, como el uso de webhooks, pero todavía requerirán que escribas código para manejar la lógica de modificar el archivo en función del nombre de la rama.

    Github Actions es una herramienta poderosa que puede automatizar flujos de trabajo y tareas para tu proyecto. Te permite definir flujos de trabajo personalizados que pueden ejecutar tareas automatizadas, como compilar tu proyecto, ejecutar pruebas o implementar tu aplicación.

    Para lograr el resultado deseado, puedes crear un Github Action que escuche el evento pull_request y realice las modificaciones requeridas en el archivo. En el Github Action, puedes acceder al nombre de la rama utilizando las variables de contexto de Github y aplicar los cambios necesarios en el archivo.

    Aquí hay un ejemplo de código de flujo de trabajo que escucha el evento pull_request y modifica el archivo file.txt en función del nombre de la rama:

    name: Actualizar número de versión
    on: pull_request
    
    jobs:
      actualizar_version:
        runs-on: ubuntu-latest
        steps:
        - name: Comprobar código
          uses: actions/checkout@v2
        - name: Actualizar número de versión
          run: |
            nombre_rama=$(echo ${GITHUB_REF#refs/heads/})
            if [[ "$nombre_rama" == A_* ]]; then
              sed -i "s/version:.*/version:1.$(( $(cat file.txt | grep -o "[0-9]*$" | tail -1) + 1 ))/" file.txt
              git commit -am "Actualizar número de versión"
              git push
            fi
    

    Esta acción se ejecuta en cualquier evento pull_request y verifica si el nombre de la rama comienza con A_. Si lo hace, utiliza el comando sed para reemplazar el último número en la cadena de versión con el valor incrementado. Luego, realiza commit y push de los cambios de vuelta al repositorio.

    Espero que esto ayude. Si tienes alguna pregunta adicional, no dudes en preguntar.

Comments are closed.