External Environment Integration

Developer environment exposes format which allows any external infra to be integrated.

NodeSets + Blockchains + Fake

This is a basic example of data required to run developer environment commands on external infrastructure. Full list of fields can be found here

Example env-stage-1.toml:

[fakes]
  [fakes.out]
    # URL to fakes server which represents some 3rd party which are mocked on external infrastructure
    base_url_host = 'https://chainlink-$product_name-fake:9111'

[[blockchains]]
  # One or more blockchains
  [blockchains.out]
    type = 'anvil'
    family = 'evm'
    chain_id = '1337'
    # One or more blockchain nodes
    [[blockchains.out.nodes]]
      ws_url = 'wss://blockchain-node-1:8545'
      http_url = 'https://blockchain-node-1:8545'

# One or more DON clusters
[[nodesets]]
  name = 'my-external-don-1'
  nodes = 2
  # Nodeset config output
  [nodesets.out]
    # First CL node connection data
    [[nodesets.out.cl_nodes]]
      [nodesets.out.cl_nodes.node]
        api_auth_user = 'some_user'
        api_auth_password = 'some_password'
        url = 'https://chainlink-node-1:6688'
      [nodesets.out.cl_nodes.postgresql]
        url = 'postgresql://chainlink:thispasswordislongenough@chainlink-node-1-db:13000/db_0?sslmode=disable'
    # Second node, etc..
    [[nodesets.out.cl_nodes]]
      [nodesets.out.cl_nodes.node]
        api_auth_user = 'some_user'
        api_auth_password = 'some_password'
        url = 'https://chainlink-node-2:6688'
      [nodesets.out.cl_nodes.postgresql]
        url = 'postgresql://chainlink:thispasswordislongenough@chainlink-node-2-db:13000/db_1?sslmode=disable'

# Second NodeSet, etc..
[[nodesets]]
  name = 'my-external-don-2'
  nodes = 2
  # All the other fields as in previous example above

Deploy the infrastructure first, then use up env-stage-1.toml to orchestrate staging environment.

In case your product has more infrastructure components define TOML keys [[my_custom_component]] and provide all the required connection data, use the same config structure you are using in your local environment, read more here