Skip to content

Commit 4c2c2b7

Browse files
authored
CI/CD: Publish Operator image (#180)
- Publish Operator container image to GHCR - Modern Debian (bookworm) - Correct Rust version (1.85.0) - No error masking - Ulimits set at runtime, not build time - Create Makefile to run the command for NCN keeper and operator - Update README.md #### NOTE Build ```bash docker build -f tip-router-operator-cli/Dockerfile . ``` Build with log ```bash docker build --progress=plain --no-cache -f tip-router-operator-cli/Dockerfile . ```
1 parent c8a12bf commit 4c2c2b7

15 files changed

+210
-46
lines changed

.github/workflows/build-container-images.yaml

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ on:
1010
type: choice
1111
options:
1212
- ncn-keeper
13+
- operator
1314

1415
env:
1516
REGISTRY: ghcr.io
@@ -32,31 +33,38 @@ jobs:
3233
username: ${{ github.actor }}
3334
password: ${{ secrets.GITHUB_TOKEN }}
3435

35-
- name: Determine Docker target and image name
36+
- name: Set image configuration
3637
id: config
3738
run: |
3839
case "${{ github.event.inputs.service_config }}" in
3940
"ncn-keeper")
4041
echo "target=jito-tip-router-ncn-keeper" >> $GITHUB_OUTPUT
41-
echo "service=jito-tip-router-ncn-keeper" >> $GITHUB_OUTPUT
42-
echo "image_name=${{ github.repository }}/jito-tip-router-ncn-keeper" >> $GITHUB_OUTPUT
42+
echo "image_name=jito-tip-router-ncn-keeper" >> $GITHUB_OUTPUT
43+
echo "dockerfile_path=./cli/Dockerfile" >> $GITHUB_OUTPUT
44+
echo "context_path=./cli" >> $GITHUB_OUTPUT
45+
;;
46+
"operator")
47+
echo "target=tip-router-operator-cli" >> $GITHUB_OUTPUT
48+
echo "image_name=tip-router-operator-cli" >> $GITHUB_OUTPUT
49+
echo "dockerfile_path=./tip-router-operator-cli/Dockerfile" >> $GITHUB_OUTPUT
50+
echo "context_path=./tip-router-operator-cli" >> $GITHUB_OUTPUT
4351
;;
4452
esac
4553
4654
- name: Extract metadata
4755
id: meta
4856
uses: docker/metadata-action@v5
4957
with:
50-
images: ${{ env.REGISTRY }}/${{ steps.config.outputs.image_name }}
58+
images: ${{ env.REGISTRY }}/${{ github.repository }}/${{ steps.config.outputs.image_name }}
5159
tags: |
52-
type=raw,value={{sha}}
53-
type=raw,value=latest
60+
type=raw,value=${{ github.ref_name }}-${{ github.event.inputs.service_config }}-{{sha}}
61+
type=raw,value=${{ github.ref_name }}-${{ github.event.inputs.service_config }}-latest
5462
5563
- name: Build and push container
5664
uses: docker/build-push-action@v5
5765
with:
58-
context: .
59-
file: ./cli/Dockerfile
66+
context: ${{ steps.config.outputs.context_path }}
67+
file: ${{ steps.config.outputs.dockerfile_path }}
6068
target: ${{ steps.config.outputs.target }}
6169
platforms: linux/amd64
6270
push: true

Makefile

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Docker management Makefile for Jito Tip Router
2+
3+
# Default target
4+
.PHONY: help
5+
help:
6+
@echo "Available targets:"
7+
@echo "NCN Keeper commands:"
8+
@echo " ncn-keeper-start - Start the main keeper service"
9+
@echo " ncn-keeper-start-metrics - Start the metrics-only keeper service"
10+
@echo " ncn-keeper-start-migrate - Start the migrate-only keeper service"
11+
@echo " ncn-keeper-stop - Stop and remove the main keeper service"
12+
@echo " ncn-keeper-stop-metrics - Stop and remove the metrics-only keeper service"
13+
@echo " ncn-keeper-logs - Follow logs for the main keeper service"
14+
@echo " ncn-keeper-logs-metrics - Follow logs for the metrics-only keeper service"
15+
@echo " ncn-keeper-logs-migrate - Follow logs for the migrate-only keeper service"
16+
@echo " ncn-keeper-start-all - Start all NCN keeper services"
17+
@echo " operator-start - Start the tip router operator service"
18+
@echo " operator-stop - Stop and remove the tip router operator service"
19+
@echo " operator-logs - Follow logs for the tip router operator service"
20+
@echo ""
21+
@echo "Utility commands:"
22+
@echo " start-all - Start all services (NCN keeper + operator)"
23+
@echo " clean - Stop and remove all services"
24+
25+
# NCN Keeper services
26+
.PHONY: ncn-keeper-start
27+
ncn-keeper-start:
28+
docker compose --env-file cli/.env up -d --build jito-tip-router-ncn-keeper --remove-orphans
29+
30+
.PHONY: ncn-keeper-start-metrics
31+
ncn-keeper-start-metrics:
32+
docker compose --env-file cli/.env up -d --build jito-tip-router-ncn-keeper-metrics-only --remove-orphans
33+
34+
.PHONY: ncn-keeper-start-migrate
35+
ncn-keeper-start-migrate:
36+
docker compose --env-file cli/.env up -d --build jito-tip-router-ncn-keeper-migrate-only --remove-orphans
37+
38+
.PHONY: ncn-keeper-start-all
39+
ncn-keeper-start-all: ncn-keeper-start ncn-keeper-start-metrics ncn-keeper-start-migrate
40+
@echo "All NCN keeper services started"
41+
42+
# Operator services
43+
.PHONY: operator-start
44+
operator-start:
45+
docker compose --env-file tip-router-operator-cli/.env up -d --build tip-router-operator-cli --remove-orphans
46+
47+
# NCN Keeper stop commands
48+
.PHONY: ncn-keeper-stop
49+
ncn-keeper-stop:
50+
docker stop jito-tip-router-ncn-keeper || true
51+
docker rm jito-tip-router-ncn-keeper || true
52+
53+
.PHONY: ncn-keeper-stop-metrics
54+
ncn-keeper-stop-metrics:
55+
docker stop jito-tip-router-ncn-keeper-metrics-only || true
56+
docker rm jito-tip-router-ncn-keeper-metrics-only || true
57+
58+
# Operator stop commands
59+
.PHONY: operator-stop
60+
operator-stop:
61+
docker stop tip-router-operator-cli || true
62+
docker rm tip-router-operator-cli || true
63+
64+
# NCN Keeper logs
65+
.PHONY: ncn-keeper-logs
66+
ncn-keeper-logs:
67+
docker logs jito-tip-router-ncn-keeper -f
68+
69+
.PHONY: ncn-keeper-logs-metrics
70+
ncn-keeper-logs-metrics:
71+
docker logs jito-tip-router-ncn-keeper-metrics-only -f
72+
73+
.PHONY: ncn-keeper-logs-migrate
74+
ncn-keeper-logs-migrate:
75+
docker logs jito-tip-router-ncn-keeper-migrate-only -f
76+
77+
# Operator logs
78+
.PHONY: operator-logs
79+
operator-logs:
80+
docker logs tip-router-operator-cli -f

README.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,56 @@
11
# Jito Tip Router
22

3+
## Overview
4+
5+
Jito Tip Router NCN will assume programmatic operations related to the distribution of MEV tips generated from the Jito Tip Distribution protocol every epoch, and, as part of these programmatic operations, will route some portion of all MEV tips collected to the DAO treasury and the NCN network participants.
6+
7+
## Development Setup
8+
9+
### Docker Services Management
10+
11+
This project includes a Makefile for easy management of Docker services. Use `make help` to see all available commands.
12+
13+
#### NCN Keeper Services
14+
15+
```bash
16+
# Start services
17+
make ncn-keeper-start # Main keeper service
18+
make ncn-keeper-start-metrics # Metrics-only service
19+
make ncn-keeper-start-migrate # Migration-only service
20+
make ncn-keeper-start-all # Start all NCN keeper services
21+
22+
# View logs
23+
make ncn-keeper-logs # Main keeper logs
24+
make ncn-keeper-logs-metrics # Metrics service logs
25+
make ncn-keeper-logs-migrate # Migration service logs
26+
27+
# Stop services
28+
make ncn-keeper-stop # Stop main keeper
29+
make ncn-keeper-stop-metrics # Stop metrics service
30+
```
31+
32+
#### Operator Services
33+
34+
```bash
35+
# Operator management
36+
make start-operator # Start tip router operator
37+
make logs-operator # View operator logs
38+
make stop-operator # Stop operator service
39+
```
40+
41+
#### Utility Commands
42+
43+
```bash
44+
make help # Show all available commands
45+
```
46+
47+
### Container Images
48+
49+
The project uses GitHub Actions to build container images for two main services:
50+
51+
- **NCN Keeper**: `jito-tip-router-ncn-keeper` (built from `./cli/`)
52+
- **Operator**: `tip-router-operator-cli` (built from `./tip-router-operator-cli/`)
53+
354
## Testing Setup
455

556
### Prerequisites

docker-compose.yaml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,40 @@ services:
8282
volumes:
8383
- ./credentials:/credentials
8484
restart: on-failure:5
85+
86+
tip-router-operator-cli:
87+
build:
88+
context: ./tip-router-operator-cli
89+
dockerfile: Dockerfile
90+
container_name: tip-router-operator-cli
91+
environment:
92+
- RUST_LOG=${RUST_LOG:-info}
93+
- KEYPAIR_PATH=${KEYPAIR_PATH}
94+
- LEDGER_PATH=${LEDGER_PATH}
95+
- ACCOUNT_PATHS=${ACCOUNT_PATHS}
96+
- FULL_SNAPSHOTS_PATH=${FULL_SNAPSHOTS_PATH}
97+
- SNAPSHOT_OUTPUT_DIR=${SNAPSHOT_OUTPUT_DIR}
98+
- OPERATOR_ADDRESS=${OPERATOR_ADDRESS}
99+
- RPC_URL=${RPC_URL}
100+
- NCN_ADDRESS=${NCN_ADDRESS}
101+
- TIP_DISTRIBUTION_PROGRAM_ID=${TIP_DISTRIBUTION_PROGRAM_ID}
102+
- TIP_PAYMENT_PROGRAM_ID=${TIP_PAYMENT_PROGRAM_ID}
103+
- ENABLE_SNAPSHOTS=${ENABLE_SNAPSHOTS:-false}
104+
- TIP_ROUTER_PROGRAM_ID=${TIP_ROUTER_PROGRAM_ID}
105+
- NUM_MONITORED_EPOCHS=${NUM_MONITORED_EPOCHS:-3}
106+
- START_NEXT_EPOCH=${START_NEXT_EPOCH:-false}
107+
- SAVE_PATH=${SAVE_PATH}
108+
- BACKUP_SNAPSHOTS_DIR=${BACKUP_SNAPSHOTS_DIR}
109+
- SOLANA_METRICS_CONFIG=${SOLANA_METRICS_CONFIG}
110+
- SET_MERKLE_ROOTS=${SET_MERKLE_ROOTS:-false}
111+
- CLAIM_TIPS=${CLAIM_TIPS:-false}
112+
- STARTING_STAGE=${STARTING_STAGE:-wait-for-next-epoch}
113+
volumes:
114+
- ./credentials:/credentials
115+
- ${LEDGER_PATH}:${LEDGER_PATH}
116+
- ${ACCOUNT_PATHS}:${ACCOUNT_PATHS}
117+
- ${FULL_SNAPSHOTS_PATH}:${FULL_SNAPSHOTS_PATH}
118+
- ${SNAPSHOT_OUTPUT_DIR}:${SNAPSHOT_OUTPUT_DIR}
119+
- ${SAVE_PATH}:${SAVE_PATH}
120+
- ${BACKUP_SNAPSHOTS_DIR}:${BACKUP_SNAPSHOTS_DIR}
121+
restart: on-failure:5

docker_logs.sh

Lines changed: 0 additions & 3 deletions
This file was deleted.

docker_logs_metrics.sh

Lines changed: 0 additions & 3 deletions
This file was deleted.

docker_logs_migrate.sh

Lines changed: 0 additions & 3 deletions
This file was deleted.

docker_start.sh

Lines changed: 0 additions & 3 deletions
This file was deleted.

docker_start_metrics.sh

Lines changed: 0 additions & 3 deletions
This file was deleted.

docker_start_migrate.sh

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)