-
Notifications
You must be signed in to change notification settings - Fork 1
/
Dockerfile
84 lines (72 loc) · 3.36 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# escape=`
ARG PIPX_HOME=c:\pipx
ARG VS_INSTALL_PATH="C:\BuildTools"
ARG PIP_EXTRA_INDEX_URL
ARG PIP_INDEX_URL
ARG FROM_IMAGE=mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019
FROM ${FROM_IMAGE} as certsgen
RUN certutil -generateSSTFromWU roots.sst
FROM ${FROM_IMAGE} as BASE_BUILDER
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]
COPY ci/docker/windows/tox/msvc/startup.bat c:/startup/startup.bat
COPY ci/docker/windows/tox/msvc/visual_studio_config.json c:/setup/config.vsconfig
COPY ci/docker/windows/tox/msvc/install_msvc.ps1 c:/scripts/install_msvc.ps1
ARG VS_INSTALL_PATH
RUN c:/scripts/install_msvc.ps1 ${Env:VS_INSTALL_PATH} c:/setup/config.vsconfig; `
Get-ChildItem C:\Users\ContainerAdministrator\AppData\Local\Temp | Remove-Item -Recurse -Force -Verbose
ARG CHOCOLATEY_SOURCE=https://chocolatey.org/api/v2
ARG ChocolateyEnvironmentDebug=false
COPY ci/docker/windows/tox/chocolatey/install_choco.ps1 choco/install_choco.ps1
ARG chocolateyVersion
RUN Set-ExecutionPolicy Bypass -Scope Process -Force; `
./choco/install_choco.ps1 ; `
if( -not ([string]::IsNullOrEmpty($Env:CHOCOLATEY_SOURCE ))) `
{ `
Write-Host "Adding $env:CHOCOLATEY_SOURCE to chocolatey sources" ; `
choco source add -n=CHOCOLATEY_SOURCE --priority=1 -s=\"${env:CHOCOLATEY_SOURCE}\"; `
}; `
Write-Host "Disabling Showing Download Progress" ; `
choco feature disable -n=showDownloadProgress ; `
Remove-Item -Force -Recurse ${Env:TEMP}\*
ADD ci/docker/windows/tox/chocolatey/python.xml choco/python.config
RUN C:\ProgramData\chocolatey\bin\choco.exe install -y --stoponfirstfailure --no-progress --verbose choco/python.config ;`
Remove-Item C:\Users\ContainerAdministrator\AppData\Local\Temp\chocolatey -Recurse ; `
refreshenv ; `
Remove-Item -Force -Recurse ${Env:TEMP}\* ; `
py --list ;`
Write-Host "Installing Python with Chocolatey - Done"
ADD ci/docker/windows/tox/chocolatey/packages.xml choco/packages.config
RUN C:\ProgramData\chocolatey\bin\choco.exe sources ; `
C:\ProgramData\chocolatey\bin\choco.exe install -y --stoponfirstfailure --no-progress --verbose choco/packages.config ;`
Remove-Item C:\Users\ContainerAdministrator\AppData\Local\Temp\chocolatey -Recurse ; `
refreshenv ; `
Remove-Item -Force -Recurse ${Env:TEMP}\* ; `
if (!(Test-Path 'C:\Program Files\Git\cmd\git.exe')) `
{ `
throw 'git.exe not found' ; `
}; `
Write-Host "Finished install packages with Chocolatey"
# ==============================================================================
#
FROM BASE_BUILDER
COPY --from=certsgen c:/roots.sst roots.sst
RUN certutil -addstore -f root roots.sst ; `
del roots.sst
ARG PIP_EXTRA_INDEX_URL
ARG PIP_INDEX_URL
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]
COPY requirements-ci.txt c:/python_requirements/
COPY requirements/ c:/python_requirements/requirements
RUN python -m pip install pip --upgrade ; `
pip install wheel ; `
pip install -r c:\python_requirements\requirements-ci.txt
ARG PIPX_HOME
ENV PIPX_HOME=${PIPX_HOME}
ENV PIPX_BIN_DIR=${PIPX_HOME}\bin
RUN py -3 -m pip install --no-cache-dir pipx ; `
py -3 -m pipx ensurepath
RUN py -3 -m pipx install 'devpi-client<7.0'
ENV PIP_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL}
ENV PIP_INDEX_URL=${PIP_INDEX_URL}
WORKDIR C:/src
CMD tox --workdir ${Env:TEMP}\tox\ -vv --recreate -p=auto