-
Notifications
You must be signed in to change notification settings - Fork 492
libhive: client build args and alternative dockerfiles #767
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
💯 - I am a big fan of this, it will make testing each client much much easier! Especially with |
@fjl Another option for the yaml/json files is to have a - name: go-ethereum
dockerfile: git
- name: nethermind
build_args:
user: nethermindeth
repo: hive
branch: latest
- name: go-ethereum
dockerfile: local
build_args:
local_path: ./path/to/local/code/base/ The problem here would be how to tag each image built. Right now we simply append the branch to the client's name to form the tag ( One possibility could be to create the tag using the source client config yaml/json file name and index of the client in the file. E.g. for a - name: go-ethereum
dockerfile: git
- name: nethermind
build_args:
user: nethermindeth
repo: hive
branch: latest
- name: go-ethereum
dockerfile: local
build_args:
local_path: ./path/to/local/code/base/ the client images could be named |
It's a bit redundant because the JSON format is also valid YAML.
It's bad style to define a named slice type unless it has any significant methods.
Since map iteration order is random, the test was failing half the time.
Since this struct is used as the input for client build operations, it can be seen as a sort-of unique identifier for the client during the build phase.
2f0907c
to
b386a8a
Compare
This is almost ready now, there's just a small issue left: Before this change, one could run multiple versions of the same client, which can be useful in sync tests, for example. This feature doesn't work anymore. For example, using this commandline
both client images will be built, but the simulation will only see one client, "go-ethereum". I need to introduce an algorithm that assigns unique names to the clients to fix this. We could go with the |
@fjl how about hashing the names of values of the parameters in the yaml files and do a 4-byte concatenation of this to generate an unique name ? I can implement this if you'd like. edit: The main issue is that it might be confusing later when you want to check the logs to find the hash of the specific configuration you want. Another possibly better solution would be to have a |
@fjl I pushed this change: - client: nethermind
image_name: nethermind-4844
build_args:
repo: nethermind
branch: eip-4844-v6 == - client: nethermind
build_args:
repo: nethermind
branch: eip-4844-v6 == Let me know what you think, we can do this or think about another approach :) |
2e9a9d1
to
78e110d
Compare
Renames "branch" -> "tag" because it's more universal. Removes "user" / "repo" in favor of "github" and "baseimage".
🤖 I have created a release *beep* *boop* --- ## [4.3.0](ethpandaops/ethereum-package@4.2.0...4.3.0) (2024-09-23) ### Features * add prefunded accounts ([ethereum#752](ethpandaops/ethereum-package#752)) ([1be7efa](ethpandaops/ethereum-package@1be7efa)) * dora - show more infos about all peers on client pages ([ethereum#760](ethpandaops/ethereum-package#760)) ([c77d95f](ethpandaops/ethereum-package@c77d95f)) ### Bug Fixes * `metrics-host-allowlist` for Teku ([ethereum#765](ethpandaops/ethereum-package#765)) ([ad75fcc](ethpandaops/ethereum-package@ad75fcc)) * built in validator lifecycle test for assertoor ([ethereum#763](ethpandaops/ethereum-package#763)) ([6f868cc](ethpandaops/ethereum-package@6f868cc)) * explicitly set client contexts ([ethereum#755](ethpandaops/ethereum-package#755)) ([94dc531](ethpandaops/ethereum-package@94dc531)) * no default resource limits ([ethereum#768](ethpandaops/ethereum-package#768)) ([4c4831b](ethpandaops/ethereum-package@4c4831b)) * prysm gRPC removal - use http server instead for keymanager ([ethereum#761](ethpandaops/ethereum-package#761)) ([ba91174](ethpandaops/ethereum-package@ba91174)) * remove epoch checker for goomy ([ethereum#754](ethpandaops/ethereum-package#754)) ([f124bbf](ethpandaops/ethereum-package@f124bbf)) * remove exp RPC API namespace flag from nimbus-eth1 configuration ([ethereum#767](ethpandaops/ethereum-package#767)) ([8fec454](ethpandaops/ethereum-package@8fec454)) * reth-builder volume claim ([ethereum#771](ethpandaops/ethereum-package#771)) ([4570328](ethpandaops/ethereum-package@4570328)) * update dora config for latest release & remove custom images ([ethereum#748](ethpandaops/ethereum-package#748)) ([a433c50](ethpandaops/ethereum-package@a433c50)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Allows specifying a
--client-file
parameter which shall be read in YAML or JSON format and must contain the client build modifiers.Supported modifiers:
dockerfile: git
will build usingDockerfile.git
instead of the defaultDockerfile
Supported docker image build arguments depend on the client and the docker image being used, but common client build arguments are:
Also adds example dockerfiles for go-ethereum:
Dockerfile.git
, to build from a git branch, andDockerfile.local
to build from a local source path.This change should allow clients to introduce different Dockerfiles to test using hive in many different environments, such as the CI.