diff options
-rw-r--r-- | .travis.yml | 30 | ||||
-rw-r--r-- | docker-compose.yml | 17 | ||||
-rw-r--r-- | docker/docker.qbs | 1 | ||||
-rw-r--r-- | docker/windowsservercore/Dockerfile | 78 | ||||
-rw-r--r-- | docker/windowsservercore/build-qt.bat | 23 |
5 files changed, 87 insertions, 62 deletions
diff --git a/.travis.yml b/.travis.yml index 53af0534b..4add585f1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -116,6 +116,36 @@ jobs: osx_image: xcode9.4 if: branch = master + - &build-on-windows-with-docker + stage: Build Qbs and and run autotests + name: With Qbs on Windows with Docker (Visual Studio 2017) + if: branch = master + os: windows + services: docker + env: + CLCACHE_DIR="${HOME}/.ccache" + before-install: + - curl -sLo "/c/Program Files/Docker/docker-compose.exe" https://github.com/docker/compose/releases/download/1.25.3/docker-compose-Windows-x86_64.exe + - docker-compose pull windows + before_script: + - docker-compose run --rm windows clcache -s + script: + - > + docker-compose run --rm windows qbs build + -p dist + qbs.buildVariant:release + modules.cpp.compilerWrapper:clcache + modules.qbsbuildconfig.enableBundledQt:true + modules.qbsbuildconfig.enableProjectFileUpdates:true + modules.qbsbuildconfig.enableUnitTests:true + modules.cpp.treatWarningsAsErrors:true + project.withDocumentation:true + project.withExamples:true + config:release-64 profile:qt64 + config:release profile:qt + after_script: + - docker-compose run --rm windows clcache -s + - &build-on-windows stage: Build Qbs and and run autotests name: With Qbs on Windows (Visual Studio 2017) diff --git a/docker-compose.yml b/docker-compose.yml index 6ca7a3046..198de4b56 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -53,3 +53,20 @@ services: args: QT_VERSION: 5.12.4 QTCREATOR_VERSION: 4.9.2 + + windows: + image: ${DOCKER_USER:-qbsbuild}/qbsdev:windowsservercore-5.12.7_1.15.0-0 + build: + dockerfile: docker/windowsservercore/Dockerfile + context: . + args: + QT_VERSION: 5.12.7 + QBS_VERSION: 1.15.0 + working_dir: 'C:/qbs' + environment: + - BUILD_OPTIONS + - WITH_DOCS + volumes: + - .:C:\qbs + - ~/.ccache:C:\.ccache + network_mode: nat diff --git a/docker/docker.qbs b/docker/docker.qbs index 5adc277e4..752c61d3b 100644 --- a/docker/docker.qbs +++ b/docker/docker.qbs @@ -29,7 +29,6 @@ Project { files: [ "windowsservercore/Dockerfile", - "windowsservercore/build-qt.bat", ] } } diff --git a/docker/windowsservercore/Dockerfile b/docker/windowsservercore/Dockerfile index 43cf93736..be3777aa0 100644 --- a/docker/windowsservercore/Dockerfile +++ b/docker/windowsservercore/Dockerfile @@ -1,49 +1,51 @@ -FROM microsoft/windowsservercore:10.0.14393.1884 as build-env + +FROM mcr.microsoft.com/windows/servercore:1809 LABEL Description="Windows Server Core development environment for Qbs with Qt, Chocolatey and various dependencies for testing Qbs modules and functionality" # Disable crash dialog for release-mode runtimes RUN reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting" /v Disabled /t REG_DWORD /d 1 /f RUN reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting" /v DontShowUI /t REG_DWORD /d 1 /f -RUN @powershell -NoProfile -ExecutionPolicy Bypass -Command \ +RUN powershell -NoProfile -ExecutionPolicy Bypass -Command \ $Env:chocolateyVersion = '0.10.8' ; \ $Env:chocolateyUseWindowsCompression = 'false' ; \ - "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" -RUN choco install -y python2 --version 2.7.14 && refreshenv && python --version && pip --version -RUN choco install -y vcredist140 -RUN choco install -y qbs --version 1.12.1 && qbs --version -RUN choco install -y visualcpp-build-tools --version 14.0.25420.1 && dir "%PROGRAMFILES(X86)%\Microsoft Visual C++ Build Tools" -RUN choco install -y unzip --version 6.0 -RUN choco install -y zip --version 3.0 - - -FROM build-env as qt-build-env -LABEL Description="Environment for Building Qt" -RUN choco install -y jom --version 1.1.2 && jom /version - -# Download and extract Qt source archives -WORKDIR C:/ -RUN md src -WORKDIR src -COPY build-qt.bat . -ADD http://download.qt.io/official_releases/qt/5.12/5.12.5/submodules/qtbase-everywhere-src-5.12.5.zip qtbase.zip -ADD http://download.qt.io/official_releases/qt/5.12/5.12.5/submodules/qtscript-everywhere-src-5.12.5.zip qtscript.zip -ADD http://download.qt.io/official_releases/qt/5.12/5.12.5/submodules/qttools-everywhere-src-5.12.5.zip qttools.zip -RUN unzip qtbase.zip -RUN unzip qtscript.zip -RUN unzip qttools.zip -RUN rename qtbase-everywhere-src-5.12.5 qtbase -RUN rename qtscript-everywhere-src-5.12.5 qtscript -RUN rename qttools-everywhere-src-5.12.5 qttools -RUN build-qt.bat x86 -RUN build-qt.bat x64 - - -FROM build-env as qbs-build-env -WORKDIR C:/ -COPY --from=qt-build-env C:/Qt C:/Qt/ -ENV QTDIR C:\\Qt\\x86 -ENV QTDIR64 C:\\Qt\\x64 + "[Net.ServicePointManager]::SecurityProtocol = \"tls12, tls11, tls\"; iex ((New-Object System.Net.WebClient).DownloadString('http://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" + +# Wait for vs_installer.exe, vs_installerservice.exe +# or vs_installershell.exe because choco doesn't +RUN powershell -NoProfile -InputFormat None -Command \ + choco install visualcpp-build-tools --version 15.0.26228.20170424 -y; \ + Write-Host 'Waiting for Visual C++ Build Tools to finish'; \ + Wait-Process -Name vs_installer + +ARG QBS_VERSION +RUN choco install -y python && \ + choco install -y 7zip --version 19.0 && \ + choco install -y git --version 2.24.0 --params "/GitAndUnixToolsOnPath" && \ + choco install -y qbs --version %QBS_VERSION% # for building the documentation RUN pip install beautifulsoup4 lxml + +# clcache for speeding up MSVC builds +ENV CLCACHE_DIR="C:/.ccache" +RUN certutil -generateSSTFromWU roots.sst && \ + certutil -addstore -f root roots.sst && \ + del roots.sst && \ + pip install --trusted-host=pypi.org \ + git+https://github.com/frerich/clcache.git@cae73d8255d78db8ba11e23c51fd2c9a89e7475b + +########### Install Qt ############# +ARG QT_VERSION +COPY scripts/install-qt.sh install-qt.sh + +RUN bash -c "./install-qt.sh -d /c/Qt --version ${QT_VERSION} --toolchain win64_msvc2017_64 qtbase qtdeclarative qttools qtscript" +ENV QTDIR64=C:\\Qt\\${QT_VERSION}\\msvc2017_64 + +RUN bash -c "./install-qt.sh -d /c/Qt --version ${QT_VERSION} --toolchain win32_msvc2017 qtbase qtdeclarative qttools qtscript" +ENV QTDIR=C:\\Qt\\${QT_VERSION}\\msvc2017 + +RUN qbs setup-toolchains --detect && \ + qbs setup-qt %QTDIR64%/bin/qmake.exe qt64 && \ + qbs setup-qt %QTDIR%/bin/qmake.exe qt && \ + qbs config defaultProfile qt64 diff --git a/docker/windowsservercore/build-qt.bat b/docker/windowsservercore/build-qt.bat deleted file mode 100644 index 0d7f432e6..000000000 --- a/docker/windowsservercore/build-qt.bat +++ /dev/null @@ -1,23 +0,0 @@ -setlocal -set ARCH=%1 -call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %ARCH% -md %ARCH% -cd %ARCH% -md qtbase -cd qtbase -call C:\src\qtbase\configure -opensource -confirm-license -prefix C:\Qt\%ARCH% -opengl desktop -release -nomake tests -nomake examples -jom -jom install -cd .. -md qttools\src\windeployqt -cd qttools\src\windeployqt -C:\Qt\%ARCH%\bin\qmake C:\src\qttools\src\windeployqt\windeployqt.pro -jom -jom install -cd .. -md qtscript -cd qtscript -C:\Qt\%ARCH%\bin\qmake C:\src\qtscript\qtscript.pro -jom -jom install -endlocal |