fix(docker): make bind-mounted /var/run/docker.sock work on all hosts #605
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |