diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..62336a50f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,19 @@ +# User-specific files +*.suo +*.user +*.vs + +# Build results +build +bin +obj +publish + +# Test Output +_test-output + +# NodeJS +node_modules + +# Scripts (should be copied from node_modules on build) +**/wwwroot/scripts/**/*.* \ No newline at end of file diff --git a/.gitignore b/.gitignore index 7c8033abb..62336a50f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,253 +1,19 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - # User-specific files *.suo *.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs +*.vs # Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -[Xx]64/ -[Xx]86/ -[Bb]uild/ -bld/ -[Bb]in/ -[Oo]bj/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ +build +bin +obj +publish -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml +# Test Output +_test-output -# TODO: Un-comment the next line if you do not want to checkin -# your web deploy settings because they may include unencrypted -# passwords -#*.pubxml -*.publishproj - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Microsoft Azure ApplicationInsights config file -ApplicationInsights.config - -# Windows Store app package directory -AppPackages/ -BundleArtifacts/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# LightSwitch generated files -GeneratedArtifacts/ -ModelManifest.xml - -# Paket dependency manager -.paket/paket.exe - -# FAKE - F# Make -.fake/ +# NodeJS +node_modules # Scripts (should be copied from node_modules on build) -**/wwwroot/scripts/**/*.* - -# OpenCover -GeneratedReports/ - -_test-output \ No newline at end of file +**/wwwroot/scripts/**/*.* \ No newline at end of file diff --git a/tools/aspnetcore-build-phantomjs/Dockerfile b/Dockerfile.build similarity index 50% rename from tools/aspnetcore-build-phantomjs/Dockerfile rename to Dockerfile.build index e2ac1f7a9..71cac6778 100644 --- a/tools/aspnetcore-build-phantomjs/Dockerfile +++ b/Dockerfile.build @@ -1,5 +1,6 @@ -FROM microsoft/dotnet:1.1.0-sdk-msbuild-rc4 - +FROM microsoft/aspnetcore-build + + # Install runtime dependencies RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates bzip2 libfontconfig \ @@ -24,4 +25,28 @@ RUN set -x \ RUN phantomjs --version -WORKDIR / \ No newline at end of file +COPY src/Squidex/package.json /tmp/package.json +RUN cd /tmp \ +&& npm install \ +&& npm rebuild node-sass + +COPY . . + +WORKDIR / + +# Build Frontend +RUN cp -a /tmp/node_modules /src/Squidex/ \ + && cd /src/Squidex \ + && npm run build:copy \ + && npm run build \ + && npm run test:coverage + +# Test Backend +RUN dotnet restore \ + && dotnet test tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj \ + && dotnet test tests/Squidex.Core.Tests/Squidex.Core.Tests.csproj \ + && dotnet test tests/Squidex.Read.Tests/Squidex.Read.Tests.csproj \ + && dotnet test tests/Squidex.Write.Tests/Squidex.Write.Tests.csproj + +# Publish +RUN dotnet publish src/Squidex/Squidex.csproj --output /out/ --configuration Release \ No newline at end of file diff --git a/build.docker-compose.yml b/build.docker-compose.yml deleted file mode 100644 index f2dbce873..000000000 --- a/build.docker-compose.yml +++ /dev/null @@ -1,10 +0,0 @@ -version: '2' -services: - squidex-build: -# Use custom aspnet images where phantomjs is installed - build: tools/aspnetcore-build-phantomjs - volumes: - - .:/sln - working_dir: /sln -# Run the build script on local folder - entrypoint: ["sh", "./build.sh"] \ No newline at end of file diff --git a/build.ps1 b/build.ps1 new file mode 100644 index 000000000..011c72ec0 --- /dev/null +++ b/build.ps1 @@ -0,0 +1,11 @@ +# Build the image +docker build . -t build-image -f Dockerfile.build + +# Open the image +docker create --name build-cont build-image + +# Copy the output to the host file system +docker cp build-cont:/out ./publish + +# Cleanup +docker rm build-cont \ No newline at end of file diff --git a/build.sh b/build.sh deleted file mode 100644 index bd61f351d..000000000 --- a/build.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!bin/bash -set -e -cd src/Squidex -npm install -npm rebuild node-sass -npm rebuild phantomjs-prebuilt -npm run test:coverage -npm run build:copy -npm run build -cd ./../.. -dotnet restore -dotnet test tests/Squidex.Core.Tests/Squidex.Core.Tests.csproj -dotnet test tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj -dotnet test tests/Squidex.Read.Tests/Squidex.Read.Tests.csproj -dotnet test tests/Squidex.Write.Tests/Squidex.Write.Tests.csproj -rm -rf $(pwd)/publish/web -dotnet publish src/Squidex/Squidex.csproj -c release -o $(pwd)/publish/web \ No newline at end of file diff --git a/src/Squidex/Squidex.csproj b/src/Squidex/Squidex.csproj index 2b1a06aec..83221855e 100644 --- a/src/Squidex/Squidex.csproj +++ b/src/Squidex/Squidex.csproj @@ -15,7 +15,6 @@ - PreserveNewest