2016-04-15 47 views
8

Voglio configurare un contenitore Docker per supportare le build del codice base interamente scritto in C++ e l'applicazione generata viene eseguita solo su Windows.Compilatore Microsoft nella finestra mobile

Per questo scopo, ho bisogno di configurare un contenitore che replica il nostro attuale ambiente di costruzione per supportare le build.

Ho bisogno di creare un qualcosa di Dockerfile come qui di seguito per costruire un tale contenitore:

perche il seguente come una specie di pseudo-codice Dockerfile (ignorare il apt-get e prendere in considerazione qualsiasi altra utilità in Windows per installare gli strumenti da riga di comando):

FROM: Windows10 // A base windows kernel 

RUN apt-get install -y VisualStudio // Installing the Visual Studio for compilation of C++ files 

RUN apt-get install -y cygwin // Since I am using some cygwin utlities in build process 

RUN apt-get install -y SigningTool // A tool I need to sign the exe 

RUN apt-get install -y CompressionTool // A tool I need to compress the exe 

RUN apt-get install -y BuildSystem // Custom in-house build system to generate the builds of the source code 

CMD ['BuildSystem debug'] 

Nota: Abbiamo un sistema personalizzato accumulo (e non usando GNU Make) nella nostra organizzazione per eseguire le generazioni. debug è l'obiettivo fornito al sistema di build, dal momento che voglio creare un eseguibile di debug.

mio dubita sono:

  1. Come posso installare un compilatore VisualStudio (o qualsiasi altro compilatore che gira su Windows)

  2. Come faccio ospitare il SigningTool, CompressionTool e altri eseguibili (su Registro sicuro Docker, se è possibile per ospitare gli eseguibili su DTR)

  3. Come faccio a prendermi cura della licenza degli strumenti di cui sopra (compilatore, signingtool, compressiontool tutti richiedono licenze per l'esecuzione).

Quanto sopra funziona perfettamente nella nostra organizzazione. Ma il processo di configurazione di una macchina (l'installazione e tutti gli strumenti sopra descritti richiedono molto tempo e impegno). Quindi, voglio creare un'immagine Docker che possa essere distribuita su una macchina nuda, che avrà l'intero ambiente di installazione configurato e funzionante in molto meno tempo.

Uno scopo più importante di ciò è adottare la metodologia Continuous Delivery.

Si prega di fornire gli input sullo stesso (prova a considerare tutti i dubbi).

risposta

2

Suppongo che sia possibile eseguire già i contenitori di Windows, ad es.docker run -it microsoft/windowsservercore

Ecco il mio Dockerfile per installare Visual C++ costruire Tools 2015 di contenitore Docker utilizzando Chocolatey:

# escape=` 

FROM microsoft/windowsservercore 

# Install chocolatey 
RUN @powershell -NoProfile -ExecutionPolicy unrestricted -Command "(iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))) >$null 2>&1" 

# Install Visual C++ Build Tools, as per: https://chocolatey.org/packages/visualcpp-build-tools 
RUN choco install visualcpp-build-tools -version 14.0.25420.1 -y 

# Add msbuild to PATH 
RUN setx /M PATH "%PATH%;C:\Program Files (x86)\MSBuild\14.0\bin" 

# Test msbuild can be accessed without path 
RUN msbuild -version 

CMD [ "cmd.exe" ] 

Utilizzando Choco è più semplice, ma è possibile ottenere lo stesso risultato con il download di nativo web installatore ed eseguirlo in modalità non interattiva, ad esempio:

visualcppbuildtools_full.exe /Q /L <LogFile> /Full 
0

in risposta t o il primo punto solo: c'è un documento qui che ho usato come punto di partenza per una maschera di Docker per compilare un'applicazione Windows C++: Install Build Tools into a Container

Sono in esecuzione Docker su Windows Server 2016 e la compilazione di un'applicazione legacy che gli obiettivi XP.

mio eventuale Dockerfile si presentava così:

# Use the latest Windows Server Core image. 
FROM microsoft/windowsservercore 

# Download the Visual Studio 2017 installer outside of the PATH. 
# This is required for Windows SDK 7.1A (XP targetting) 
ADD https://aka.ms/vs/15/release/vs_professional.exe C:\\TEMP\\vs_professional.exe 

# Add C:\Bin to PATH and install Build Tools with components we need 
RUN setx /m PATH "%PATH%;C:\Bin" \ 
&& C:\TEMP\vs_professional.exe --quiet --wait --norestart --nocache \ 
    --add Microsoft.VisualStudio.Component.Static.Analysis.Tools \ 
    --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 \ 
    --add Microsoft.VisualStudio.Component.VC.CMake.Project \ 
    --add Microsoft.VisualStudio.Component.VC.CoreBuildTools \ 
    --add Microsoft.VisualStudio.Component.VC.ATLMFC \ 
    --add Microsoft.VisualStudio.Component.VC.ATL \ 
    --add Microsoft.VisualStudio.Component.Windows10SDK.16299.Desktop \ 
    --add Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP \ 
    --add Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP.Native \ 
    --add Microsoft.VisualStudio.Component.Windows10SDK \ 
    --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Win81 \ 
    --add Microsoft.VisualStudio.Component.VC.Redist.14.Latest \ 
    --add Microsoft.Component.VC.Runtime.UCRTSDK \ 
    --add Microsoft.VisualStudio.Component.WinXP \ 
|| IF "%ERRORLEVEL%"=="3010" EXIT 0 

# Start developer command prompt with any other commands specified. 
ENTRYPOINT "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat" && 

# Default to PowerShell if no other command specified. 
CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"] 
Problemi correlati