Estoy tratando de construir una tubería de CD usando las acciones de GitHub y AWS Beanstalk (Linux) para mi aplicación ASP.NET Core 3.1. He configurado el archivo YML de la siguiente manera:

- name: dotnet Build
  run: dotnet build src/SLNNAME.sln -c Release --no-restore

- name: dotnet Publish
  run: |
    dotnet publish src/SLNNAME.Server/SLNAME.Server.Web/SLNNAME.Server.Web.csproj -c Release -o staging_SLNNAME_server -r linux-x64

- name: Build deployment package
  run: zip -r staging-server-deploy.zip staging_SLNNAME_server

..

- name: Deploy to AWS Beanstalk
  uses: einaregilsson/beanstalk-deploy@v10
  with:
    aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }}
    aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    region: ${{ secrets.AWS_REGION }}
    application_name: SLNNAME-staging-app-web
    environment_name: SLNNAME-staging-server
    version_label: "staging-app-web-${{ steps.format-time.outputs.replaced }}"
    deployment_package: staging-server-deploy.zip

Pero se produce un error durante la implementación en AWS. En particular, mirando los registros de Beanstalk puedo leer el siguiente error:

[ERROR] An error occurred during execution of command [app-deploy] - [CheckProcfileForDotNetCoreApplication]. Stop running the command. Error: error stat /var/app/staging/staging_SLNNAME_server/SLNNAME.dll: no such file or directory with file /var/app/staging/staging_SLNNAME_server/SLNNAME.dll

Básicamente, creo que está buscando una DLL con el nombre de la solución en lugar del nombre del proyecto: SLNName.Server.Web. Todavía me pregunto dónde está recogiendo el nombre de la solución, ya que no es parte del archivo zip. También probé con el indicador --self-contained, pero el error es exactamente el mismo.

Tengo este error incluso si intento publicar la solución utilizando la extensión AWS toolking de Visual Studio.

La única forma en que he encontrado solucionar esto es cambiar el nombre de la DLL de salida del proyecto para que coincida con el de la solución, pero no tiene ningún sentido para mí, podría tener más problemas en el futuro.

Gracias

0
Krusty 9 jul. 2020 a las 11:47

2 respuestas

La mejor respuesta

Advertencia: ¡esta es una solución alternativa, no una solución!

En el proyecto que no se está implementando, cambie el "Nombre de ensamblado" en la pestaña Propiedades / Aplicación del proyecto, al nombre de la DLL que falta (normalmente el nombre de la solución o la primera parte separada por puntos del espacio de nombres).

Es decir, "SLNNAME"

Luego, vuelva a implementar su aplicación beanstalk y debería funcionar.

1
Darky711 21 jul. 2020 a las 19:19

He abierto un ticket en la plataforma AWS y el equipo de soporte ha declarado este problema como un error.

Ellas me respondieron con:

Me puse en contacto con el equipo interno e informé al equipo sobre el error. [...] He agregado su voz para esta solicitud que planteé con el equipo interno para agregar más peso sobre el tema. Actualmente, no puedo proporcionarle ETA, [...] ciertamente puede estar seguro de que el equipo interno está investigando este problema y lo soluciona lo más rápido posible

Esperando que arreglen esto lo antes posible

0
Krusty 22 jul. 2020 a las 14:10