From 77b97aaa5e6cefbc9adc27e9b44be473276547f6 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sun, 7 Jun 2026 06:05:52 +0100 Subject: [PATCH] build w\ Avalonia Android and Browser --- .dockerignore | 69 ++-------------------------- .github/workflows/docker-publish.yml | 41 +++++++++++++++++ Directory.Packages.old.props | 65 -------------------------- Directory.Packages.props | 10 ++-- Dockerfile | 61 +++++++++++++----------- 5 files changed, 85 insertions(+), 161 deletions(-) create mode 100644 .github/workflows/docker-publish.yml delete mode 100644 Directory.Packages.old.props diff --git a/.dockerignore b/.dockerignore index 8f663ba4..4f0f6590 100644 --- a/.dockerignore +++ b/.dockerignore @@ -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/ diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 00000000..16073a02 --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -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 diff --git a/Directory.Packages.old.props b/Directory.Packages.old.props deleted file mode 100644 index 8c40e048..00000000 --- a/Directory.Packages.old.props +++ /dev/null @@ -1,65 +0,0 @@ - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Directory.Packages.props b/Directory.Packages.props index 0d535731..c635b164 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -11,7 +11,9 @@ - + + + @@ -24,7 +26,7 @@ - + @@ -64,10 +66,10 @@ - + - \ No newline at end of file + diff --git a/Dockerfile b/Dockerfile index 9767f5f5..e0b53752 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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"]