From b97d91a9ac123fcce7ca016f5e1f0d98c0ce5920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Zieli=C5=84ski?= Date: Fri, 12 Sep 2025 09:10:13 +0200 Subject: [PATCH] gitea build --- .gitea/workflows/build.yml | 125 +++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 .gitea/workflows/build.yml diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..6b5f85e --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,125 @@ +name: BuildApp + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + workflow_dispatch: {} + +# (opcjonalnie) ogranicz równoległe runy +concurrency: + group: build-${{ github.ref }} + cancel-in-progress: false + +jobs: + build-frontend: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: https://github.com/actions/checkout@v4 + + - name: Use Node.js 20 + uses: https://github.com/actions/setup-node@v4 + with: + node-version: 20 + + # Zostawiamy jak u Ciebie, jeśli chcesz – można też użyć corepack (pnpm) zamiast global install + - name: Install Angular CLI + run: npm install -g @angular/cli + + - name: Install PNPM + run: npm install -g pnpm + # alternatywa: + # run: corepack enable && corepack prepare pnpm@latest --activate + + - name: Install dependencies + working-directory: src/Frontend + run: pnpm install + + - name: Build Angular + working-directory: src/Frontend + run: ng build --configuration=production + + - name: Upload artifact (frontend) + uses: https://github.com/actions/upload-artifact@v4 + with: + name: frontend + path: | + src/Frontend/dist + if-no-files-found: error + retention-days: 7 + + build-backend: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: https://github.com/actions/checkout@v4 + + - name: Setup .NET 8 + uses: https://github.com/actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + + - name: Restore dependencies + working-directory: src/Backend + run: dotnet restore DiunaBI.sln + + - name: Build solution and prepare plugins + working-directory: src/Backend + run: | + set -e + dotnet build DiunaBI.sln --configuration Release + dotnet build DiunaBI.Plugins.Morska/DiunaBI.Plugins.Morska.csproj --configuration Release + mkdir -p DiunaBI.Tests/bin/Release/net8.0/Plugins + cp DiunaBI.Plugins.Morska/bin/Release/net8.0/DiunaBI.Plugins.Morska.dll DiunaBI.Tests/bin/Release/net8.0/Plugins/ + cp DiunaBI.Plugins.Morska/bin/Release/net8.0/DiunaBI.Core.dll DiunaBI.Tests/bin/Release/net8.0/Plugins/ + ls -la DiunaBI.Tests/bin/Release/net8.0/Plugins/ + + - name: Run Tests + working-directory: src/Backend + run: | + dotnet add DiunaBI.Tests/DiunaBI.Tests.csproj package coverlet.collector + dotnet test DiunaBI.Tests/DiunaBI.Tests.csproj \ + --configuration Release \ + --no-restore \ + --logger "trx;LogFileName=test-results.trx" \ + --collect:"XPlat Code Coverage" \ + --filter "Category!=LocalOnly" + + - name: Publish Test Results + uses: https://github.com/actions/upload-artifact@v4 + if: success() || failure() + with: + name: test-results + path: | + src/Backend/DiunaBI.Tests/TestResults/*.trx + src/Backend/DiunaBI.Tests/TestResults/**/coverage.cobertura.xml + retention-days: 7 + + - name: Publish WebAPI + if: success() + working-directory: src/Backend + run: | + dotnet publish DiunaBI.WebAPI/DiunaBI.WebAPI.csproj \ + --configuration Release \ + --framework net8.0 \ + --self-contained false \ + --output ../../build/webapi + mkdir -p ../../build/webapi/Plugins + cp DiunaBI.Plugins.Morska/bin/Release/net8.0/DiunaBI.Plugins.Morska.dll ../../build/webapi/Plugins/ + ls -la ../../build/webapi/Plugins/ + + - name: Clean up sensitive files + working-directory: build/webapi + run: | + rm -f appsettings.Development.json || true + rm -f client_secrets.Development.json || true + + - name: Upload artifact (webapi) + uses: https://github.com/actions/upload-artifact@v4 + with: + name: webapi + path: build/webapi + if-no-files-found: error + retention-days: 7