Skip to content

Dockerfile Cleanups, remove local git repos, git repo sha256 checks, smaller image, fix entrypoint naming#54

Merged
mdehoog merged 6 commits intobase:mainfrom
Mitsuwa:update-docker-builds
Jun 15, 2023
Merged

Dockerfile Cleanups, remove local git repos, git repo sha256 checks, smaller image, fix entrypoint naming#54
mdehoog merged 6 commits intobase:mainfrom
Mitsuwa:update-docker-builds

Conversation

@Mitsuwa
Copy link
Copy Markdown
Contributor

@Mitsuwa Mitsuwa commented Jun 9, 2023

What

This updates the dockerfile and compose scripts slightly to cleanup some things and follow some best practices around docker

  1. Remove the whole local git repo configuration that is done to build both geth and optimism repos, as it is creates unnecessary complexity. Instead simply download github public tarballs of the sha references. Another additional benefit is that this can use sha256sum checking on the tarballs. In order to use ADD --checksum=sha256: you must use the docker # syntax=docker/dockerfile:1-labs https://docs.docker.com/engine/reference/builder/#syntax

  2. Cleanup /var/lib/apt/lists as this is unnecessary bloat in the image

  3. Remove the .sh from the entrypoint files as they already have interpreters and exectuable files generally do not have extensions.

  4. Removes the "sh" command to run the entrypoints in the docker compose file, because of the same reason, the scripts have bash interpreters

  5. Only Copy the geth-entrypoint and op-node-entrypoint scripts and the appropriate goerli folder. The current docker image includes all the other files in this repo due to a COPY . ., which is really not necessary

$ docker run -it --entrypoint sh mitsuwa/node:latest
# ls
CONTRIBUTING.md  Dockerfile  LICENSE  README.md  SECURITY.md  docker-compose.yml  geth	geth-entrypoint.sh  goerli  logo.webp  op-node	op-node-entrypoint.sh

The image reduction is about 20 mb

Testing

This builds the image via docker compose up --build and geth and op clients startup

$ docker compose up --build
[+] Building 122.0s (21/24)
 => [node_geth internal] load build definition from Dockerfile                                                                                                                                                                                      0.0s
 => => transferring dockerfile: 967B                                                                                                                                                                                                                0.0s
 => [node_node internal] load build definition from Dockerfile                                                                                                                                                                                      0.0s
 => => transferring dockerfile: 967B                                                                                                                                                                                                                0.0s
 => [node_geth internal] load .dockerignore                                                                                                                                                                                                         0.0s
 => => transferring context: 2B                                                                                                                                                                                                                     0.0s
 => [node_node internal] load .dockerignore                                                                                                                                                                                                         0.0s
 => => transferring context: 2B                                                                                                                                                                                                                     0.0s
 => [node_geth internal] load metadata for docker.io/library/golang:1.19                                                                                                                                                                            0.6s
 => [node_geth internal] load build context                                                                                                                                                                                                         0.3s
 => => transferring context: 9.19MB                                                                                                                                                                                                                 0.2s
 => [node_node geth 1/4] FROM docker.io/library/golang:1.19@sha256:83f9f840072d05ad4d90ce4ac7cb2427632d6b89d5ffc558f18f9577ec8188c0                                                                                                                 0.1s
 => => resolve docker.io/library/golang:1.19@sha256:83f9f840072d05ad4d90ce4ac7cb2427632d6b89d5ffc558f18f9577ec8188c0                                                                                                                                0.0s
 => => sha256:83f9f840072d05ad4d90ce4ac7cb2427632d6b89d5ffc558f18f9577ec8188c0 2.36kB / 2.36kB                                                                                                                                                      0.0s
 => => sha256:0a2cfaee31baf5363dc433adc23c2c8ec395e9c456f5c42e8b725dfb8efb2ced 1.58kB / 1.58kB                                                                                                                                                      0.0s
 => => sha256:b6def6c9f657f33b9ebd33e3b797325642231e265e3ca8b04e239b64f569b606 6.79kB / 6.79kB                                                                                                                                                      0.0s
 => [node_node internal] load build context                                                                                                                                                                                                         0.2s
 => => transferring context: 9.19MB                                                                                                                                                                                                                 0.2s
 => [node_node geth 2/4] WORKDIR /app                                                                                                                                                                                                               0.1s
 => [node_geth stage-2 2/8] RUN apt-get update &&     apt-get install -y jq curl &&     rm -rf /var/lib/apt/lists                                                                                                                                   4.8s
 => [node_geth geth 3/4] RUN git init &&     git remote add origin https://github.com/ethereum-optimism/op-geth.git &&     git fetch --depth=1 origin a84992a3b7c33f038ccc69e761bafeefcd605fd3 &&     git reset --hard FETCH_HEAD                   3.9s
 => [node_node op 3/4] RUN git init &&     git remote add origin https://github.com/ethereum-optimism/optimism.git &&     git fetch --depth=1 origin 09d23ee8995b7c318a4469a49276f9453535c6a9 &&     git reset --hard FETCH_HEAD                    9.8s
 => [node_geth geth 4/4] RUN go run build/ci.go install -static ./cmd/geth                                                                                                                                                                        116.4s
 => [node_geth stage-2 3/8] WORKDIR /app                                                                                                                                                                                                            0.0s
 => [node_geth op 4/4] RUN cd op-node &&     make op-node                                                                                                                                                                                         110.3s
 => [node_geth stage-2 4/8] COPY --from=op /app/op-node/bin/op-node ./                                                                                                                                                                              0.1s
 => [node_geth stage-2 5/8] COPY --from=geth /app/build/bin/geth ./                                                                                                                                                                                 0.1s
 => [node_node stage-2 6/8] COPY geth-entrypoint .                                                                                                                                                                                                  0.0s
 => [node_node stage-2 7/8] COPY op-node-entrypoint .                                                                                                                                                                                               0.0s
 => [node_node stage-2 8/8] COPY goerli ./goerli                                                                                                                                                                                                    0.0s
 => [node_node] exporting to image                                                                                                                                                                                                                  0.3s
 => => exporting layers                                                                                                                                                                                                                             0.3s
 => => writing image sha256:70d7f92ac54734ac6167f6c0ea75e76370897d427237e2c2756bcc210f3d2ff6                                                                                                                                                        0.0s
 => => naming to docker.io/library/node_geth                                                                                                                                                                                                        0.0s
 => => naming to docker.io/library/node_node                                                                                                                                                                                                        0.0s
[+] Running 3/3
 ⠿ Network node_default   Created                                                                                                                                                                                                                   0.0s
 ⠿ Container node-geth-1  Created                                                                                                                                                                                                                   0.1s
 ⠿ Container node-node-1  Created                                                                                                                                                                                                                   0.1s
Attaching to node-geth-1, node-node-1
node-geth-1  | /data/geth/chaindata missing, running init
node-geth-1  | Initializing genesis.
node-geth-1  | INFO [06-09|16:01:12.845] Maximum peer count                       ETH=50 LES=0 total=50
node-geth-1  | INFO [06-09|16:01:12.847] Smartcard socket not found, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
node-geth-1  | INFO [06-09|16:01:12.850] Set global gas cap                       cap=50,000,000
node-geth-1  | INFO [06-09|16:01:12.852] Using leveldb as the backing database
node-geth-1  | INFO [06-09|16:01:12.852] Allocated cache and file handles         database=/data/geth/chaindata cache=16.00MiB handles=16
node-geth-1  | INFO [06-09|16:01:12.857] Using LevelDB as the backing database
node-geth-1  | INFO [06-09|16:01:12.869] Opened ancient database                  database=/data/geth/chaindata/ancient/chain readonly=false
node-geth-1  | INFO [06-09|16:01:12.870] Writing custom genesis block
node-node-1  | waiting for geth to be ready
node-geth-1  | INFO [06-09|16:01:13.185] Persisted trie from memory database      nodes=3118 size=448.43KiB time=5.0933ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
node-geth-1  | INFO [06-09|16:01:13.301] Successfully wrote genesis state         database=chaindata                          hash=a3ab14..6b4f76
node-geth-1  | INFO [06-09|16:01:13.301] Using leveldb as the backing database
node-geth-1  | INFO [06-09|16:01:13.301] Allocated cache and file handles         database=/data/geth/lightchaindata          cache=16.00MiB handles=16
node-geth-1  | INFO [06-09|16:01:13.307] Using LevelDB as the backing database
node-geth-1  | INFO [06-09|16:01:13.320] Opened ancient database                  database=/data/geth/lightchaindata/ancient/chain readonly=false
node-geth-1  | INFO [06-09|16:01:13.320] Writing custom genesis block
node-geth-1  | INFO [06-09|16:01:13.603] Persisted trie from memory database      nodes=3118 size=448.43KiB time=5.0713ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
node-geth-1  | INFO [06-09|16:01:13.711] Successfully wrote genesis state         database=lightchaindata                          hash=a3ab14..6b4f76
node-geth-1  | INFO [06-09|16:01:13.832] Maximum peer count                       ETH=100 LES=0 total=100
node-geth-1  | INFO [06-09|16:01:13.834] Smartcard socket not found, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
node-geth-1  | WARN [06-09|16:01:13.835] Disable transaction unindexing for archive node
node-geth-1  | INFO [06-09|16:01:13.836] Enabling recording of key preimages since archive mode is used
node-geth-1  | INFO [06-09|16:01:13.838] Set global gas cap                       cap=50,000,000
node-geth-1  | INFO [06-09|16:01:13.839] Allocated trie memory caches             clean=307.00MiB dirty=0.00B
node-geth-1  | INFO [06-09|16:01:13.840] Using leveldb as the backing database
node-geth-1  | INFO [06-09|16:01:13.840] Allocated cache and file handles         database=/data/geth/chaindata cache=512.00MiB handles=524,288
node-geth-1  | INFO [06-09|16:01:13.874] Using LevelDB as the backing database
node-geth-1  | INFO [06-09|16:01:13.880] Opened ancient database                  database=/data/geth/chaindata/ancient/chain readonly=false
node-geth-1  | INFO [06-09|16:01:13.881] Disk storage enabled for ethash caches   dir=/data/geth/ethash count=3
node-geth-1  | INFO [06-09|16:01:13.881] Disk storage enabled for ethash DAGs     dir=/root/.ethash     count=2
node-geth-1  | INFO [06-09|16:01:13.881]
node-geth-1  | INFO [06-09|16:01:13.881] ---------------------------------------------------------------------------------------------------------------------------------------------------------
node-geth-1  | INFO [06-09|16:01:13.881] Chain ID:  84531 (unknown)
node-geth-1  | INFO [06-09|16:01:13.881] Consensus: Optimism
node-geth-1  | INFO [06-09|16:01:13.881]
node-node-1  | t=2023-06-09T16:01:18+0000 lvl=info msg="Initializing Rollup Node"
node-node-1  | t=2023-06-09T16:01:18+0000 lvl=info msg="Rollup Config"            l2_chain_id=84531 l2_network="unknown L2" l1_chain_id=5 l1_network=goerli l2_start_time=1,675,193,616 l2_block_hash=0xa3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76 l2_block_number=0 l1_block_hash=0x73d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d19 l1_block_number=8,410,981 regolith_time="@ 1683219600 ~ Thu May  4 17:00:00 UTC 2023"

node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="loaded new runtime config values!" p2p_seq_address=0x32a4e99A72c11E9DD3dC159909a2D7BD86C1Bc51
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="started p2p host"                  addrs="[/ip4/172.19.0.3/tcp/9222 /ip4/127.0.0.1/tcp/9222]" peerID=16Uiu2HAmBcJpEC3dq1iPMtRidcSX4oQd2fpwQYNbUXpuBwFr3jux
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="New local node record"             seq=1,686,326,479,620 id=b9d39ca895dfef8c7f08901177c33b663ef012ebf9b952b7d1228078c9d7192e ip=67.87.167.165 udp=9222 tcp=9222
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="started discovery service"         p2p=discv5 enr=enr:-J64QARbacZAt6HQX5tTvwhbfLjT-pmhym9Z-3tlwOpc37ccRlxaGheWlIlw1lkkUxct8_Xo5fVCt5ieYWHxLgPapnmGAYig5AsEgmlkgnY0gmlwhENXp6WHb3BzdGFja4SzlAUAiXNlY3AyNTZrMaEC8HRyzwqQ3qemh1VsRJqskq9AK0kosFmFtx1bgQdv-4eDdGNwgiQGg3VkcIIkBg id=b9d39ca895dfef8c7f08901177c33b663ef012ebf9b952b7d1228078c9d7192e
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="Starting JSON-RPC server"
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="starting metrics server"           addr=0.0.0.0 port=7300
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="Starting rollup node"              version=v0.0.0-09d23ee8-1681910976
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="Starting execution engine driver"
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="Rollup node started"
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="State loop started"
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="Loaded current L2 heads"           unsafe=0xa3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76:0 safe=0xa3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76:0 finalized=0xa3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76:0 unsafe_origin=0x73d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d19:8410981 safe_origin=0x73d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d19:8410981
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="Walking back L1Block by number"    curr=0x73d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d19:8410981 next=0x73d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d19:8410981 l2block=0xa3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76:0
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="Hit finalized L2 head, returning immediately" unsafe=0xa3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76:0 safe=0xa3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76:0 finalized=0xa3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76:0 unsafe_origin=0x73d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d19:8410981 safe_origin=0x73d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d19:8410981
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="Sync progress"                     reason="reset derivation work" l2_finalized=0xa3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76:0 l2_safe=0xa3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76:0 l2_unsafe=0xa3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76:0 l2_time=1,675,193,616 l1_derived=0x73d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d19:8410981
node-node-1  | t=2023-06-09T16:01:19+0000 lvl=info msg="completed reset of derivation pipeline" origin=0x73d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d19:8410981
node-node-1  | t=2023-06-09T16:01:20+0000 lvl=info msg="Reset of L1Retrieval done"              origin=0x73d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d19:8410981
node-node-1  | t=2023-06-09T16:01:20+0000 lvl=info msg="Advancing bq origin"                    origin=0x9a0d190f60d041217e993488603e91d6bd4db2640c59d9051d66845987c4cfbe:8410982 originBehind=false
node-node-1  | t=2023-06-09T16:01:23+0000 lvl=info msg="Advancing bq origin"                    origin=0xeedaf79c6b2cf29bfca4007a7a3a588cb28cd73d9d4c82968a8512ff46ac7d0a:8410983 originBehind=false
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="attempting connection"                  peer=16Uiu2HAm2DDytyPY7a2Wja3sBrWzo8YdeBrj1kfg3bTLBM5zZkAL
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="attempting connection"                  peer=16Uiu2HAm5L4KDH5oJmwnozT2Azr7x4sVNQhHfAiy9TQJWjJYEms6
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="attempting connection"                  peer=16Uiu2HAm2LrxjYdR4Y7sDXqq4gJBzqN5hFUroTVextDbG39PT6gw
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="attempting connection"                  peer=16Uiu2HAkuy49f6LWv42drP2Vszsi8q3wQEGq5TRk8Z2y6h5UXMZf
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="Advancing bq origin"                    origin=0x6d0c9e4de1c039e81c6aa3c37cfb96dbc8e95ec0ec939cf84f4849e4e949458c:8410984 originBehind=false
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="connected to peer"                      peer=16Uiu2HAm2DDytyPY7a2Wja3sBrWzo8YdeBrj1kfg3bTLBM5zZkAL addr=/ip4/34.200.196.89/tcp/30303
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="connected to peer"                      peer=16Uiu2HAm2LrxjYdR4Y7sDXqq4gJBzqN5hFUroTVextDbG39PT6gw addr=/ip4/54.242.71.143/tcp/9222
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="connected to peer"                      peer=16Uiu2HAm5L4KDH5oJmwnozT2Azr7x4sVNQhHfAiy9TQJWjJYEms6 addr=/ip4/3.86.131.48/tcp/9222
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="attempting connection"                  peer=16Uiu2HAm6kiaEHm1kgU6wynVtTAL3vnmWMFGTE7ZoebmgcTnisQF
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="attempting connection"                  peer=16Uiu2HAm2bXHt5gwZKCyw2EQfLuB85WWnRVZ9fw59cDhshnv3NEq
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="attempting connection"                  peer=16Uiu2HAmEzDUdCujo6vJusnVZkEGqgVton9pL5qqtnuyY3Prpr9c
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="connected to peer"                      peer=16Uiu2HAmEzDUdCujo6vJusnVZkEGqgVton9pL5qqtnuyY3Prpr9c addr=/ip4/34.194.131.51/tcp/30303
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="connected to peer"                      peer=16Uiu2HAm2bXHt5gwZKCyw2EQfLuB85WWnRVZ9fw59cDhshnv3NEq addr=/ip4/44.215.42.170/tcp/30303
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="connected to peer"                      peer=16Uiu2HAkuy49f6LWv42drP2Vszsi8q3wQEGq5TRk8Z2y6h5UXMZf addr=/ip4/194.60.201.245/tcp/9222
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="attempting connection"                  peer=16Uiu2HAmB7HPUCrqMFcEkDspA4MPWxQzPNvXCQnshJxZ3oAP9tQV
node-node-1  | t=2023-06-09T16:01:24+0000 lvl=info msg="attempting connection"                  peer=16Uiu2HAkvnd5SsQ6Qwbva2ucMF6Byg8S8G3o9CEYh9Ru37utWXeB
node-node-1  | t=2023-06-09T16:01:25+0000 lvl=info msg="connected to peer"                      peer=16Uiu2HAkvnd5SsQ6Qwbva2ucMF6Byg8S8G3o9CEYh9Ru37utWXeB addr=/ip4/3.235.246.196/tcp/9222
node-node-1  | t=2023-06-09T16:01:25+0000 lvl=info msg="connected to peer"                      peer=16Uiu2HAm6kiaEHm1kgU6wynVtTAL3vnmWMFGTE7ZoebmgcTnisQF addr=/ip4/45.77.5.208/tcp/9222
node-node-1  | t=2023-06-09T16:01:25+0000 lvl=info msg="connected to peer"                      peer=16Uiu2HAmB7HPUCrqMFcEkDspA4MPWxQzPNvXCQnshJxZ3oAP9tQV addr=/ip4/52.55.83.1/tcp/30303
node-node-1  | t=2023-06-09T16:01:25+0000 lvl=info msg="attempting connection"                  peer=16Uiu2HAkvNgBox8juqCyVu7ti53qZYX8cvXVpztGMZg1JUJ4Wgrh
node-node-1  | t=2023-06-09T16:01:25+0000 lvl=info msg="attempting connection"                  peer=16Uiu2HAm5nQaZukJUVwuee76Wp25KrNmKjGZ2zaxgSZxfgMJfgPL
node-node-1  | t=2023-06-09T16:01:25+0000 lvl=info msg="attempting connection"                  peer=16Uiu2HAmByiHBNFZ39h383aYgV6zrtF7pQ3UijMWgssDkCrXAj3p
node-node-1  | t=2023-06-09T16:01:25+0000 lvl=info msg="connected to peer"                      peer=16Uiu2HAkvNgBox8juqCyVu7ti53qZYX8cvXVpztGMZg1JUJ4Wgrh addr=/ip4/34.206.0.13/tcp/30303
node-node-1  | t=2023-06-09T16:01:25+0000 lvl=info msg="connected to peer"                      peer=16Uiu2HAm5nQaZukJUVwuee76Wp25KrNmKjGZ2zaxgSZxfgMJfgPL addr=/ip4/54.145.88.85/tcp/9222
node-node-1  | t=2023-06-09T16:01:25+0000 lvl=info msg="Received signed execution payload from p2p" id=0x93b2301518a6941d8f3ccc8215711a27b0d32a495438f89aa3d9ff077a9bbf74:5566434 peer=16Uiu2HAkvnd5SsQ6Qwbva2ucMF6Byg8S8G3o9CEYh9Ru37utWXeB
node-node-1  | t=2023-06-09T16:01:25+0000 lvl=info msg="connected to peer"                      peer=16Uiu2HAmByiHBNFZ39h383aYgV6zrtF7pQ3UijMWgssDkCrXAj3p addr=/ip4/95.216.10.106/tcp/9222
node-node-1  | t=2023-06-09T16:01:25+0000 lvl=info msg="Received signed execution payload from p2p" id=0xb1eab9b4d02e29dacb37189bf1511286e80a14505464e4d5f2f050da13b6e542:5566435 peer=16Uiu2HAmB7HPUCrqMFcEkDspA4MPWxQzPNvXCQnshJxZ3oAP9tQV

@wbnns
Copy link
Copy Markdown
Contributor

wbnns commented Jun 11, 2023

@Mitsuwa

Heya! Thanks for this PR! We'll do our best to review this as soon as we can.

@mdehoog mdehoog merged commit b92db3f into base:main Jun 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants