Skip to content

Commit ef57444

Browse files
authored
Add standard-builder-with-openssl-3.6.2 (#124)
OpenSSL 3.6.2 is the latest release across the active 3.x branches (released 2026-04-07). Adds a new multiplatform builder image and keeps the 3.6.0 image available for one cycle to give users time to migrate.
1 parent 34f991d commit ef57444

6 files changed

Lines changed: 231 additions & 0 deletions

File tree

.github/workflows/pr.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,18 @@ jobs:
121121
- name: Test build
122122
run: "docker buildx build --pull --file=standard-builder-with-openssl-3.6.0/Dockerfile ."
123123

124+
validate-standard-builder-with-openssl-3_6_2-builds:
125+
name: Validate standard builder with openssl 3.6.2 image builds
126+
runs-on: ubuntu-latest
127+
steps:
128+
- name: Checkout
129+
uses: actions/checkout@v6.0.2
130+
- name: Set up buildx
131+
# v3.10.0
132+
uses: docker/setup-buildx-action@v4
133+
- name: Test build
134+
run: "docker buildx build --pull --file=standard-builder-with-openssl-3.6.2/Dockerfile ."
135+
124136
validate-standard-builder-with-pcre-builds:
125137
name: Validate standard builder with pcre image builds
126138
runs-on: ubuntu-latest

.github/workflows/rebuild-ponyc-based-images.yml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,109 @@ jobs:
391391
topic: ${{ github.repository }} scheduled job failure
392392
content: ${{ github.server_url}}/${{ github.repository }}/actions/runs/${{ github.run_id }} failed.
393393

394+
standard-builder-with-openssl_3_6_2-amd64:
395+
needs:
396+
- standard-builder
397+
398+
name: Update standard-builder-with-openssl-3.6.2 on amd64
399+
runs-on: ubuntu-latest
400+
401+
concurrency:
402+
group: standard-builder-with-openssl_3_6_2-amd64
403+
cancel-in-progress: true
404+
405+
steps:
406+
- uses: actions/checkout@v6.0.2
407+
- name: Login to GitHub Container Registry
408+
# v2.2.0
409+
uses: docker/login-action@v4
410+
with:
411+
registry: ghcr.io
412+
username: ${{ github.repository_owner }}
413+
password: ${{ secrets.GITHUB_TOKEN }}
414+
- name: Build and push
415+
run: bash standard-builder-with-openssl-3.6.2/build-and-push.bash
416+
- name: Send alert on failure
417+
if: ${{ failure() }}
418+
uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5
419+
with:
420+
api-key: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_API_KEY }}
421+
email: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_EMAIL }}
422+
organization-url: 'https://ponylang.zulipchat.com/'
423+
to: notifications
424+
type: stream
425+
topic: ${{ github.repository }} scheduled job failure
426+
content: ${{ github.server_url}}/${{ github.repository }}/actions/runs/${{ github.run_id }} failed.
427+
428+
standard-builder-with-openssl_3_6_2-arm64:
429+
needs:
430+
- standard-builder
431+
432+
name: Update standard-builder-with-openssl-3.6.2 on arm64
433+
runs-on: ubuntu-24.04-arm
434+
435+
concurrency:
436+
group: standard-builder-with-openssl_3_6_2-arm64
437+
cancel-in-progress: true
438+
439+
steps:
440+
- uses: actions/checkout@v6.0.2
441+
- name: Login to GitHub Container Registry
442+
# v2.2.0
443+
uses: docker/login-action@v4
444+
with:
445+
registry: ghcr.io
446+
username: ${{ github.repository_owner }}
447+
password: ${{ secrets.GITHUB_TOKEN }}
448+
- name: Build and push
449+
run: bash standard-builder-with-openssl-3.6.2/build-and-push.bash
450+
- name: Send alert on failure
451+
if: ${{ failure() }}
452+
uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5
453+
with:
454+
api-key: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_API_KEY }}
455+
email: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_EMAIL }}
456+
organization-url: 'https://ponylang.zulipchat.com/'
457+
to: notifications
458+
type: stream
459+
topic: ${{ github.repository }} scheduled job failure
460+
content: ${{ github.server_url}}/${{ github.repository }}/actions/runs/${{ github.run_id }} failed.
461+
462+
merge-standard-builder-with-openssl_3_6_2:
463+
needs:
464+
- standard-builder-with-openssl_3_6_2-amd64
465+
- standard-builder-with-openssl_3_6_2-arm64
466+
467+
name: Create merged standard-builder-with-openssl-3.6.2
468+
runs-on: ubuntu-latest
469+
470+
concurrency:
471+
group: merge-standard-builder-with-openssl_3_6_2
472+
cancel-in-progress: true
473+
474+
steps:
475+
- uses: actions/checkout@v6.0.2
476+
- name: Login to GitHub Container Registry
477+
# v2.2.0
478+
uses: docker/login-action@v4
479+
with:
480+
registry: ghcr.io
481+
username: ${{ github.repository_owner }}
482+
password: ${{ secrets.GITHUB_TOKEN }}
483+
- name: Merge
484+
run: bash standard-builder-with-openssl-3.6.2/combine-images.bash
485+
- name: Send alert on failure
486+
if: ${{ failure() }}
487+
uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5
488+
with:
489+
api-key: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_API_KEY }}
490+
email: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_EMAIL }}
491+
organization-url: 'https://ponylang.zulipchat.com/'
492+
to: notifications
493+
type: stream
494+
topic: ${{ github.repository }} scheduled job failure
495+
content: ${{ github.server_url}}/${{ github.repository }}/actions/runs/${{ github.run_id }} failed.
496+
394497
x86-64-unknown-linux-builder-with-libressl_3_9_2:
395498
needs:
396499
- standard-builder
@@ -501,6 +604,7 @@ jobs:
501604
- merge-standard-builder-with-libressl_4_2_0
502605
- merge-standard-builder-with-libressl_4_2_1
503606
- merge-standard-builder-with-openssl_3_6_0
607+
- merge-standard-builder-with-openssl_3_6_2
504608
- x86-64-unknown-linux-builder-with-libressl_3_9_2
505609
- x86-64-unknown-linux-builder-with-openssl_1_1_1w
506610
- x86-64-unknown-linux-builder-with-openssl_3_4_1
@@ -582,6 +686,7 @@ jobs:
582686
- shared-docker-ci-standard-builder-with-libressl-4.2.0
583687
- shared-docker-ci-standard-builder-with-libressl-4.2.1
584688
- shared-docker-ci-standard-builder-with-openssl-3.6.0
689+
- shared-docker-ci-standard-builder-with-openssl-3.6.2
585690

586691
steps:
587692
- name: Login to GitHub Container Registry
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
ARG FROM_TAG=release
2+
FROM ghcr.io/ponylang/shared-docker-ci-standard-builder:${FROM_TAG}
3+
4+
LABEL org.opencontainers.image.source="https://github.com/ponylang/shared-docker"
5+
6+
RUN apk add --update --no-cache \
7+
clang-dev \
8+
linux-headers \
9+
perl
10+
11+
RUN cd /tmp && \
12+
wget https://github.com/openssl/openssl/releases/download/openssl-3.6.2/openssl-3.6.2.tar.gz && \
13+
tar xf openssl-3.6.2.tar.gz && \
14+
cd openssl-3.6.2 && \
15+
./Configure --api=3.0.0 no-shared enable-rc5 enable-md2 && \
16+
make install_sw && \
17+
cd /tmp && \
18+
rm -rf openssl-3.6.2
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# standard-builder-with-openssl-3.6.2
2+
3+
The standard-builder with OpenSSL 3.6.2 installed as well. Rebuilt daily.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/bin/bash
2+
3+
set -o errexit
4+
set -o nounset
5+
6+
#
7+
# *** You should already be logged in to GitHub Container Registry when you run
8+
# this ***
9+
#
10+
11+
ARCH=$(uname -m)
12+
case "${ARCH}" in
13+
x86_64)
14+
ARCH_TAG="amd64"
15+
;;
16+
aarch64|arm64)
17+
ARCH_TAG="arm64"
18+
;;
19+
*)
20+
echo "Error: Unsupported architecture '${ARCH}'" >&2
21+
exit 1
22+
;;
23+
esac
24+
25+
DOCKERFILE_DIR="$(dirname "$0")"
26+
BUILDER="standard-builder-with-openssl-3.6.2-$(date +%s)"
27+
NAME="ghcr.io/ponylang/shared-docker-ci-standard-builder-with-openssl-3.6.2"
28+
29+
echo "Building nightly image from standard-builder nightly tag"
30+
docker buildx create --use --name "${BUILDER}"
31+
docker buildx build --provenance false --sbom false \
32+
--pull --push --build-arg \
33+
FROM_TAG="nightly" -t "${NAME}:nightly-${ARCH_TAG}" "${DOCKERFILE_DIR}"
34+
docker buildx rm "${BUILDER}"
35+
36+
echo "Building release image from standard-builder release tag"
37+
docker buildx create --use --name "${BUILDER}"
38+
docker buildx build --provenance false --sbom false \
39+
--pull --push --build-arg \
40+
FROM_TAG="release" -t "${NAME}:release-${ARCH_TAG}" "${DOCKERFILE_DIR}"
41+
docker buildx rm "${BUILDER}"
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#!/bin/bash
2+
3+
set -o errexit
4+
set -o nounset
5+
6+
# The tag names used here (nightly, release) must stay in sync with the
7+
# prune-untagged-multiplatform-images job in rebuild-ponyc-based-images.yml,
8+
# which inspects these tags to collect child SHAs for skip-shas protection.
9+
NAME="ghcr.io/ponylang/shared-docker-ci-standard-builder-with-openssl-3.6.2"
10+
11+
sources=()
12+
13+
# function to check if an image exists
14+
check_image() {
15+
local image="$1"
16+
if docker manifest inspect "$image" > /dev/null 2>&1; then
17+
echo "Image exists: $image"
18+
sources+=("$image")
19+
else
20+
echo "Image not found: $image"
21+
fi
22+
}
23+
24+
merge_images() {
25+
local TAG="$1"
26+
echo "Checking available architecture images for ${NAME}:$TAG"
27+
28+
check_image "${NAME}:${TAG}-amd64"
29+
check_image "${NAME}:${TAG}-arm64"
30+
31+
if [ ${#sources[@]} -eq 0 ]; then
32+
echo "No images found for merging, skipping."
33+
return
34+
fi
35+
36+
echo "Creating or updating manifest tag: ${NAME}:${TAG}"
37+
38+
# Attempt to inspect existing manifest
39+
if docker manifest inspect "${NAME}:${TAG}" >/dev/null 2>&1; then
40+
echo "Existing manifest found, updating it."
41+
docker manifest create --amend "${NAME}:${TAG}" "${sources[@]}"
42+
else
43+
echo "No existing manifest found, creating new one."
44+
docker manifest create "${NAME}:${TAG}" "${sources[@]}"
45+
fi
46+
docker manifest push "${NAME}:${TAG}"
47+
48+
echo "Manifest created or updated successfully."
49+
}
50+
51+
merge_images "nightly"
52+
merge_images "release"

0 commit comments

Comments
 (0)