build w\ Avalonia Android and Browser

This commit is contained in:
Paul Schneider 2026-06-07 06:05:52 +01:00
commit 77b97aaa5e
5 changed files with 88 additions and 164 deletions

View file

@ -1,65 +1,6 @@
private/
.git
bin/
obj/
out/
dist/
node_modules/
*.pfx
*.userprefs
*.Private.cs
*-secret.json
.gitignore
.paket/
**/bin/
**/obj/
**/.playwright/
.git/
.vs/
.sass-cache/
.private/
/out
bin
obj
bower_components
node_modules/
private/
DataProtection-Keys/
RSA-Params.json
appsettings.*.json
omnisharp.json
DataProtection/
/packages/
/src/Yavsc/Avatars-*/
/src/Yavsc/Blog-*/
/src/Yavsc/Bills-*/
/src/Yavsc/AppData*/
/src/Yavsc/Temp-*/
/src/Yavsc/bower_components/
/src/Yavsc/Data-Dev/
/src/test/testingrepo/
connectionsettings.Development.json
appsettings.Development.json
/src/Yavsc/web.log
/yavscd
builds/
/test/yavscTests/test-results.xml
/test/yavscTests/test-results.html
yavsc-pre
*.env
generated/
*.lscache
*.Development.json
*.log
**/AppDataDevelopment/
binaries/
build/
src/*/Blog-Dev/
*.mp4
src/Yavsc.Org/data/
.github/

41
.github/workflows/docker-publish.yml vendored Normal file
View file

@ -0,0 +1,41 @@
name: Build and Push Yavsc Production Image
on:
push:
branches:
- main
- master
workflow_dispatch:
jobs:
production-deploy:
runs-on: ubuntu-latest
steps:
# 1. Récupération du code
- name: Check out the repo
uses: actions/checkout@v4
# 2. Configuration du moteur de Buildx
- name: Set up Docker Buildx
uses: actions/setup-buildx-action@v3
# 3. Connexion sécurisée à Docker Hub
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# 4. Build et Push de l'image de production finale
- name: Build and push production image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile.prod
push: true
tags: |
pazof/yavsc:latest
pazof/yavsc:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max

View file

@ -1,65 +0,0 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="AsciiDocSharp" Version="0.2.0" />
<PackageVersion Include="AsciiDocSharp.Converters.Html" Version="0.2.0" />
<PackageVersion Include="bootstrap" Version="5.3.8" />
<PackageVersion Include="coverlet.collector" Version="10.0.1" />
<PackageVersion Include="Google.Apis.Calendar.v3" Version="1.74.0.4154" />
<PackageVersion Include="Google.Apis.Compute.v1" Version="1.74.0.4138" />
<PackageVersion Include="HigginsSoft.IdentityServer8" Version="8.0.5-preview-net9" />
<PackageVersion Include="HigginsSoft.IdentityServer8.AspNetIdentity" Version="8.0.5-preview-net9" />
<PackageVersion Include="HigginsSoft.IdentityServer8.EntityFramework" Version="8.0.5-preview-net9" />
<PackageVersion Include="HigginsSoft.IdentityServer8.EntityFramework.Storage" Version="8.0.5-preview-net9" />
<PackageVersion Include="HigginsSoft.IdentityServer8.Security" Version="8.0.5-preview-net9" />
<PackageVersion Include="HigginsSoft.IdentityServer8.Storage" Version="8.0.5-preview-net9" />
<PackageVersion Include="IdentityModel.AspNetCore" Version="4.3.0" />
<PackageVersion Include="IdentityModel.OidcClient" Version="6.0.0" />
<PackageVersion Include="MailKit" Version="4.17.0" />
<PackageVersion Include="Microsoft.AspNetCore.Antiforgery" Version="2.3.10" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="10.0.8" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.8" />
<PackageVersion Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="10.0.8" />
<PackageVersion Include="Microsoft.AspNetCore.Hosting" Version="2.3.10" />
<PackageVersion Include="Microsoft.AspNetCore.Http.Features" Version="5.0.17" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="10.0.8" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.UI" Version="10.0.8" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="10.0.8" />
<PackageVersion Include="Microsoft.AspNetCore.Razor" Version="2.3.0" />
<PackageVersion Include="Microsoft.AspNetCore.Razor.Language" Version="6.0.36" />
<PackageVersion Include="Microsoft.AspNetCore.SignalR" Version="1.2.10" />
<PackageVersion Include="Microsoft.AspNetCore.StaticFiles" Version="2.3.10" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.8" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="10.0.8" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.8" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.8" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="10.0.8" />
<PackageVersion Include="Microsoft.Extensions.CommandLineUtils" Version="1.1.1" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.8" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.8" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.8" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="10.0.8" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="10.0.6" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.5.1" />
<PackageVersion Include="Microsoft.Playwright" Version="1.60.0" />
<PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="10.0.2" />
<PackageVersion Include="MimeKit" Version="4.16.0" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.1" />
<PackageVersion Include="PayPalMerchantSDK" Version="2.16.250" />
<PackageVersion Include="pazof.rules" Version="1.1.3" />
<PackageVersion Include="popper.js" Version="1.16.1" />
<PackageVersion Include="RazorEngine.NetCore" Version="3.1.1" />
<PackageVersion Include="Selenium.WebDriver" Version="4.44.0" />
<PackageVersion Include="Serilog.AspNetCore" Version="10.0.0" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="10.1.7" />
<PackageVersion Include="System.Security.Cryptography.Pkcs" Version="10.0.8" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.8" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="10.0.8" />
</ItemGroup>
</Project>

View file

@ -11,7 +11,9 @@
<PackageVersion Include="Avalonia.Desktop" Version="12.0.4" />
<PackageVersion Include="Avalonia.Fonts.Inter" Version="12.0.4" />
<PackageVersion Include="Avalonia.Themes.Fluent" Version="12.0.4" />
<PackageVersion Include="AvaloniaUI.DiagnosticsSupport" Version="2.2.1" />
<PackageVersion Include="Avalonia.Browser" Version="12.0.4" />
<PackageVersion Include="Avalonia.Android" Version="12.0.4" />
<PackageVersion Include="AvaloniaUI.DiagnosticsSupport" Version="2.2.2" />
<PackageVersion Include="bootstrap" Version="5.3.8" />
<PackageVersion Include="coverlet.collector" Version="10.0.1" />
<PackageVersion Include="Google.Apis.Calendar.v3" Version="1.74.0.4154" />
@ -24,7 +26,7 @@
<PackageVersion Include="HigginsSoft.IdentityServer8.Storage" Version="8.0.5-preview-net9" />
<PackageVersion Include="IdentityModel.AspNetCore" Version="4.3.0" />
<PackageVersion Include="IdentityModel.OidcClient" Version="6.0.0" />
<PackageVersion Include="Magick.NET-Q8-AnyCPU" Version="14.13.1" />
<PackageVersion Include="Magick.NET-Q8-AnyCPU" Version="14.14.0" />
<PackageVersion Include="MailKit" Version="4.17.0" />
<PackageVersion Include="Microsoft.AspNetCore.Antiforgery" Version="2.3.10" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="10.0.8" />
@ -64,10 +66,10 @@
<PackageVersion Include="Selenium.WebDriver" Version="4.44.0" />
<PackageVersion Include="Serilog.AspNetCore" Version="10.0.0" />
<PackageVersion Include="SixLabors.ImageSharp" Version="4.0.0" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="10.2.0" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="10.2.1" />
<PackageVersion Include="System.Security.Cryptography.Pkcs" Version="10.0.8" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
</ItemGroup>
</Project>
</Project>

View file

@ -1,33 +1,38 @@
# Build stage
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
# Utilisation de votre image globale pour le build et l'exécution
FROM pazof/yavsc-build-env:latest AS build-env
WORKDIR /src
COPY . .
RUN dotnet workload install android --skip-manifest-update
RUN dotnet workload restore
# 1. Copie de la solution
COPY *.sln ./
COPY Directory.*.props ./
# 2. Copie de l'intégralité des fichiers de projets (.csproj) pour la restauration
COPY src/Yavsc.Org/*.csproj ./src/Yavsc.Org/
COPY src/Yavsc.Abstract/*.csproj ./src/Yavsc.Abstract/
COPY src/Yavsc.Server/*.csproj ./src/Yavsc.Server/
COPY src/Yavsc.Web/*.csproj ./src/Yavsc.Web/
COPY src/Yavsc.Api/*.csproj ./src/Yavsc.Api/
COPY src/Yavsc.Blogs/*.csproj ./src/Yavsc.Blogs/
COPY src/cli/*.csproj ./src/cli/
COPY test/yavscTests/*.csproj ./test/yavscTests/
# Projets associés à PostIt
COPY src/PostIt/PostIt/*.csproj ./src/PostIt/PostIt/
COPY src/PostIt/PostIt.Android/*.csproj ./src/PostIt/PostIt.Android/
COPY src/PostIt/PostIt.Browser/*.csproj ./src/PostIt/PostIt.Browser/
COPY src/PostIt/PostIt.Desktop/*.csproj ./src/PostIt/PostIt.Desktop/
# 3. Restauration des dépendances avec vos workloads actifs
RUN dotnet nuget add source https://isn.pschneider.fr/v3/index.json --allow-insecure-connections
RUN dotnet publish src/Yavsc.Org/Yavsc.Org.csproj -c Release -o /app/publish
RUN dotnet restore
# Runtime stage
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
WORKDIR /app
# 4. Copie du reste du code source (filtré par votre .dockerignore)
COPY . .
# Variables d'environnement avec valeurs par défaut
ARG POSTGRES_HOST=localhost
ARG POSTGRES_PORT=5432
ARG POSTGRES_DB=yavsc
ARG POSTGRES_USER=yavsc
ARG POSTGRES_PASSWORD
# 5. Compilation globale de la solution
RUN dotnet build -c Release
ENV POSTGRES_HOST=${POSTGRES_HOST}
ENV POSTGRES_PORT=${POSTGRES_PORT}
ENV POSTGRES_DB=${POSTGRES_DB}
ENV POSTGRES_USER=${POSTGRES_USER}
ENV POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
# Chaîne de connexion construite depuis les variables
ENV ConnectionStrings__DefaultConnection=\
"Host=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=${POSTGRES_DB};Username=${POSTGRES_USER};Password=${POSTGRES_PASSWORD}"
COPY --from=build /app/publish .
EXPOSE 5000
ENTRYPOINT ["dotnet", "Yavsc.Org.dll"]
# L'image finale reste sur votre environnement complet
EXPOSE 8080
CMD ["bash"]