Cannot use per-build network for services when in custom network

Short version

A runner is connected to GitLab via a custom docker network. When a service container is started, I need my build container to connect to it via a per-build network. However, setting the feature flag FF_NETWORK_PER_BUILD seems to have no effect and the network is never created during jobs. This prevents me from using per-build networks.

Detailed version

Summary

The runner is installed much like described in #1846 (closed). (TL;DR: there's a custom docker macvlan network on the host and both GitLab and the runner are connected to that network, the runner by using the network_mode option in config.toml.)

I had followed this example to set up a postgres service. The service was connected to the build container using the legacy docker link feature (as this is the default). However, the service container in rare cases gets an IP address that is already in use, hence, neither the health check nor the build container can connect to it. Long story short, I have a problem that I could solve by using a per-build network.

I set the FF_NETWORK_PER_BUILD feature flag. This should suffice for the runner to create a docker network each time the job is executed, but when I watch docker network ls no network is created. Moreover, when I docker inspect the postgres service container that is started during the job, the only network it joins is my custom network but no other bridge network. My problem persists, so AFAIK the per-build network is never created.

The job logs are identical to before the change.

Steps to reproduce

Run the pipeline.

.gitlab-ci.yml
variables:
    FF_NETWORK_PER_BUILD: 1

test:
    services:
        - postgres:12.2-alpine
    variables:
        POSTGRES_DB: mydatabasename
        POSTGRES_USER: myusername
        POSTGRES_PASSWORD: ""
        POSTGRES_HOST_AUTH_METHOD: trust
    script:
        - ./tests-that-need-postgres

Actual behavior

No network is created and the service container merely resides in the network common among GitLab and the runner. It does not join a per-build network.

Expected behavior

A bridge network is created when the test job is executed. Both the postgres service container and the build container connect to that network.

Environment description

docker-compose.yml (excerpt)
version: '2'

services:
  gitlab:
    image: 'gitlab/gitlab-ee:12.10.3-ee.0'
    container_name: gitlab
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://git.example.com'
    networks:
      develnet:
        ipv4_address: 172.16.0.17

  gitlab-runner:
    image: 'gitlab/gitlab-runner:v12.10.1'
    container_name: 'gitlab-runner'
    networks:
      develnet:
        ipv4_address: 172.16.0.18

networks:
  develnet:
    driver: macvlan
    driver_opts:
      parent: myhostvlaninterfacename
    ipam:
      config:
        - subnet: 172.16.0.0/24
          gateway: 172.16.0.1
config.toml (excerpt)
[[runners]]
  executor = "docker"
  [runners.docker]
    network_mode = "develnet"

Used GitLab Runner version

Version:      12.10.1
Git revision: ce065b93
Git branch:   12-10-stable
GO version:   go1.13.8
Built:        2020-04-22T21:29:52+0000
OS/Arch:      linux/amd64

References

#3481 is about updating the docs for this particular case. Maybe I'm missing something?

#2699 (closed) looks similar at first, but it is two years old (per-built networks were introduced later) and it is closed.