Skip to content

Commit 03126c1

Browse files
authored
Deprecate Mariner 2.0 (#123)
* Update distroless images to Azurelinux 3.0 * Mariner now points to Azurelinux * Remove mariner build * Test local build without pushing * Fix typo * echo build command * test registries * Use runtime expressions * Add mariner to REGISTRIES variable if Azure Linux is selected * Embeed mariner signing trigger into trigger job * Fix typo * Add support for mariner distribution * Enable image push * Remove multiple signing for azurelinux/mariner * Fix variable separator typo * Fix distroless releasever * Update distroless temurin to Azure Linux 3 * Code sugestion * Merge Distroless with Azure Linux 3.0 (#122)
1 parent f0053d3 commit 03126c1

File tree

8 files changed

+125
-100
lines changed

8 files changed

+125
-100
lines changed

.devops/build.yml

Lines changed: 36 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,15 @@ parameters:
3232
package: temurin-8
3333
image: "image-repository"
3434
tag: "3.0"
35-
mariner_8:
36-
new_LTS_image: false
37-
distro: mariner
38-
version: 8
39-
package: temurin-8
40-
image: "image-repository"
41-
tag: "2.0"
4235
distroless_8:
4336
new_LTS_image: false
4437
distro: distroless
4538
version: 8
4639
package: temurin-8
4740
installer_image: "image-repository"
48-
installer_tag: "2.0"
41+
installer_tag: "3.0"
4942
base_image: "image-repository"
50-
base_tag: "2.0"
43+
base_tag: "3.0"
5144
ubuntu_11:
5245
new_LTS_image: false
5346
distro: ubuntu
@@ -62,22 +55,15 @@ parameters:
6255
package: msopenjdk-11
6356
image: "image-repository"
6457
tag: "3.0"
65-
mariner_11:
66-
new_LTS_image: false
67-
distro: mariner
68-
version: 11
69-
package: msopenjdk-11
70-
image: "image-repository"
71-
tag: "2.0"
7258
distroless_11:
7359
new_LTS_image: false
7460
distro: distroless
7561
version: 11
7662
package: msopenjdk-11
7763
installer_image: "image-repository"
78-
installer_tag: "2.0"
64+
installer_tag: "3.0"
7965
base_image: "image-repository"
80-
base_tag: "2.0"
66+
base_tag: "3.0"
8167
ubuntu_17:
8268
new_LTS_image: false
8369
distro: ubuntu
@@ -92,22 +78,15 @@ parameters:
9278
package: msopenjdk-17
9379
image: "image-repository"
9480
tag: "3.0"
95-
mariner_17:
96-
new_LTS_image: false
97-
distro: mariner
98-
version: 17
99-
package: msopenjdk-17
100-
image: "image-repository"
101-
tag: "2.0"
10281
distroless_17:
10382
new_LTS_image: false
10483
distro: distroless
10584
version: 17
10685
package: msopenjdk-17
10786
installer_image: "image-repository"
108-
installer_tag: "2.0"
87+
installer_tag: "3.0"
10988
base_image: "image-repository"
110-
base_tag: "2.0"
89+
base_tag: "3.0"
11190
ubuntu_21:
11291
new_LTS_image: false
11392
distro: ubuntu
@@ -122,22 +101,15 @@ parameters:
122101
package: msopenjdk-21
123102
image: "image-repository"
124103
tag: "3.0"
125-
mariner_21:
126-
new_LTS_image: false
127-
distro: mariner
128-
version: 21
129-
package: msopenjdk-21
130-
image: "image-repository"
131-
tag: "2.0"
132104
distroless_21:
133105
new_LTS_image: false
134106
distro: distroless
135107
version: 21
136108
package: msopenjdk-21
137109
installer_image: "image-repository"
138-
installer_tag: "2.0"
110+
installer_tag: "3.0"
139111
base_image: "image-repository"
140-
base_tag: "2.0"
112+
base_tag: "3.0"
141113

142114
resources:
143115
repositories:
@@ -180,6 +152,16 @@ extends:
180152
FEED: ${{ parameters.feed }}
181153
NAME: ${{ parameters.package }}
182154

155+
- bash: |
156+
REGISTRIES=msopenjdk.azurecr.io/internal/private/openjdk/jdk:$(version)-$(distro)
157+
if [[ "$(distro)" == "azurelinux" ]]; then
158+
REGISTRIES+=";msopenjdk.azurecr.io/internal/private/openjdk/jdk:$(version)-mariner"
159+
elif [[ "$(distro)" == "mariner" ]]; then
160+
REGISTRIES="msopenjdk.azurecr.io/internal/private/openjdk/jdk:$(version)-mariner-cm2"
161+
fi
162+
echo "##vso[task.setvariable variable=REGISTRIES]$REGISTRIES"
163+
displayName: Set REGISTRIES variable
164+
183165
- task: AzureCLI@2
184166
displayName: Annotate previous image
185167
condition: ne( variables['new_LTS_image'], true)
@@ -190,7 +172,7 @@ extends:
190172
scriptPath: $(Build.SourcesDirectory)/scripts/image-annotation.sh
191173
env:
192174
ACR_NAME: msopenjdk
193-
REGISTRY: msopenjdk.azurecr.io/internal/private/openjdk/jdk:$(version)-$(distro)
175+
REGISTRIES: $(REGISTRIES)
194176
- task: AzureCLI@2
195177
inputs:
196178
azureSubscription: "JEG-Infrastructure"
@@ -199,7 +181,7 @@ extends:
199181
scriptPath: $(Build.SourcesDirectory)/scripts/build-image.sh
200182
displayName: build image
201183
env:
202-
REGISTRY_TAG: msopenjdk.azurecr.io/internal/private/openjdk/jdk:$(version)-$(distro)
184+
REGISTRY_TAGS: $(REGISTRIES)
203185
IMAGE: $(image)
204186
TAG: $(tag)
205187
PACKAGE: $(package)
@@ -246,6 +228,19 @@ extends:
246228
FEED: ${{ parameters.feed }}
247229
NAME: ${{ parameters.package }}
248230

231+
- bash: |
232+
REGISTRIES=msopenjdk.azurecr.io/public/openjdk/jdk:$(version)-$(distro)
233+
TAGS="$(version)-$(distro)"
234+
if [[ "$(distro)" == "azurelinux" ]]; then
235+
REGISTRIES+=";msopenjdk.azurecr.io/public/openjdk/jdk:$(version)-mariner"
236+
elif [[ "$(distro)" == "mariner" ]]; then
237+
REGISTRIES="msopenjdk.azurecr.io/public/openjdk/jdk:$(version)-mariner-cm2"
238+
TAGS="$(version)-mariner-cm2"
239+
fi
240+
echo "##vso[task.setvariable variable=REGISTRIES]$REGISTRIES"
241+
echo "##vso[task.setvariable variable=TAGS]$TAGS"
242+
displayName: Set environment variables
243+
249244
- task: AzureCLI@2
250245
displayName: Annotate previous image
251246
condition: ne( variables['new_LTS_image'], true)
@@ -256,7 +251,7 @@ extends:
256251
scriptPath: $(Build.SourcesDirectory)/scripts/image-annotation.sh
257252
env:
258253
ACR_NAME: msopenjdk
259-
REGISTRY: msopenjdk.azurecr.io/public/openjdk/jdk:$(version)-$(distro)
254+
REGISTRIES: $(REGISTRIES)
260255

261256
- task: AzureCLI@2
262257
inputs:
@@ -266,7 +261,7 @@ extends:
266261
scriptPath: scripts/build-image.sh
267262
displayName: build image
268263
env:
269-
REGISTRY_TAG: msopenjdk.azurecr.io/public/openjdk/jdk:$(version)-$(distro)
264+
REGISTRY_TAGS: $(REGISTRIES)
270265
IMAGE: $(image)
271266
TAG: $(tag)
272267
PACKAGE: $(package)
@@ -288,6 +283,6 @@ extends:
288283
--org ${{ parameters.organization }} \
289284
--project $(OPENJDK_PROJECT) \
290285
--id $(OPENJDK_SIGNING_ID) \
291-
--parameters openjdk_tags="- $(version)-$(distro)" \
286+
--parameters openjdk_tags="[$(TAGS)]" \
292287
image_registry="msopenjdk.azurecr.io/public/openjdk" \
293288
image_name="jdk"

.github/workflows/build-images.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
runs-on: ubuntu-latest
1818
strategy:
1919
matrix:
20-
baseimage: ["azurelinux", "mariner", "distroless"]
20+
baseimage: ["azurelinux", "distroless"]
2121

2222
steps:
2323
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -37,7 +37,7 @@ jobs:
3737
fail-fast: false
3838
matrix:
3939
jdkversion: [11, 17, 21] # Only build LTS releases
40-
baseimage: ["azurelinux", "mariner", "ubuntu", "distroless"]
40+
baseimage: ["azurelinux", "ubuntu", "distroless"]
4141

4242
steps:
4343
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

docker/distroless/Dockerfile.msopenjdk-11-jdk

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,29 @@
1-
ARG INSTALLER_IMAGE="mcr.microsoft.com/cbl-mariner/base/core"
2-
ARG INSTALLER_TAG="2.0"
3-
ARG BASE_IMAGE="mcr.microsoft.com/cbl-mariner/distroless/base"
4-
ARG BASE_TAG="2.0"
1+
ARG LINUX_VERSION="3.0"
2+
ARG JDK_VERSION="11"
3+
ARG INSTALLER_IMAGE="mcr.microsoft.com/azurelinux/base/core"
4+
ARG INSTALLER_TAG="${LINUX_VERSION}"
5+
ARG BASE_IMAGE="mcr.microsoft.com/azurelinux/distroless/base"
6+
ARG BASE_TAG="${LINUX_VERSION}"
57

68
FROM ${INSTALLER_IMAGE}:${INSTALLER_TAG} AS installer
79

8-
ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-11-linux-ARCH.tar.gz"
10+
# Redeclare ARG to make it available in this build stage
11+
ARG INSTALLER_TAG
12+
ARG JDK_VERSION
13+
ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-${JDK_VERSION}-linux-ARCH.tar.gz"
914

1015
# Add dynamically linked packages: zlib
1116
# Distroless base image already has tzdata ca-certificates openssl glibc
1217
# Create a non-root user and group (just like .NET's image)
1318
RUN mkdir /staging \
1419
&& tdnf update -y \
15-
&& tdnf install -y --releasever=2.0 --installroot /staging zlib \
20+
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib \
1621
&& tdnf install -y gawk shadow-utils ca-certificates tar \
1722
&& groupadd --system --gid=101 app \
18-
&& adduser --uid 101 --gid 101 --shell /bin/false --system app \
23+
&& useradd -l --uid=101 --gid=101 --shell /bin/false --system --create-home app \
1924
&& install -d -m 0755 -o 101 -g 101 "/staging/home/app" \
20-
&& rootOrAppRegex='^\(root\|app\):' \
21-
&& cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \
22-
&& cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group"
25+
&& cat /etc/passwd | grep '^\(root\|app\):' > "/staging/etc/passwd" \
26+
&& cat /etc/group | grep '^\(root\|app\):' > "/staging/etc/group"
2327

2428
# Get JDK
2529
RUN mkdir -p /usr/lib/jvm && \
@@ -57,3 +61,4 @@ ENV JAVA_HOME=/usr/jdk
5761
ENV PATH="$PATH:$JAVA_HOME/bin"
5862

5963
ENTRYPOINT [ "/usr/jdk/bin/java" ]
64+
CMD [ "-version" ]

docker/distroless/Dockerfile.msopenjdk-17-jdk

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,29 @@
1-
ARG INSTALLER_IMAGE="mcr.microsoft.com/cbl-mariner/base/core"
2-
ARG INSTALLER_TAG="2.0"
3-
ARG BASE_IMAGE="mcr.microsoft.com/cbl-mariner/distroless/base"
4-
ARG BASE_TAG="2.0"
1+
ARG LINUX_VERSION="3.0"
2+
ARG JDK_VERSION="17"
3+
ARG INSTALLER_IMAGE="mcr.microsoft.com/azurelinux/base/core"
4+
ARG INSTALLER_TAG="${LINUX_VERSION}"
5+
ARG BASE_IMAGE="mcr.microsoft.com/azurelinux/distroless/base"
6+
ARG BASE_TAG="${LINUX_VERSION}"
57

68
FROM ${INSTALLER_IMAGE}:${INSTALLER_TAG} AS installer
79

8-
ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-17-linux-ARCH.tar.gz"
10+
# Redeclare ARG to make it available in this build stage
11+
ARG INSTALLER_TAG
12+
ARG JDK_VERSION
13+
ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-${JDK_VERSION}-linux-ARCH.tar.gz"
914

1015
# Add dynamically linked packages: zlib
1116
# Distroless base image already has tzdata ca-certificates openssl glibc
1217
# Create a non-root user and group (just like .NET's image)
1318
RUN mkdir /staging \
1419
&& tdnf update -y \
15-
&& tdnf install -y --releasever=2.0 --installroot /staging zlib \
20+
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib \
1621
&& tdnf install -y gawk shadow-utils ca-certificates tar \
1722
&& groupadd --system --gid=101 app \
18-
&& adduser --uid 101 --gid 101 --shell /bin/false --system app \
23+
&& useradd -l --uid=101 --gid=101 --shell /bin/false --system --create-home app \
1924
&& install -d -m 0755 -o 101 -g 101 "/staging/home/app" \
20-
&& rootOrAppRegex='^\(root\|app\):' \
21-
&& cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \
22-
&& cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group"
25+
&& cat /etc/passwd | grep '^\(root\|app\):' > "/staging/etc/passwd" \
26+
&& cat /etc/group | grep '^\(root\|app\):' > "/staging/etc/group"
2327

2428
# Get JDK
2529
RUN mkdir -p /usr/lib/jvm && \
@@ -57,3 +61,4 @@ ENV JAVA_HOME=/usr/jdk
5761
ENV PATH="$PATH:$JAVA_HOME/bin"
5862

5963
ENTRYPOINT [ "/usr/jdk/bin/java" ]
64+
CMD [ "-version" ]

docker/distroless/Dockerfile.msopenjdk-21-jdk

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,29 @@
1-
ARG INSTALLER_IMAGE="mcr.microsoft.com/cbl-mariner/base/core"
2-
ARG INSTALLER_TAG="2.0"
3-
ARG BASE_IMAGE="mcr.microsoft.com/cbl-mariner/distroless/base"
4-
ARG BASE_TAG="2.0"
1+
ARG LINUX_VERSION="3.0"
2+
ARG JDK_VERSION="21"
3+
ARG INSTALLER_IMAGE="mcr.microsoft.com/azurelinux/base/core"
4+
ARG INSTALLER_TAG="${LINUX_VERSION}"
5+
ARG BASE_IMAGE="mcr.microsoft.com/azurelinux/distroless/base"
6+
ARG BASE_TAG="${LINUX_VERSION}"
57

68
FROM ${INSTALLER_IMAGE}:${INSTALLER_TAG} AS installer
79

8-
ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-21-linux-ARCH.tar.gz"
10+
# Redeclare ARG to make it available in this build stage
11+
ARG INSTALLER_TAG
12+
ARG JDK_VERSION
13+
ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-${JDK_VERSION}-linux-ARCH.tar.gz"
914

1015
# Add dynamically linked packages: zlib
1116
# Distroless base image already has tzdata ca-certificates openssl glibc
1217
# Create a non-root user and group (just like .NET's image)
1318
RUN mkdir /staging \
1419
&& tdnf update -y \
15-
&& tdnf install -y --releasever=2.0 --installroot /staging zlib \
20+
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib \
1621
&& tdnf install -y gawk shadow-utils ca-certificates tar \
1722
&& groupadd --system --gid=101 app \
18-
&& adduser --uid 101 --gid 101 --shell /bin/false --system app \
23+
&& useradd -l --uid=101 --gid=101 --shell /bin/false --system --create-home app \
1924
&& install -d -m 0755 -o 101 -g 101 "/staging/home/app" \
20-
&& rootOrAppRegex='^\(root\|app\):' \
21-
&& cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \
22-
&& cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group"
25+
&& cat /etc/passwd | grep '^\(root\|app\):' > "/staging/etc/passwd" \
26+
&& cat /etc/group | grep '^\(root\|app\):' > "/staging/etc/group"
2327

2428
# Get JDK
2529
RUN mkdir -p /usr/lib/jvm && \
@@ -57,3 +61,4 @@ ENV JAVA_HOME=/usr/jdk
5761
ENV PATH="$PATH:$JAVA_HOME/bin"
5862

5963
ENTRYPOINT [ "/usr/jdk/bin/java" ]
64+
CMD [ "-version" ]

docker/distroless/Dockerfile.temurin-8-jdk

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
1-
ARG INSTALLER_IMAGE="mcr.microsoft.com/cbl-mariner/base/core"
2-
ARG INSTALLER_TAG="2.0"
3-
ARG BASE_IMAGE="mcr.microsoft.com/cbl-mariner/distroless/base"
4-
ARG BASE_TAG="2.0"
1+
ARG LINUX_VERSION="3.0"
2+
ARG JDK_VERSION="8"
3+
ARG INSTALLER_IMAGE="mcr.microsoft.com/azurelinux/base/core"
4+
ARG INSTALLER_TAG="${LINUX_VERSION}"
5+
ARG BASE_IMAGE="mcr.microsoft.com/azurelinux/distroless/base"
6+
ARG BASE_TAG="${LINUX_VERSION}"
57

68
FROM ${INSTALLER_IMAGE}:${INSTALLER_TAG} AS installer
79

8-
ARG JDK_URL="https://api.adoptium.net/v3/binary/latest/8/ga/linux/ARCH/jdk/hotspot/normal/eclipse?project=jdk"
10+
ARG INSTALLER_TAG
11+
ARG JDK_VERSION
12+
ARG JDK_URL="https://api.adoptium.net/v3/binary/latest/${JDK_VERSION}/ga/linux/ARCH/jdk/hotspot/normal/eclipse?project=jdk"
913

1014
# Add dynamically linked packages: zlib
1115
# Distroless base image already has tzdata ca-certificates openssl glibc
1216
# Create a non-root user and group (just like .NET's image)
1317
RUN mkdir /staging \
1418
&& tdnf update -y \
15-
&& tdnf install -y --releasever=2.0 --installroot /staging zlib \
19+
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib \
1620
&& tdnf install -y gawk shadow-utils ca-certificates tar \
1721
&& groupadd --system --gid=101 app \
18-
&& adduser --uid 101 --gid 101 --shell /bin/false --system app \
22+
&& adduser --uid 101 --gid 101 --shell /bin/false --system --create-home app \
1923
&& install -d -m 0755 -o 101 -g 101 "/staging/home/app" \
2024
&& rootOrAppRegex='^\(root\|app\):' \
2125
&& cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \
@@ -56,3 +60,4 @@ ENV JAVA_HOME=/usr/jdk
5660
ENV PATH="$PATH:$JAVA_HOME/bin"
5761

5862
ENTRYPOINT [ "/usr/jdk/bin/java" ]
63+
CMD [ "-version" ]

scripts/build-image.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,9 @@ else
1010
BUILD_ARGS="--build-arg INSTALLER_IMAGE=$INSTALLER_IMAGE --build-arg INSTALLER_TAG=$INSTALLER_TAG --build-arg BASE_IMAGE=$(base_image) --build-arg BASE_TAG=$(base_tag) --build-arg package=$PACKAGE"
1111
fi
1212

13-
docker buildx build --platform linux/amd64,linux/arm64 ${BUILD_ARGS} -t $REGISTRY_TAG -f docker/$DISTRIBUTION/Dockerfile.$PACKAGE-jdk . --push
13+
REGISTRY_TAGS="-t ${REGISTRY_TAGS/;/ -t }"
14+
15+
# To push to a registry use --push
16+
# To build locally use --output=type=image,push=false
17+
echo "docker buildx build --platform linux/amd64,linux/arm64 ${BUILD_ARGS} ${REGISTRY_TAGS} -f docker/$DISTRIBUTION/Dockerfile.$PACKAGE-jdk . --push"
18+
docker buildx build --platform linux/amd64,linux/arm64 ${BUILD_ARGS} ${REGISTRY_TAGS} -f docker/$DISTRIBUTION/Dockerfile.$PACKAGE-jdk . --push

0 commit comments

Comments
 (0)