diff --git a/e2e/relayer/relayer.go b/e2e/relayer/relayer.go index 0b0d1421dab..7812180443a 100644 --- a/e2e/relayer/relayer.go +++ b/e2e/relayer/relayer.go @@ -36,9 +36,9 @@ func New(t *testing.T, cfg Config, logger *zap.Logger, dockerClient *dockerclien t.Helper() switch cfg.Type { case Rly: - return newCosmosRelayer(t, cfg.Tag, logger, dockerClient, network) + return newCosmosRelayer(t, cfg.Tag, logger, dockerClient, network, cfg.Image) case Hermes: - return newHermesRelayer(t, cfg.Tag, logger, dockerClient, network) + return newHermesRelayer(t, cfg.Tag, logger, dockerClient, network, cfg.Image) default: panic(fmt.Sprintf("unknown relayer specified: %s", cfg.Type)) } @@ -46,9 +46,14 @@ func New(t *testing.T, cfg Config, logger *zap.Logger, dockerClient *dockerclien // newCosmosRelayer returns an instance of the go relayer. // Options are used to allow for relayer version selection and specifying the default processing option. -func newCosmosRelayer(t *testing.T, tag string, logger *zap.Logger, dockerClient *dockerclient.Client, network string) ibc.Relayer { +func newCosmosRelayer(t *testing.T, tag string, logger *zap.Logger, dockerClient *dockerclient.Client, network, relayerImage string) ibc.Relayer { t.Helper() - customImageOption := relayer.CustomDockerImage(rlyRelayerRepository, tag, rlyRelayerUser) + + if relayerImage == "" { + relayerImage = rlyRelayerRepository + } + + customImageOption := relayer.CustomDockerImage(relayerImage, tag, rlyRelayerUser) relayerProcessingOption := relayer.StartupFlags("-p", "events") // relayer processes via events relayerFactory := interchaintest.NewBuiltinRelayerFactory(ibc.CosmosRly, logger, customImageOption, relayerProcessingOption) @@ -59,9 +64,14 @@ func newCosmosRelayer(t *testing.T, tag string, logger *zap.Logger, dockerClient } // newHermesRelayer returns an instance of the hermes relayer. -func newHermesRelayer(t *testing.T, tag string, logger *zap.Logger, dockerClient *dockerclient.Client, network string) ibc.Relayer { +func newHermesRelayer(t *testing.T, tag string, logger *zap.Logger, dockerClient *dockerclient.Client, network, relayerImage string) ibc.Relayer { t.Helper() - customImageOption := relayer.CustomDockerImage(hermesRelayerRepository, tag, hermesRelayerUser) + + if relayerImage == "" { + relayerImage = hermesRelayerRepository + } + + customImageOption := relayer.CustomDockerImage(relayerImage, tag, hermesRelayerUser) relayerFactory := interchaintest.NewBuiltinRelayerFactory(ibc.Hermes, logger, customImageOption) return relayerFactory.Build( @@ -69,7 +79,7 @@ func newHermesRelayer(t *testing.T, tag string, logger *zap.Logger, dockerClient ) } -// RelayerMap is a mapping from test names to a relayer set for that test. +// Map is a mapping from test names to a relayer set for that test. type Map map[string]map[ibc.Wallet]bool // AddRelayer adds the given relayer to the relayer set for the given test name. diff --git a/e2e/sample.config.yaml b/e2e/sample.config.yaml index 250738a27ac..8bf1e064fad 100644 --- a/e2e/sample.config.yaml +++ b/e2e/sample.config.yaml @@ -22,7 +22,7 @@ chains: relayer: type: rly # override with RELAYER_TYPE - image: ghcr.io/cosmos/relayer + image: ghcr.io/cosmos/relayer # override with RELAYER_IMAGE tag: latest # override with RELAYER_TAG cometbft: diff --git a/e2e/testsuite/testconfig.go b/e2e/testsuite/testconfig.go index 6cdca97e33a..56f9332ad33 100644 --- a/e2e/testsuite/testconfig.go +++ b/e2e/testsuite/testconfig.go @@ -37,6 +37,9 @@ const ( ChainBTagEnv = "CHAIN_B_TAG" // RelayerTagEnv specifies the relayer version. Defaults to "main" RelayerTagEnv = "RELAYER_TAG" + // RelayerImageEnv specifies the image that the relayer will use. If left unspecified, it will default + // to values set for hermesRelayerRepository or rlyRelayerRepository. + RelayerImageEnv = "RELAYER_IMAGE" // RelayerTypeEnv specifies the type of relayer that should be used. RelayerTypeEnv = "RELAYER_TYPE" // ChainBinaryEnv binary is the binary that will be used for both chains. @@ -206,6 +209,10 @@ func applyEnvironmentVariableOverrides(fromFile TestConfig) TestConfig { fromFile.RelayerConfig.Type = envTc.RelayerConfig.Type } + if os.Getenv(RelayerImageEnv) != "" { + fromFile.RelayerConfig.Image = envTc.RelayerConfig.Image + } + if os.Getenv(ChainUpgradePlanEnv) != "" { fromFile.UpgradeConfig.PlanName = envTc.UpgradeConfig.PlanName }