diff --git a/build/Dockerfile b/build/Dockerfile new file mode 100644 index 0000000000..d66d3aab02 --- /dev/null +++ b/build/Dockerfile @@ -0,0 +1,37 @@ +FROM microsoft/dotnet:2.1-sdk AS build +WORKDIR /src + +COPY tgstation-server.sln ./ + +COPY src/Tgstation.Server.Host.Console/Tgstation.Server.Host.Console.csproj src/Tgstation.Server.Host.Console/ +COPY src/Tgstation.Server.Host/Tgstation.Server.Host.csproj src/Tgstation.Server.Host/ +COPY src/Tgstation.Server.Api/Tgstation.Server.Api.csproj src/Tgstation.Server.Api/ + +COPY tests/Tgstation.Server.Api.Tests/Tgstation.Server.Api.Tests.csproj tests/Tgstation.Server.Api.Console.Tests/ +COPY tests/Tgstation.Server.Host.Tests/Tgstation.Server.Host.Tests.csproj tests/Tgstation.Server.Host.Console.Tests/ +COPY tests/Tgstation.Server.Host.Console.Tests/Tgstation.Server.Host.Console.Tests.csproj tests/Tgstation.Server.Host.Console.Tests/ + +RUN dotnet restore -nowarn:msb3202,nu1503 + +COPY . . + +WORKDIR /src/src/Tgstation.Server.Host.Console +RUN dotnet build -c Release -o /app + +WORKDIR /src/tests/Tgstation.Server.Api.Tests +RUN dotnet test -c Release + +WORKDIR /src/tests/Tgstation.Server.Host.Tests +RUN dotnet test -c Release + +WORKDIR /src/tests/Tgstation.Server.Host.Console.Tests +RUN dotnet test -c Release + +FROM build AS publish +RUN dotnet publish -c Release -o /app + +FROM microsoft/dotnet:2.1-runtime +EXPOSE 80 +WORKDIR /app +COPY --from=publish /app . +ENTRYPOINT ["dotnet", "Tgstation.Server.Host.Console.dll"] diff --git a/build/docker-compose/.dockerignore b/build/docker-compose/.dockerignore new file mode 100644 index 0000000000..4f1c2ff0b4 --- /dev/null +++ b/build/docker-compose/.dockerignore @@ -0,0 +1,11 @@ +*/.dockerignore +*/docker-compose.yml +*/docker-compose.*.yml +.env +.git +.gitignore +.vs +.vscode +legacy +*/bin +*/obj diff --git a/build/docker-compose/docker-compose.dcproj b/build/docker-compose/docker-compose.dcproj new file mode 100644 index 0000000000..996cb0b18b --- /dev/null +++ b/build/docker-compose/docker-compose.dcproj @@ -0,0 +1,15 @@ + + + + 2.0 + Linux + db2a5ee6-af5c-410c-a36c-ea378fe9cbfe + + + + docker-compose.yml + + + + + \ No newline at end of file diff --git a/build/docker-compose/docker-compose.override.yml b/build/docker-compose/docker-compose.override.yml new file mode 100644 index 0000000000..6bdf591f00 --- /dev/null +++ b/build/docker-compose/docker-compose.override.yml @@ -0,0 +1 @@ +version: '3' diff --git a/build/docker-compose/docker-compose.yml b/build/docker-compose/docker-compose.yml new file mode 100644 index 0000000000..579b20745f --- /dev/null +++ b/build/docker-compose/docker-compose.yml @@ -0,0 +1,8 @@ +version: '3' + +services: + tgstation.server: + image: tgstationserver + build: + context: ../.. + dockerfile: build/Dockerfile diff --git a/tgstation-server.sln b/tgstation-server.sln index 25c76f7da8..4b42b2e615 100644 --- a/tgstation-server.sln +++ b/tgstation-server.sln @@ -13,9 +13,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution README.md = README.md EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tgstation.Server.Host.Console", "src\Tgstation.Server.Host.Console\Tgstation.Server.Host.Console.csproj", "{A09C947F-4B9B-4AEE-AB50-47055EA05F18}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tgstation.Server.Host.Console", "src\Tgstation.Server.Host.Console\Tgstation.Server.Host.Console.csproj", "{A09C947F-4B9B-4AEE-AB50-47055EA05F18}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tgstation.Server.Host.Console.Tests", "tests\Tgstation.Server.Host.Console.Tests\Tgstation.Server.Host.Console.Tests.csproj", "{D36B99C4-E771-42D6-A95F-1102B3E236DF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tgstation.Server.Host.Console.Tests", "tests\Tgstation.Server.Host.Console.Tests\Tgstation.Server.Host.Console.Tests.csproj", "{D36B99C4-E771-42D6-A95F-1102B3E236DF}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{6FF654E6-3E2C-46D4-872D-D528F77D6973}" ProjectSection(SolutionItems) = preProject @@ -25,17 +25,17 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{6FF654E6 build\UploadCoverage.ps1 = build\UploadCoverage.ps1 EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tgstation.Server.Host", "src\Tgstation.Server.Host\Tgstation.Server.Host.csproj", "{2B69AD6D-2B5A-4023-8EAD-0BD1B18E028A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tgstation.Server.Host", "src\Tgstation.Server.Host\Tgstation.Server.Host.csproj", "{2B69AD6D-2B5A-4023-8EAD-0BD1B18E028A}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tgstation.Server.Api", "src\Tgstation.Server.Api\Tgstation.Server.Api.csproj", "{8B4A208D-A48A-4A5D-8B94-E2661138865D}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tgstation.Server.Host.Service", "src\Tgstation.Server.Host.Service\Tgstation.Server.Host.Service.csproj", "{29927416-3B78-49A7-A560-5CCAA638B6B4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tgstation.Server.CommandLine", "src\Tgstation.Server.CommandLine\Tgstation.Server.CommandLine.csproj", "{657C3624-3534-4A0C-B4E7-196FC830F547}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tgstation.Server.CommandLine", "src\Tgstation.Server.CommandLine\Tgstation.Server.CommandLine.csproj", "{657C3624-3534-4A0C-B4E7-196FC830F547}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tgstation.Server.ControlPanel", "src\Tgstation.Server.ControlPanel\Tgstation.Server.ControlPanel.csproj", "{D38BE569-04B7-4C64-BDB5-683767B26FEB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tgstation.Server.Client", "src\Tgstation.Server.Client\Tgstation.Server.Client.csproj", "{E0AC911F-7675-4A91-9499-D8A2E2390AAD}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tgstation.Server.Client", "src\Tgstation.Server.Client\Tgstation.Server.Client.csproj", "{E0AC911F-7675-4A91-9499-D8A2E2390AAD}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tgstation.Server.ControlPanel.Tests", "tests\Tgstation.Server.ControlPanel.Tests\Tgstation.Server.ControlPanel.Tests.csproj", "{93CA946D-50DE-4AD4-BADA-D0353F0AFFCC}" EndProject @@ -49,6 +49,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tgstation.Server.CommandLin EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tgstation.Server.Host.Tests", "tests\Tgstation.Server.Host.Tests\Tgstation.Server.Host.Tests.csproj", "{A3362FF6-550F-480F-859E-8EC1EB6EAB31}" EndProject +Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "build\docker-compose\docker-compose.dcproj", "{DB2A5EE6-AF5C-410C-A36C-EA378FE9CBFE}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -111,6 +113,10 @@ Global {A3362FF6-550F-480F-859E-8EC1EB6EAB31}.Debug|Any CPU.Build.0 = Debug|Any CPU {A3362FF6-550F-480F-859E-8EC1EB6EAB31}.Release|Any CPU.ActiveCfg = Release|Any CPU {A3362FF6-550F-480F-859E-8EC1EB6EAB31}.Release|Any CPU.Build.0 = Release|Any CPU + {DB2A5EE6-AF5C-410C-A36C-EA378FE9CBFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DB2A5EE6-AF5C-410C-A36C-EA378FE9CBFE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB2A5EE6-AF5C-410C-A36C-EA378FE9CBFE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DB2A5EE6-AF5C-410C-A36C-EA378FE9CBFE}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE