perf: build on host for faster incremental compilation
Some checks failed
Build and Deploy AdminApi / build-and-deploy (push) Has been cancelled

This commit is contained in:
msumshk
2026-02-05 17:13:56 +08:00
parent bbd513c789
commit 863c3986b5
2 changed files with 21 additions and 47 deletions

View File

@@ -11,24 +11,32 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
run: | run: |
rm -rf /opt/deploy/adminapi || true cd /opt/deploy/adminapi || mkdir -p /opt/deploy/adminapi
mkdir -p /opt/deploy/adminapi
cd /opt/deploy/adminapi cd /opt/deploy/adminapi
git clone --depth 1 --branch dev ssh://git@git.laosankeji.com:2222/msumshk/TakeoutSaaS.AdminApi.git .
# 手动拉取 submodules从 Gitea 而不是 GitHub # 如果已有仓库就 pull否则 clone
git submodule init if [ -d ".git" ]; then
git config submodule.TakeoutSaaS.BuildingBlocks.url ssh://git@git.laosankeji.com:2222/msumshk/TakeoutSaaS.BuildingBlocks.git git fetch origin dev
git config submodule.TakeoutSaaS.Docs.url ssh://git@git.laosankeji.com:2222/msumshk/TakeoutSaaS.Docs.git git reset --hard origin/dev
git submodule update --depth 1 git submodule update --init --recursive
else
git clone --branch dev --recurse-submodules ssh://git@git.laosankeji.com:2222/msumshk/TakeoutSaaS.AdminApi.git .
git submodule init
git config submodule.TakeoutSaaS.BuildingBlocks.url ssh://git@git.laosankeji.com:2222/msumshk/TakeoutSaaS.BuildingBlocks.git
git config submodule.TakeoutSaaS.Docs.url ssh://git@git.laosankeji.com:2222/msumshk/TakeoutSaaS.Docs.git
git submodule update
fi
- name: Build on host
run: |
cd /opt/deploy/adminapi
dotnet restore src/Api/TakeoutSaaS.AdminApi/TakeoutSaaS.AdminApi.csproj
dotnet publish src/Api/TakeoutSaaS.AdminApi/TakeoutSaaS.AdminApi.csproj -c Release -o /opt/deploy/adminapi/publish --no-restore
- name: Build Docker image - name: Build Docker image
run: | run: |
cd /opt/deploy/adminapi cd /opt/deploy/adminapi
docker buildx build \ docker build -t takeoutsaas-adminapi:latest -f src/Api/TakeoutSaaS.AdminApi/Dockerfile .
--build-context nuget-cache=/opt/nuget-cache/packages \
-t takeoutsaas-adminapi:latest \
-f src/Api/TakeoutSaaS.AdminApi/Dockerfile .
- name: Deploy container - name: Deploy container
run: | run: |

View File

@@ -1,40 +1,6 @@
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /src
# 复制预先准备好的 NuGet 包缓存
COPY --from=nuget-cache / /root/.nuget/packages/
# Copy only what's needed for restore first, so `dotnet restore` can be cached.
COPY ["Directory.Build.props", "./"]
COPY ["TakeoutSaaS.sln", "./"]
COPY ["stylecop.json", "./"]
COPY ["NuGet.Config", "./"]
COPY ["src/Api/TakeoutSaaS.AdminApi/TakeoutSaaS.AdminApi.csproj", "src/Api/TakeoutSaaS.AdminApi/"]
COPY ["src/Application/TakeoutSaaS.Application/TakeoutSaaS.Application.csproj", "src/Application/TakeoutSaaS.Application/"]
COPY ["TakeoutSaaS.BuildingBlocks/src/Core/TakeoutSaaS.Shared.Abstractions/TakeoutSaaS.Shared.Abstractions.csproj", "TakeoutSaaS.BuildingBlocks/src/Core/TakeoutSaaS.Shared.Abstractions/"]
COPY ["TakeoutSaaS.BuildingBlocks/src/Core/TakeoutSaaS.Shared.Kernel/TakeoutSaaS.Shared.Kernel.csproj", "TakeoutSaaS.BuildingBlocks/src/Core/TakeoutSaaS.Shared.Kernel/"]
COPY ["TakeoutSaaS.BuildingBlocks/src/Core/TakeoutSaaS.Shared.Web/TakeoutSaaS.Shared.Web.csproj", "TakeoutSaaS.BuildingBlocks/src/Core/TakeoutSaaS.Shared.Web/"]
COPY ["src/Domain/TakeoutSaaS.Domain/TakeoutSaaS.Domain.csproj", "src/Domain/TakeoutSaaS.Domain/"]
COPY ["src/Infrastructure/TakeoutSaaS.Infrastructure/TakeoutSaaS.Infrastructure.csproj", "src/Infrastructure/TakeoutSaaS.Infrastructure/"]
COPY ["src/Modules/TakeoutSaaS.Module.Authorization/TakeoutSaaS.Module.Authorization.csproj", "src/Modules/TakeoutSaaS.Module.Authorization/"]
COPY ["src/Modules/TakeoutSaaS.Module.Delivery/TakeoutSaaS.Module.Delivery.csproj", "src/Modules/TakeoutSaaS.Module.Delivery/"]
COPY ["src/Modules/TakeoutSaaS.Module.Dictionary/TakeoutSaaS.Module.Dictionary.csproj", "src/Modules/TakeoutSaaS.Module.Dictionary/"]
COPY ["src/Modules/TakeoutSaaS.Module.Messaging/TakeoutSaaS.Module.Messaging.csproj", "src/Modules/TakeoutSaaS.Module.Messaging/"]
COPY ["src/Modules/TakeoutSaaS.Module.Scheduler/TakeoutSaaS.Module.Scheduler.csproj", "src/Modules/TakeoutSaaS.Module.Scheduler/"]
COPY ["src/Modules/TakeoutSaaS.Module.Sms/TakeoutSaaS.Module.Sms.csproj", "src/Modules/TakeoutSaaS.Module.Sms/"]
COPY ["src/Modules/TakeoutSaaS.Module.Storage/TakeoutSaaS.Module.Storage.csproj", "src/Modules/TakeoutSaaS.Module.Storage/"]
RUN dotnet restore "src/Api/TakeoutSaaS.AdminApi/TakeoutSaaS.AdminApi.csproj"
# Copy the rest of the source after restore for best cache reuse.
COPY . .
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "src/Api/TakeoutSaaS.AdminApi/TakeoutSaaS.AdminApi.csproj" -c $BUILD_CONFIGURATION -o /app/publish --no-restore
FROM mcr.microsoft.com/dotnet/aspnet:10.0 FROM mcr.microsoft.com/dotnet/aspnet:10.0
WORKDIR /app WORKDIR /app
COPY --from=build /app/publish . COPY publish/ .
EXPOSE 7801 EXPOSE 7801
ENV ASPNETCORE_URLS=http://+:7801 ENV ASPNETCORE_URLS=http://+:7801
ENTRYPOINT ["dotnet", "TakeoutSaaS.AdminApi.dll"] ENTRYPOINT ["dotnet", "TakeoutSaaS.AdminApi.dll"]