fix: inject internal CA into BuildKit system trust store
Some checks failed
Build and push telegraf-snmp image / build-and-push-image (push) Failing after 2m13s
Build and push rsyncd image / build-and-push-image (push) Failing after 4m4s

Drop buildkitd.toml CA config approach — it does not apply to
BuildKit's OAuth token fetch which uses the Go system CA pool.
Instead append the CA cert to the BuildKit container's
/etc/ssl/certs/ca-certificates.crt and restart so buildkitd
picks it up via the system pool.
This commit is contained in:
dresi 2026-06-10 14:59:26 +02:00
parent b237e769f1
commit 0cd3a94e6f
2 changed files with 16 additions and 38 deletions

View File

@ -26,27 +26,16 @@ jobs:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Prepare BuildKit config with custom CA
run: |
CONFIG_DIR_PATH="${{ runner.temp }}/buildx-config"
mkdir -p "${CONFIG_DIR_PATH}"
CERT_FILE_PATH="${CONFIG_DIR_PATH}/ca.crt"
CONFIG_FILE_PATH="${CONFIG_DIR_PATH}/buildkitd.toml"
echo "${{ vars.PRIVATE_REGISTRY_CA_CERT }}" > "${CERT_FILE_PATH}"
cat << EOF > "${CONFIG_FILE_PATH}"
[registry."${{ vars.PRIVATE_REGISTRY_DOMAIN }}"]
ca = ["${CERT_FILE_PATH}"]
EOF
echo "BUILDKIT_CONFIG=${CONFIG_FILE_PATH}" >> $GITEA_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
config: ${{ env.BUILDKIT_CONFIG }}
- name: Trust internal CA in BuildKit container
run: |
BUILDER=$(docker ps --filter "name=buildx_buildkit" --format "{{.Names}}" | head -1)
echo "${{ vars.PRIVATE_REGISTRY_CA_CERT }}" | \
docker exec -i "$BUILDER" sh -c 'cat >> /etc/ssl/certs/ca-certificates.crt'
docker restart "$BUILDER"
sleep 5
- name: Build and push image
uses: docker/build-push-action@v6

View File

@ -26,27 +26,16 @@ jobs:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Prepare BuildKit config with custom CA
run: |
CONFIG_DIR_PATH="${{ runner.temp }}/buildx-config"
mkdir -p "${CONFIG_DIR_PATH}"
CERT_FILE_PATH="${CONFIG_DIR_PATH}/ca.crt"
CONFIG_FILE_PATH="${CONFIG_DIR_PATH}/buildkitd.toml"
echo "${{ vars.PRIVATE_REGISTRY_CA_CERT }}" > "${CERT_FILE_PATH}"
cat << EOF > "${CONFIG_FILE_PATH}"
[registry."${{ vars.PRIVATE_REGISTRY_DOMAIN }}"]
ca = ["${CERT_FILE_PATH}"]
EOF
echo "BUILDKIT_CONFIG=${CONFIG_FILE_PATH}" >> $GITEA_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
config: ${{ env.BUILDKIT_CONFIG }}
- name: Trust internal CA in BuildKit container
run: |
BUILDER=$(docker ps --filter "name=buildx_buildkit" --format "{{.Names}}" | head -1)
echo "${{ vars.PRIVATE_REGISTRY_CA_CERT }}" | \
docker exec -i "$BUILDER" sh -c 'cat >> /etc/ssl/certs/ca-certificates.crt'
docker restart "$BUILDER"
sleep 5
- name: Build and push image
uses: docker/build-push-action@v6