Belldandy
Un blog? Que es esto, 2004? Mi nombre es Andrea, y hace muchos años que trabajo en sistemas.
AWS Certified: Solution Architect - Associate
AWS Certified: Developer - Associate
Logo

Llego .NET 10!

Publicado el 12 nov 2025, 04:36:38 —  Categorias: .NET

Microsoft lanzo .NET 10 ayer, el 11 de noviembre de 2025, como una versión de Soporte a Largo Plazo (LTS) que se mantendrá hasta noviembre de 2028., asi que la idea es que puedan migrar lo antes posible. Los LTS de Microsoft son bastante raris, pero si tienen la oportunidad de empezar un nuevo proyecto, arranquenlo con esto directamente, y empiecen a armar un mapa para ir migrando de a poco.

Tiene un MONTON de mejoras, pero voy a intentar resumir las mas importantes o las mas grandes.

Ahora estare atenta y los mantendre al tanto cuando AWS decida agregar soporte de .NET 10 a los LAMBDAS (por ahora seguimos con .NET 8... asi que mejor tomarlo con calma y tiempo).

Crear una minimal API usando AWS Lambda

Publicado el 6 nov 2025, 05:42:47 —  Categorias: AWS, Backend, .NET

Ya se que el tema serverless no tiene muchos adeptos, y casi todo el mundo te dice "Comprate un server VPS por 5 dolares". Pero suponete que necesitas una API para algo chiquito, algo rapido, o como yo, que tengo hosteado el blog. En este articulo, te voy a enseñar como hacer para correr una Minimal API de .NET en AWS Lambda de forma REALMENTE facil.

Configurar Sonarqube Cloud con Github

Publicado el 4 nov 2025, 14:33:25 —  Categorias: Backend, .NET

En el post anterior hablamos de un server MCP de Sonarqube, pero si ni siquiera sabemos que es Sonarqube? Vamos a correr antes de aprender a caminar? Claro que no! Si nunca instalaron Sonarqube, o no saben que es, les cuento: Sonarqube es una app que analiza tu codigo, y te puede decir, por ej. si tus funciones son muy complicadas de mantener (por ej, si tenes 20 IF anidados, eso se considera un problema de "Code Smell", porque es muy dificil congnitivamente seguir el codigo), o si tenes un problema de seguridad grave (aunque hace mucho mas que eso!)

Sonarqube mira todo tu codigo, te genera avisos de seguridad, mantenimiento de codigo, % de tu codigo que esta cubierto por tests de unidad, y te lo ordena por Severidad (Blocker, High, Medium, etc).

La herramienta se encuentra disponible en modo "Cloud" (no instalas nada), con un Free Tier generoso (hasta 50k de lineas de codigo es gratuito), o sino lo podes correr OnPrem. Lo ideal es correrlo automaticamente al hacer los Pull Requests, y podes correrlo, por ej, semanalmente en el codigo completo.

Tambien podes elegir entre arreglar o no algo - capaz a mi no me interesa que los placeholders esten todos en PascalCase, entonces puedo elegir aceptarlo (que lo voy a arreglar en algun momento) o ponerlo como Falso positivo, para que no lo reporte mas.

Image

Mi repo esta hosteado en Github, y tiene muchiiiisimo menos que 50k de lineas de codigo, asi que puedo usar el free tier. Es una API para un blog, no un descubrimiento en el campo cuantico 😅

Para eso, segui las instrucciones de esta pagina: Getting Started -- Github y me arme una Github Action que corre en los pull request (y tambien on demand para el codigo completo) que realiza el analisis. Fue muy simple

  1. Saque la cuenta en https://sonarcloud.io/ usando Github
  2. Importe el repo que me interesaba
  3. Configure los secrets en Github
  4. Configure la accion para que compile y corra el proceso. Mi API esta en .NET, asi que mi action se ve mas o menos asi:
name: SonarQube
on:
  push:
    branches:
      - main
  pull_request:
    types: [opened, synchronize, reopened]
  workflow_dispatch:
jobs:
  build:
    name: Build and analyze
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v5
        with:
          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis
      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          java-version: 17
          distribution: 'zulu' # Alternative distribution options are available.
      - name: Cache SonarQube Cloud packages
        uses: actions/cache@v4
        with:
          path: ~\sonar\cache
          key: ${{ runner.os }}-sonar
          restore-keys: ${{ runner.os }}-sonar
      - name: Cache SonarQube Cloud scanner
        id: cache-sonar-scanner
        uses: actions/cache@v4
        with:
          path: ${{ runner.temp }}\scanner
          key: ${{ runner.os }}-sonar-scanner
          restore-keys: ${{ runner.os }}-sonar-scanner
      - name: Install AWS Lambda Tools
        shell: powershell
        run: |
          dotnet tool install -g Amazon.Lambda.Tools
      - name: Install SonarQube Cloud scanner
        if: steps.cache-sonar-scanner.outputs.cache-hit != 'true'
        shell: powershell
        run: |
          New-Item -Path ${{ runner.temp }}\scanner -ItemType Directory
          dotnet tool update dotnet-sonarscanner --tool-path ${{ runner.temp }}\scanner
      - name: Restore dependencies
        working-directory: src
        run: dotnet restore
      - name: Build and analyze
        working-directory: src
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
        shell: powershell
        run: |
          ${{ runner.temp }}\scanner\dotnet-sonarscanner begin /k:"miproyecto" /o:"miuser" /d:sonar.token="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io"
          dotnet build --no-restore --configuration Release
          ${{ runner.temp }}\scanner\dotnet-sonarscanner end /d:sonar.token="${{ secrets.SONAR_TOKEN }}"

Y listo! Cuando corre, manda los resultados directamente a https://sonarcloud.io/, donde tengo un dashboard que puedo ver que me sugiere.

Image

Es algo realmente util para tener visibilidad de problemas antes de que ocurran (en el caso de los pull requests), o una vista general de todo el proyecto.

Obviamente si quieren correr la version hosted, deberan instalarla y configurarla siguiendo las instrucciones del sitio: QuickStart Guide

Espero que les sirva, lo instalen y revisen su codigo: yo me encontre con dos Security: Blocker que se me habian pasado y fueron rapidamente arreglados. Importante: no se pongan mal si la primera vez que lo corren, encuentra mil problemas: es un poco esperable; enfoquense en los de prioridad mas alta y seguridad, y despues el resto lo van revisando.

Siempre cuento esta anecdota: en la empresa anterior, lo teniamos self-hosted y nos encontro un loop infinito antes que el pull request fuera mergeado. Asi que no lo subestimen, ni piensen que no lo necesitan, porque a pesar de haber tenido revision de dos personas, se paso por alto y si hubiera llegado a PROD, hubiera sido un desastre.

Cuentenme si lo usan, o si lo van a implementar!

Links: