mirror of
https://github.com/tailscale/tailscale.git
synced 2025-12-24 00:18:20 -05:00
.github/workfkows,Dockerfile,Dockerfile.base: add a test for base image (#18180)
Test that the base image builds and has the right iptables binary linked. Updates #17854 Signed-off-by: Irbe Krumina <irbe@tailscale.com>
This commit is contained in:
29
.github/workflows/docker-base.yml
vendored
Normal file
29
.github/workflows/docker-base.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
name: "Validate Docker base image"
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- "Dockerfile.base"
|
||||||
|
- ".github/workflows/docker-base.yml"
|
||||||
|
jobs:
|
||||||
|
build-and-test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
- name: "build and test"
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
IMG="test-base:$(head -c 8 /dev/urandom | xxd -p)"
|
||||||
|
docker build -t "$IMG" -f Dockerfile.base .
|
||||||
|
|
||||||
|
iptables_version=$(docker run --rm "$IMG" iptables --version)
|
||||||
|
if [[ "$iptables_version" != *"(legacy)"* ]]; then
|
||||||
|
echo "ERROR: Docker base image should contain legacy iptables; found ${iptables_version}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ip6tables_version=$(docker run --rm "$IMG" ip6tables --version)
|
||||||
|
if [[ "$ip6tables_version" != *"(legacy)"* ]]; then
|
||||||
|
echo "ERROR: Docker base image should contain legacy ip6tables; found ${ip6tables_version}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -73,6 +73,11 @@ RUN GOARCH=$TARGETARCH go install -ldflags="\
|
|||||||
|
|
||||||
FROM alpine:3.22
|
FROM alpine:3.22
|
||||||
RUN apk add --no-cache ca-certificates iptables iproute2 ip6tables
|
RUN apk add --no-cache ca-certificates iptables iproute2 ip6tables
|
||||||
|
# Alpine 3.19 replaced legacy iptables with nftables based implementation.
|
||||||
|
# Tailscale is used on some hosts that don't support nftables, such as Synology
|
||||||
|
# NAS, so link iptables back to legacy version. Hosts that don't require legacy
|
||||||
|
# iptables should be able to use Tailscale in nftables mode. See
|
||||||
|
# https://github.com/tailscale/tailscale/issues/17854
|
||||||
RUN rm /usr/sbin/iptables && ln -s /usr/sbin/iptables-legacy /usr/sbin/iptables
|
RUN rm /usr/sbin/iptables && ln -s /usr/sbin/iptables-legacy /usr/sbin/iptables
|
||||||
RUN rm /usr/sbin/ip6tables && ln -s /usr/sbin/ip6tables-legacy /usr/sbin/ip6tables
|
RUN rm /usr/sbin/ip6tables && ln -s /usr/sbin/ip6tables-legacy /usr/sbin/ip6tables
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
FROM alpine:3.22
|
FROM alpine:3.22
|
||||||
RUN apk add --no-cache ca-certificates iptables iptables-legacy iproute2 ip6tables iputils
|
RUN apk add --no-cache ca-certificates iptables iptables-legacy iproute2 ip6tables iputils
|
||||||
# Alpine 3.19 replaced legacy iptables with nftables based implementation. We
|
# Alpine 3.19 replaced legacy iptables with nftables based implementation.
|
||||||
# can't be certain that all hosts that run Tailscale containers currently
|
# Tailscale is used on some hosts that don't support nftables, such as Synology
|
||||||
# suppport nftables, so link back to legacy for backwards compatibility reasons.
|
# NAS, so link iptables back to legacy version. Hosts that don't require legacy
|
||||||
# TODO(irbekrm): add some way how to determine if we still run on nodes that
|
# iptables should be able to use Tailscale in nftables mode. See
|
||||||
# don't support nftables, so that we can eventually remove these symlinks.
|
# https://github.com/tailscale/tailscale/issues/17854
|
||||||
RUN rm /usr/sbin/iptables && ln -s /usr/sbin/iptables-legacy /usr/sbin/iptables
|
RUN rm /usr/sbin/iptables && ln -s /usr/sbin/iptables-legacy /usr/sbin/iptables
|
||||||
RUN rm /usr/sbin/ip6tables && ln -s /usr/sbin/ip6tables-legacy /usr/sbin/ip6tables
|
RUN rm /usr/sbin/ip6tables && ln -s /usr/sbin/ip6tables-legacy /usr/sbin/ip6tables
|
||||||
|
|||||||
Reference in New Issue
Block a user