devops/pipline/prebuild.yml
2025-07-10 14:25:40 +08:00

67 lines
1.4 KiB
YAML

stages:
- prepare
- build
variables:
DOCKER_TAG: "my-app:latest"
CONFIG_ENV: "Development" # можно использовать для генерации appsettings.{ENV}.json
prepare:
stage: prepare
script:
# Генерация Dockerfile
- |
cat <<EOF > Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY . .
RUN dotnet restore
RUN dotnet publish -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
EOF
# Генерация nuget.config
- |
cat <<EOF > nuget.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
EOF
# Генерация appsettings.json
- |
cat <<EOF > appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"Environment": "$CONFIG_ENV"
}
EOF
artifacts:
paths:
- Dockerfile
- nuget.config
- appsettings.json
expire_in: 1 hour
build:
stage: build
script:
- docker build -t $DOCKER_TAG .