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.

Sustitución de variables de acción de Github para reemplazo de cadena de conexión xml.

Estoy intentando reemplazar connectionString en un archivo XML App.Config para una aplicación WPF basada en entornos prod/qa/dev. Estoy intentando usar la sustitución de variables de acciones de GitHub (https://github.com/marketplace/actions/variable-substitution) para hacerlo.

El objetivo es reemplazar la siguiente sección con fuentes alternativas:

    <add name="DefaultConnection"
         connectionString="Data Source=(LocalDb)\\MSDB;DbFilename=aspcore-local.mdf;" />

Pude cambiar con éxito un archivo json simple, pero ¿cómo se puede reemplazar esta sección en un archivo XML?

- name: variable substitution in json
  uses: microsoft/variable-substitution@v1 
  with:
    files: 'test.xml'
  env:
    configuration.connectionStrings.DefaultConnection.connectionString: "test" ????

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <connectionStrings>
        <add name="DefaultConnection" connectionString="replaceme!"/>
    </connectionStrings>
</configuration>

Inicialmente pensé en transformar el archivo usando https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/file-transform?view=azure-devops, pero eso solo está disponible en Azure DevOps vs. acciones de GitHub.

Sé que hay una mejor manera, solo que no sé cuál es … ¡gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para reemplazar la sección de connectionString en un archivo XML App.Config para una aplicación WPF basada en entornos de prod/qa/dev, puede seguir los siguientes pasos:

    1. Actualice el archivo XML con un valor de marcador de posición que reemplazará luego por el valor real de la cadena de conexión.
        <?xml version="1.0" encoding="utf-8"?>
        <configuration>
            <connectionstrings>
                <add name="DefaultConnection" connectionstring="reemplazar!"></add>
            </connectionstrings>
        </configuration>
    
    1. Defina un archivo XML separado para cada entorno (prod.xml, qa.xml y dev.xml) que contenga el valor real de la cadena de conexión.
        <?xml version="1.0" encoding="utf-8"?>
        <configuration>
            <connectionstrings>
                <add name="DefaultConnection" connectionstring="Data Source=(LocalDb)\\MSDB;DbFilename=aspcore-local.mdf;"></add>
            </connectionstrings>
        </configuration>
    
    1. Use la acción de sustitución de variables de GitHub Actions para reemplazar el valor de marcador de posición por el valor real de la cadena de conexión según el entorno.
        - name: sustitución de variable en xml
          uses: einaregilsson/variable-substitution@v1.1.0
          with:
            path: ruta/al/archivo/xml
            env: |
              TOKEN=token
              PROD_XML=$(cat ruta/a/prod.xml)
              QA_XML=$(cat ruta/a/qa.xml)
              DEV_XML=$(cat ruta/a/dev.xml)
    
        - name: desplegar la aplicación
          run: dotnet deploy app
    

    Esto reemplazará el valor reemplazar! en el archivo XML con el valor real de la cadena de conexión para el entorno especificado por la variable $ENVIRONMENT.

    Tenga en cuenta que deberá agregar la variable $ENVIRONMENT a su archivo de flujo de trabajo y establecerla en prod, qa o dev según el entorno en el que desea implementar.

Comments are closed.