perf: build on host for faster incremental compilation
Some checks failed
Build and Deploy AdminApi / build-and-deploy (push) Has been cancelled
Some checks failed
Build and Deploy AdminApi / build-and-deploy (push) Has been cancelled
This commit is contained in:
@@ -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: |
|
||||||
|
|||||||
@@ -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"]
|
||||||
|
|||||||
Reference in New Issue
Block a user