Skip to content

Commit

Permalink
ci(e2e): revert to using pinned tags (#2625)
Browse files Browse the repository at this point in the history
Revert to using pinned docker image tags for protected network. This
allows explicit versions, removes remembering what is/can/should be
deployed. Makes upgrading explicit and documented.

issue: none
  • Loading branch information
corverroos authored Dec 4, 2024
1 parent 7e70f06 commit 01d14fc
Show file tree
Hide file tree
Showing 10 changed files with 63 additions and 14 deletions.
5 changes: 5 additions & 0 deletions e2e/app/definition.go
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,11 @@ func adaptNode(ctx context.Context, manifest types.Manifest, node *e2e.Node, tag
return nil, err
}

// Pinned tag overrides the cli --omni-image-tag flag.
if manifest.PinnedHaloTag != "" {
tag = manifest.PinnedHaloTag
}

// Override default comet version with our own, see github.com/cometbft/cometbft@v0.38.11/test/e2e/pkg/testnet.go:36
const cometLocalVersion = "cometbft/e2e-node:local-version"
if node.Version == cometLocalVersion {
Expand Down
28 changes: 24 additions & 4 deletions e2e/docker/docker.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,8 @@ func (p *Provider) Setup() error {
Solver: true,
GethVerbosity: 3, // Info
GethInitTags: gethInitTags,
AnvilProxyTag: p.omniTag,
MonitorTag: p.omniTag,
RelayerTag: p.omniTag,
SolverTag: p.omniTag,
}
def = SetImageTags(def, p.testnet.Manifest, p.omniTag)

bz, err := GenerateComposeFile(def)
if err != nil {
Expand Down Expand Up @@ -240,6 +237,29 @@ func (c ComposeDef) NodeOmniEVMs() map[string]string {
return resp
}

// SetImageTags returns a new ComposeDef with the image tags set.
// This is a convenience function to avoid setting the tags manually.
func SetImageTags(def ComposeDef, manifest types.Manifest, omniImgTag string) ComposeDef {
anvilProxyTag := omniImgTag

monitorTag := omniImgTag
if manifest.PinnedMonitorTag != "" {
monitorTag = manifest.PinnedMonitorTag
}

relayerTag := omniImgTag
if manifest.PinnedRelayerTag != "" {
relayerTag = manifest.PinnedRelayerTag
}

def.AnvilProxyTag = anvilProxyTag
def.MonitorTag = monitorTag
def.RelayerTag = relayerTag
def.SolverTag = omniImgTag

return def
}

func GenerateComposeFile(def ComposeDef) ([]byte, error) {
tmpl, err := template.New("compose").Parse(string(composeTmpl))
if err != nil {
Expand Down
4 changes: 4 additions & 0 deletions e2e/docker/docker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ func TestComposeTemplate(t *testing.T) {
const evm0 = "omni_evm_0"
dir := t.TempDir()
testnet := types.Testnet{
Manifest: types.Manifest{
PinnedRelayerTag: "v2",
PinnedMonitorTag: "v3",
},
Testnet: &e2e.Testnet{
Name: "test",
IP: ipNet,
Expand Down
4 changes: 2 additions & 2 deletions e2e/docker/testdata/TestComposeTemplate_commit.golden
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ services:
labels:
e2e: true
container_name: relayer
image: omniops/relayer:7d1ae53
image: omniops/relayer:v2
restart: unless-stopped
ports:
- 26660 # Prometheus and pprof
Expand All @@ -131,7 +131,7 @@ services:
labels:
e2e: true
container_name: monitor
image: omniops/monitor:7d1ae53
image: omniops/monitor:v3
restart: unless-stopped
ports:
- 26660 # Prometheus and pprof
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ services:
labels:
e2e: true
container_name: relayer
image: omniops/relayer:main
image: omniops/relayer:v2
restart: unless-stopped
ports:
- 26660 # Prometheus and pprof
Expand All @@ -131,7 +131,7 @@ services:
labels:
e2e: true
container_name: monitor
image: omniops/monitor:main
image: omniops/monitor:v3
restart: unless-stopped
ports:
- 26660 # Prometheus and pprof
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ services:
labels:
e2e: true
container_name: relayer
image: omniops/relayer:main
image: omniops/relayer:v2
restart: unless-stopped
ports:
- 26660 # Prometheus and pprof
Expand All @@ -131,7 +131,7 @@ services:
labels:
e2e: true
container_name: monitor
image: omniops/monitor:main
image: omniops/monitor:v3
restart: unless-stopped
ports:
- 26660 # Prometheus and pprof
Expand Down
4 changes: 4 additions & 0 deletions e2e/manifests/mainnet.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ public_chains = ["ethereum","arbitrum_one","base","optimism"]
multi_omni_evms = true
prometheus = true

pinned_halo_tag = "v0.11.0"
pinned_relayer_tag = "dffc7bf"
pinned_monitor_tag = "dffc7bf"

[node.validator01]
[node.validator02]

Expand Down
4 changes: 4 additions & 0 deletions e2e/manifests/omega.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ public_chains = ["holesky","op_sepolia", "base_sepolia","arb_sepolia"]
multi_omni_evms = true
prometheus = true

pinned_halo_tag = "v0.11.0"
pinned_relayer_tag = "dffc7bf"
pinned_monitor_tag = "dffc7bf"

[node.validator01]
[node.validator02]
[node.validator03]
Expand Down
15 changes: 15 additions & 0 deletions e2e/types/manifest.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,21 @@ type Manifest struct {
// Perturb defines additional (non-cometBFT) perturbations by service name.
Perturb map[string][]Perturb `json:"perturb"`

// PinnedHaloTag defines the pinned halo docker image tag.
// This allows source code defined versions for protected networks.
// This overrides the --omni-image-tag if non-empty.
PinnedHaloTag string `toml:"pinned_halo_tag"`

// PinnedMonitorTag defines the pinned monitor docker image tag.
// This allows source code defined versions for protected networks.
// This overrides the --omni-image-tag if non-empty.
PinnedMonitorTag string `toml:"pinned_monitor_tag"`

// PinnedRelayerTag defines the pinned relayer docker image tag.
// This allows source code defined versions for protected networks.
// This overrides the --omni-image-tag if non-empty.
PinnedRelayerTag string `toml:"pinned_relayer_tag"`

// NetworkUpgradeHeight defines the network upgrade height, default is genesis, negative is disabled.
// Note that it might be scheduled at a later height.
NetworkUpgradeHeight int64 `toml:"network_upgrade_height"`
Expand Down
5 changes: 1 addition & 4 deletions e2e/vmcompose/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,8 @@ func (p *Provider) Setup() error {
Solver: services["solver"],
Prometheus: p.Testnet.Prometheus,
GethVerbosity: gethVerbosity,
AnvilProxyTag: p.omniTag,
MonitorTag: p.omniTag,
RelayerTag: p.omniTag,
SolverTag: p.omniTag,
}
def = docker.SetImageTags(def, p.Testnet.Manifest, p.omniTag)

compose, err := docker.GenerateComposeFile(def)
if err != nil {
Expand Down

0 comments on commit 01d14fc

Please sign in to comment.