-
Notifications
You must be signed in to change notification settings - Fork 12
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
Starship integration #56
Merged
Merged
Changes from all commits
Commits
Show all changes
35 commits
Select commit
Hold shift + click to select a range
486c697
Semi working integration of Starship with mesh-security with custom code
Anmol1696 a3701a1
Semi working full mesh security lifecycle
Anmol1696 7a9cb35
Update devnet setup for starship multi-node setup
Anmol1696 078925e
rename denoms to uosmo and ujuno to get seperation of chains
Anmol1696 deb76ef
Cleanup the tests: update the structure
Anmol1696 e71cb9e
Fix setup command and update cmd main file
Anmol1696 802c532
Update devnet information for latest contracts and endpoints
Anmol1696 2c72b27
update endpoints
Anmol1696 8a7f670
2 way inital devnet
Anmol1696 aaedeb0
update new devnet
Anmol1696 6a10b9e
updated devnet, 2 chain mesh setup working
Anmol1696 e9e3fb2
add e2e tests of 2 way contract to run in the CI
Anmol1696 6b41389
run a particular function for test
Anmol1696 b311939
working model of 2 way contract
Anmol1696 3f5cecf
Merge remote-tracking branch 'origin/main' into anmol/starship-2-way-…
Anmol1696 2f313c0
Revert adhoc changes made to mesh-security-sdk for hackathon
Anmol1696 7bee6fa
revert makefile for demo app
Anmol1696 ca312d1
move testdata outside for using it with e2e tests and startship tests
Anmol1696 83c254b
Merge main into branch
Anmol1696 086be79
update starship yaml files to run with mesh-security-sdk
Anmol1696 3df8ca4
Merge remote-tracking branch 'origin/main' into anmol/trim-starship-i…
Anmol1696 8a11acb
working version of starship with meshd
Anmol1696 4b38473
fix main_test.go and go mod
Anmol1696 4626a37
fix ci starship config
Anmol1696 3e23f9d
run starship ci on push to test branch
Anmol1696 8eac1af
fix typo errors
Anmol1696 24f4264
fix typos and type errors
Anmol1696 5d5dd72
add step to perform go mod before setting up the infra
Anmol1696 ef9cac7
Merge pull request #65 from osmosis-labs/anmol/trim-starship-integration
Anmol1696 e571715
commit to trigger CI
Anmol1696 909a74d
add retry of running tests incase of transient errors
Anmol1696 155cbef
temp disable workflows in the CI
Anmol1696 9ebf4f5
Add readme, update make commands, add todo to change docker image in …
Anmol1696 0d61a22
remove ci-debuging for the PR
Anmol1696 0c6f735
update docker image to use ghcr.io meshd image
Anmol1696 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
name: Starship E2E tests | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
branches: | ||
- main | ||
workflow_dispatch: {} | ||
|
||
jobs: | ||
e2e-test: | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 30 | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
|
||
- name: Set up Go 1.x | ||
uses: actions/setup-go@v2 | ||
with: | ||
go-version: ^1.20 | ||
id: go | ||
|
||
- name: Deps | ||
run: | | ||
cd tests/starship/ | ||
go mod tidy | ||
|
||
# Starship Infra setup | ||
# - Connects to k8s cluster with kubeconfig (digital ocean) | ||
# - Creates a new namespace based on the name (deleted in next step) | ||
# - Spins up the infra with the given config file | ||
# - Waits till all nodes are running (timeout 30m) | ||
# - Port forward all ports to localhost for next steps to connect | ||
- name: Setup Test infra | ||
id: starship-action | ||
uses: cosmology-tech/starship-action@0.2.15 | ||
with: | ||
values: tests/starship/configs/ci.yaml | ||
port-forward: true | ||
version: 0.1.46-rc1 | ||
|
||
- name: Run Tests | ||
id: run-tests | ||
run: | | ||
cd tests/starship/ | ||
make test | ||
|
||
- name: Run Tests (retry on failure) | ||
if: steps.run-tests.outcome == 'failure' | ||
run: | | ||
cd tests/starship/ | ||
make test | ||
|
||
# Starship resource cleanup on cluster | ||
- name: Cleanup cluster | ||
if: always() | ||
run: | | ||
helm delete $DEVNET_NAME --debug --namespace $DEVNET_NAMESPACE --wait || true | ||
kubectl delete namespace $DEVNET_NAMESPACE --wait=true || true | ||
env: | ||
DEVNET_NAME: ${{ steps.starship-action.outputs.name }} | ||
DEVNET_NAMESPACE: ${{ steps.starship-action.outputs.namespace }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
#!/usr/bin/make -f | ||
|
||
BUILD_DIR = ./build | ||
|
||
all: test | ||
|
||
test: | ||
go test -count=1 -mod=readonly -v -race -run Test2WayContract ./... | ||
|
||
build-setup: | ||
cd setup && go build cmd/... -o build/ ./setup | ||
|
||
run-setup: | ||
cd setup && go run ./... | ||
|
||
build: | ||
CGO_ENABLED=1 go test -c -mod=readonly -o $(BUILD_DIR)/mesh-security.e2e.test | ||
|
||
build-linux: | ||
CGO_ENABLED=1 GOOS=linux go test -c -mod=readonly -o $(BUILD_DIR)/mesh-security.e2e.test | ||
|
||
.PHONY: all build build-linux test | ||
|
||
############################################################################### | ||
### Starship Helm Charts ### | ||
############################################################################### | ||
NAME = mesh-security | ||
FILE = configs/local.yaml | ||
|
||
HELM_REPO = starship | ||
HELM_CHART = devnet | ||
HELM_VERSION = v0.1.46-rc1 | ||
|
||
.PHONY: check | ||
setup-deps: | ||
bash $(CURDIR)/scripts/dev-setup.sh | ||
|
||
install: | ||
bash $(CURDIR)/scripts/install.sh --config $(FILE) --version $(HELM_VERSION) --name $(NAME) | ||
|
||
debug: | ||
bash $(CURDIR)/scripts/install.sh --config $(FILE) --version $(HELM_VERSION) --name $(NAME) --dry-run | ||
|
||
delete: | ||
-helm delete $(NAME) | ||
|
||
stop: stop-forward delete | ||
|
||
############################################################################### | ||
### Port forward ### | ||
############################################################################### | ||
|
||
.PHONY: port-forward | ||
port-forward: | ||
bash $(CURDIR)/scripts/port-forward.sh --config=$(FILE) | ||
|
||
.PHONY: stop-forward | ||
stop-forward: | ||
-pkill -f "port-forward" | ||
|
||
############################################################################### | ||
### Local Kind Setup ### | ||
############################################################################### | ||
KIND_CLUSTER=starship | ||
|
||
.PHONY: setup-kind | ||
setup-kind: | ||
kind create cluster --name $(KIND_CLUSTER) | ||
|
||
.PHONY: clean-kind | ||
clean-kind: | ||
kind delete cluster --name $(KIND_CLUSTER) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
# Starship Tests | ||
Multi-chain e2e tests that run against any chain, using chain binaries, relayers | ||
and deploying Mesh-Security contracts. | ||
|
||
Starship runs by separating out the infra from the tests that are run against the infra. | ||
|
||
## Getting Started | ||
### Setup script | ||
In the `tests/starship` dir, run | ||
|
||
```bash | ||
make setup-deps ## Installs dependencies for Starship | ||
``` | ||
|
||
### Manul install (alternate) | ||
Alternatively to the setup script one can just install the deps directly: | ||
* docker: https://docs.docker.com/get-docker/ | ||
* kubectl: https://kubernetes.io/docs/tasks/tools/ | ||
* kind: https://kind.sigs.k8s.io/docs/user/quick-start/#installation | ||
* helm: https://helm.sh/docs/intro/install/ | ||
* yq: https://github.com/mikefarah/yq/#install | ||
|
||
## Connect to a kubernetes cluster | ||
### Spinup local cluster | ||
On Linux: | ||
```bash | ||
make setup-kind | ||
``` | ||
|
||
On Mac: | ||
Use Docker Desktop to setup kubernetes cluster: https://docs.docker.com/desktop/kubernetes/#turn-on-kubernetes | ||
|
||
### Connect to a remote cluster (alternate) | ||
If one has access to a k8s cluster via a `kubeconfig` file one can run Starship directly on the remote cluster. | ||
|
||
## Check connection with cluster | ||
Run | ||
```bash | ||
kubectl get nodes | ||
``` | ||
|
||
## Run Tests | ||
Once the initial connection and setup is done, then one can spin up starship infra with | ||
|
||
```bash | ||
make install | ||
# OR if you want to run specific config file | ||
make install FILE=configs/devnet.yaml | ||
``` | ||
|
||
Once the helm chart is installed, you will have to wait for pods to be in a `Running` state. Usually takes 3-5 mins depending on the resources available. | ||
Can check with | ||
```bash | ||
kubectl get pods | ||
``` | ||
|
||
When all pods are in `Running` state, run port-forwarding to access the nodes on localhost | ||
```bash | ||
make port-forward | ||
# All exposed endpoints would be printed by this command | ||
``` | ||
|
||
Now you can run the tests with: | ||
```bash | ||
make test | ||
``` | ||
|
||
Once done, cleanup with: | ||
```bash | ||
make stop | ||
``` | ||
|
||
|
||
## Configs | ||
Starship configs is the definition of the infra we want to spin up. | ||
Present in `test/starship/configs`, are multiple versions of the similar infra, tweaked to be able to run in different environments | ||
* `configs/local.yaml`: Config file to be able to run locally | ||
* `configs/devnet.yaml`: Supposed to be run on a larger k8s cluster, with more resources and number of validators | ||
* `configs/ci.yaml`: Limited resources on the GH-Action runner, can be adapted for with reducing cpu,memory allocated | ||
|
||
All the config files are similar topology, but different resources allocated. | ||
Topology: | ||
* 2 chains: `mesh-1` and `mesh-2` (both running `mesh-security-sdk` demo app) | ||
* 1 hermes relayer: running between the chains, in pull mode (1.6.0) | ||
* Registry service: analogous to cosmos chain-registry, but for only our infra | ||
* Optionally explorer: ping-pub explorer for the mini cosmos | ||
|
||
Details of each of arguments in the config file can be found [here](https://starship.cosmology.tech/config/chains) | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
chains: | ||
- name: mesh-1 | ||
type: custom | ||
numValidators: 1 | ||
image: ghcr.io/osmosis-labs/meshd:latest | ||
home: /root/.meshd | ||
binary: meshd | ||
prefix: mesh | ||
denom: stake | ||
coins: 100000000000000stake | ||
hdPath: m/44'/118'/0'/0/0 | ||
coinType: 118 | ||
repo: https://github.com/osmosis/mesh-security-sdk | ||
genesis: | ||
app_state: | ||
meshsecurity: | ||
params: | ||
epoch_length: 10 | ||
staking: | ||
params: | ||
unbonding_time: 200s | ||
ports: | ||
rest: 1313 | ||
rpc: 26653 | ||
faucet: 8003 | ||
resources: | ||
cpu: "0.2" | ||
memory: "200M" | ||
faucet: | ||
concurreny: 2 | ||
resources: | ||
cpu: "0.1" | ||
memory: "100M" | ||
- name: mesh-2 | ||
type: custom | ||
numValidators: 1 | ||
image: ghcr.io/osmosis-labs/meshd:latest | ||
home: /root/.meshd | ||
binary: meshd | ||
prefix: mesh | ||
denom: stake | ||
coins: 100000000000000stake | ||
hdPath: m/44'/118'/0'/0/0 | ||
coinType: 118 | ||
repo: https://github.com/osmosis/mesh-security-sdk | ||
genesis: | ||
app_state: | ||
meshsecurity: | ||
params: | ||
epoch_length: 10 | ||
staking: | ||
params: | ||
unbonding_time: 200s | ||
ports: | ||
rest: 1317 | ||
rpc: 26657 | ||
faucet: 8007 | ||
resources: | ||
cpu: "0.2" | ||
memory: "200M" | ||
faucet: | ||
concurreny: 2 | ||
resources: | ||
cpu: "0.1" | ||
memory: "100M" | ||
|
||
relayers: | ||
- name: mesh-1-mesh-2 | ||
type: hermes | ||
replicas: 1 | ||
image: ghcr.io/cosmology-tech/starship/hermes:1.6.0 | ||
chains: | ||
- mesh-1 | ||
- mesh-2 | ||
config: | ||
event_source: | ||
mode: pull | ||
resources: | ||
cpu: "0.1" | ||
memory: "100M" | ||
|
||
registry: | ||
enabled: true | ||
ports: | ||
rest: 8081 | ||
resources: | ||
cpu: "0.1" | ||
memory: "100M" | ||
|
||
exposer: | ||
resources: | ||
cpu: "0.1" | ||
memory: "100M" |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No sure if we want to run this on every PR, takes around 15mins to run the CI