Skip to content

fix(docker): make bind-mounted /var/run/docker.sock work on all hosts #605

fix(docker): make bind-mounted /var/run/docker.sock work on all hosts

fix(docker): make bind-mounted /var/run/docker.sock work on all hosts #605

Workflow file for this run

name: Compatibility Tests
on:
pull_request:
paths:
- 'src/**'
- 'pom.xml'
- '.mvn/**'
- 'mvnw'
- 'mvnw.cmd'
- 'Dockerfile'
- 'Dockerfile.jvm-package'
- 'Dockerfile.native'
- 'Dockerfile.native-package'
- 'docker-compose.yml'
- 'compatibility-tests/**'
- '.github/workflows/compatibility.yml'
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build floci image
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
java-version: '25'
distribution: 'temurin'
cache: maven
- name: Build JVM artifact
run: mvn clean package -DskipTests -q
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Build Docker image
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: Dockerfile.jvm-package
tags: floci:test
outputs: type=docker,dest=/tmp/floci-image.tar
cache-from: type=gha,scope=floci
cache-to: type=gha,scope=floci,mode=max
- name: Compress image
run: gzip /tmp/floci-image.tar
- name: Upload floci image
uses: actions/upload-artifact@v7
with:
name: floci-image
path: /tmp/floci-image.tar.gz
retention-days: 1
compat-test:
name: ${{ matrix.test }}
needs: build
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
test:
- sdk-test-node
- sdk-test-python
- sdk-test-java # improving execution time
- sdk-test-go
- sdk-test-awscli
- compat-cdk
- compat-terraform
- compat-opentofu
steps:
- name: Download floci image
uses: actions/download-artifact@v8
with:
name: floci-image
path: /tmp
- name: Load floci image
run: gunzip -c /tmp/floci-image.tar.gz | docker load
- name: Create Docker network
run: docker network create compat-net
- name: Start floci
run: |
DOCKER_GID=$(stat -c '%g' /var/run/docker.sock)
docker run -d --name floci --network compat-net \
-p 4566:4566 \
-v /var/run/docker.sock:/var/run/docker.sock \
--group-add "$DOCKER_GID" \
-e FLOCI_BASE_URL=http://floci:4566 \
-e FLOCI_SERVICES_DOCKER_NETWORK=compat-net \
-e FLOCI_HOSTNAME=floci \
floci:test
- name: Wait for floci to be ready
run: timeout 60 bash -c 'until curl -sf http://localhost:4566/ >/dev/null 2>&1; do sleep 1; done'
- name: Checkout repository
uses: actions/checkout@v6
with:
sparse-checkout: compatibility-tests
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Build test image
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: compatibility-tests/${{ matrix.test }}
load: true
tags: compat-${{ matrix.test }}
cache-from: type=gha,scope=${{ matrix.test }}
cache-to: type=gha,scope=${{ matrix.test }},mode=max
- name: Run tests
id: tests
run: |
mkdir -p test-results
FLOCI_IP=$(docker inspect -f '{{(index .NetworkSettings.Networks "compat-net").IPAddress}}' floci)
DOCKER_GID=$(stat -c '%g' /var/run/docker.sock)
EXTRA_ARGS=""
# compat-cdk needs Docker access for CDK's DockerImageFunction (docker build + push to emulated ECR)
if [ "${{ matrix.test }}" = "compat-cdk" ]; then
EXTRA_ARGS="-v /var/run/docker.sock:/var/run/docker.sock --group-add $DOCKER_GID"
fi
docker run --rm --network compat-net \
-e FLOCI_ENDPOINT=http://floci:4566 \
-v "$(pwd)/test-results:/results" \
--add-host "sdk-vhost-bucket.floci:${FLOCI_IP}" \
$EXTRA_ARGS \
compat-${{ matrix.test }}
- name: Generate test summary
if: always() && steps.tests.outcome != 'skipped'
uses: test-summary/action@31493c76ec9e7aa675f1585d3ed6f1da69269a86 # v2
with:
paths: test-results/*.xml
- name: Dump floci logs
if: failure()
run: docker logs floci