|
1 | 1 | # escape=`
|
2 |
| -ARG JAVA_VERSION=21-jdk |
3 | 2 | ARG JAVA17_IMAGE_VERSION=3206.vb_15dcf73f6a_9-2
|
4 | 3 | ARG PYTHON_VERSION=3.12.2
|
5 | 4 |
|
6 |
| -FROM python:"${PYTHON_VERSION}"-windowsservercore-1809 AS python |
| 5 | +FROM python:"${PYTHON_VERSION}"-windowsservercore-1809 AS python-core |
| 6 | + |
| 7 | +# ProgressPreference => Disable Progress bar for faster downloads |
| 8 | +SHELL ["powershell.exe", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] |
7 | 9 |
|
8 | 10 | # hadolint ignore=DL3013
|
9 | 11 | RUN "C:/Python/python.exe" -m pip install --no-cache-dir --upgrade pip; `
|
10 | 12 | pip install --no-cache-dir setuptools wheel;
|
11 | 13 |
|
12 |
| -## Comment out once temurin publishes an official JDK21 container image |
13 |
| -#FROM eclipse-temurin:${JAVA_VERSION}-jdk-windowsservercore-1809 AS core |
| 14 | +# Adding jdk21 from Adoptium installers |
| 15 | +ARG JAVA_VERSION=jdk-21+35 |
| 16 | +RUN New-Item -ItemType Directory -Path C:\temp | Out-Null ; ` |
| 17 | + $msiUrl = 'https://api.adoptium.net/v3/installer/version/{0}/windows/x64/jdk/hotspot/normal/eclipse?project=jdk' -f $env:JAVA_VERSION.Replace('+', '%2B') ; ` |
| 18 | + Invoke-WebRequest $msiUrl -OutFile 'C:\temp\jdk.msi' ; ` |
| 19 | + $proc = Start-Process -FilePath 'msiexec.exe' -ArgumentList '/i', 'C:\temp\jdk.msi', '/L*V', 'C:\temp\OpenJDK.log', '/quiet', 'ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome', 'INSTALLDIR=C:\javaruntime' -Wait -Passthru ; ` |
| 20 | + $proc.WaitForExit() ; ` |
| 21 | + Remove-Item -Path C:\temp -Recurse | Out-Null |
| 22 | + |
14 | 23 | # Use inbound-agent's jdk17 only for running jenkins agent, not as default java
|
15 | 24 | FROM jenkins/inbound-agent:"${JAVA17_IMAGE_VERSION}"-jdk17-nanoserver-1809
|
16 | 25 |
|
17 | 26 | # ProgressPreference => Disable Progress bar for faster downloads
|
18 | 27 | SHELL ["pwsh.exe", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
|
19 | 28 |
|
20 |
| -ARG toolsDir="C:\tools" |
21 |
| -ARG pythonDir="$toolsDir\python" |
22 |
| - |
23 |
| -ENV PYTHON_PATH="$pythonDir" |
24 |
| -ENV PATH="${pythonDir};${pythonDir}\Scripts;${PATH}" |
25 |
| - |
26 | 29 | # Adding python
|
27 |
| -COPY --from=python C:/Python $pythonDir |
| 30 | +COPY --from=python-core C:/Python C:/tools/python |
28 | 31 |
|
29 | 32 | # Install Launchable in this layer
|
30 | 33 | ARG LAUNCHABLE_VERSION=1.66.0
|
31 |
| -RUN python.exe -m pip install --no-cache-dir launchable=="${env:LAUNCHABLE_VERSION}"; |
32 |
| - |
33 |
| -# Retrieve jdk17 for running jenkins agent process but do not use it as default |
34 |
| -# Use ENV and not ARG : https://docs.docker.com/engine/reference/builder/#using-arg-variables |
35 |
| -ENV JAVA_HOME="$toolsDir\jdk-21" |
36 |
| -ENV PATH="${JAVA_HOME}\bin;${PATH}" |
| 34 | +RUN "C:/tools/python/python.exe" -m pip install --no-cache-dir launchable=="${env:LAUNCHABLE_VERSION}"; |
37 | 35 |
|
38 |
| -## Remove once temurin publishes an official JDK21 container image |
39 |
| -ARG jdk21Version="2023-08-09-06-56-beta" |
40 |
| -# From https://github.com/jenkins-infra/packer-images/blob/f02d850cb1ce74f4cf2a03af90a5ccd06925cb5c/provisioning/windows-provision.ps1#L126 |
41 |
| -RUN $jdk21Url = 'https://github.com/adoptium/temurin21-binaries/releases/download/jdk21-{0}/OpenJDK21U-jdk_x64_windows_hotspot_{1}.zip' -f [System.Web.HTTPUtility]::UrlEncode($env:jdk21Version),$env:jdk21Version.Replace('-beta', ''); ` |
42 |
| - Invoke-WebRequest -Uri "$jdk21Url" -OutFile "${env:TEMP}/temurin21.zip"; ` |
43 |
| - Expand-Archive -Path "${env:TEMP}/temurin21.zip" -Destination "${env:toolsDir}" ; ` |
44 |
| - Remove-Item ${env:TEMP}/temurin21.zip; ` |
45 |
| - Move-Item -Path "${env:toolsDir}\jdk-21*" -Destination "${env:JAVA_HOME}"; |
46 |
| - |
47 |
| -## Comment out once temurin publishes an official JDK21 container image |
48 |
| -#COPY --from=core C:/openjdk-21 "${JAVA_HOME}" |
| 36 | +ENV JAVA_HOME="C:\tools\jdk-21" |
| 37 | +COPY --from=python-core C:/javaruntime $JAVA_HOME |
49 | 38 |
|
50 | 39 | # https://github.com/StefanScherer/dockerfiles-windows/tree/master/golang-issue-21867
|
51 |
| -COPY --from=python C:/windows/system32/netapi32.dll C:/windows/system32/netapi32.dll |
| 40 | +COPY --from=python-core C:/windows/system32/netapi32.dll C:/windows/system32/netapi32.dll |
| 41 | +COPY --from=python-core C:/windows/system32/whoami.exe C:/windows/system32/whoami.exe |
52 | 42 |
|
53 | 43 | ARG MAVEN_VERSION=3.9.6
|
54 | 44 | RUN Invoke-WebRequest -Uri "https://archive.apache.org/dist/maven/maven-3/${env:MAVEN_VERSION}/binaries/apache-maven-${env:MAVEN_VERSION}-bin.zip" -OutFile ${env:TEMP}/apache-maven.zip ; `
|
55 | 45 | Expand-Archive -Path "${env:TEMP}/apache-maven.zip -Destination" C:/tools ; `
|
56 | 46 | Remove-Item ${env:TEMP}/apache-maven.zip ;
|
| 47 | + |
| 48 | +ENV PYTHON_PATH="C:\tools\python;C:\tools\python\Scripts" |
57 | 49 | ENV MAVEN_HOME="C:\tools\apache-maven-${MAVEN_VERSION}"
|
58 |
| -ENV PATH="${MAVEN_HOME}\bin;${PATH}" |
| 50 | +ENV PATH="${PYTHON_PATH};${JAVA_HOME}\bin;${PATH};${MAVEN_HOME}\bin;" |
0 commit comments