name: 'Test the DMS Container Image' on: workflow_call: inputs: cache-key: required: true type: string permissions: contents: read jobs: run-tests: name: 'Test' runs-on: ubuntu-22.04 strategy: matrix: part: [serial, parallel/set1, parallel/set2, parallel/set3] fail-fast: false steps: - name: Checkout uses: actions/checkout@v4 with: # Required to retrieve bats (core + extras): submodules: recursive # Get the cached build layers from the build job: # This should always be a cache-hit, thus `restore-keys` fallback is not used. # No new cache uploads should ever happen for this job. - name: 'Retrieve image built from build cache' uses: actions/cache@v4 with: path: /tmp/.buildx-cache key: cache-buildx-${{ inputs.cache-key }} # Configures buildx to use `docker-container` driver, # Ensures consistent BuildKit version (not coupled to Docker Engine), # and increased compatibility of the build cache vs mixing buildx drivers. - name: 'Set up Docker Buildx' uses: docker/setup-buildx-action@v3.3.0 # Importing from the cache should create the image within approx 30 seconds: # NOTE: `qemu` step is not needed as we only test for AMD64. - name: 'Build AMD64 image from cache' uses: docker/build-push-action@v5.3.0 with: context: . tags: mailserver-testing:ci # Export the built image to the Docker host for use with BATS: load: true # Rebuilds the AMD64 image from the cache: platforms: linux/amd64 cache-from: type=local,src=/tmp/.buildx-cache # Disable provenance attestation: https://docs.docker.com/build/attestations/slsa-provenance/ provenance: false - name: 'Run tests' run: make generate-accounts tests/${{ matrix.part }}