forked from cerc-io/stack-orchestrator
Compare commits
71 Commits
Author | SHA1 | Date | |
---|---|---|---|
e22792dc4b | |||
d79053b137 | |||
85204ca29a | |||
d6d016cad8 | |||
3b553bb660 | |||
466c149f36 | |||
3c84ebff68 | |||
d5244726aa | |||
15ae2c0cdf | |||
6d5f661750 | |||
bc872b09fb | |||
a751e87dd4 | |||
5ba9a803de | |||
b56c84b93a | |||
1520f7413d | |||
1d78430679 | |||
46b726be9b | |||
b3b57b6f28 | |||
69b352dcce | |||
4e656df709 | |||
7fc6375886 | |||
ac02753ffe | |||
69d59b109b | |||
f62a8ff54f | |||
82a839d15f | |||
5a31cb50c3 | |||
fae2438e97 | |||
952ea29ca5 | |||
fbfc162ab7 | |||
6ff81b2049 | |||
3b3c688ee9 | |||
16bef78312 | |||
12e68ff1ec | |||
6f3f20739d | |||
caabaa35ff | |||
a265794bd7 | |||
5d7e7294c9 | |||
d9805666c3 | |||
582b92d277 | |||
|
dc19d68aa4 | ||
|
d57e8d0efd | ||
91d3613247 | |||
|
76ab4a7717 | ||
|
fd40aedadd | ||
|
3748fa38b1 | ||
|
aa4c52c174 | ||
|
609128d004 | ||
|
47164cb5f5 | ||
|
93c47ec5cc | ||
|
700ce586a6 | ||
|
223aacb16f | ||
|
c120ee2086 | ||
|
685e11ed6f | ||
6cf9869a57 | |||
00d34944a2 | |||
40424cc3b6 | |||
b594d15e91 | |||
500e60c480 | |||
8c3a8eb33d | |||
27067e061c | |||
eab5a6ccf1 | |||
7ed2448f03 | |||
e9e1d8bcd4 | |||
0563764ca4 | |||
069dd50fd3 | |||
595fbe4eca | |||
3e949b403f | |||
5524e95434 | |||
616982d9ba | |||
2cbb6e1f1d | |||
0712012cf4 |
@ -1,54 +0,0 @@
|
|||||||
name: Container Registry Test
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: '*'
|
|
||||||
paths:
|
|
||||||
- '!**'
|
|
||||||
- '.gitea/workflows/triggers/test-container-registry'
|
|
||||||
- '.gitea/workflows/test-container-registry.yml'
|
|
||||||
- 'tests/container-registry/run-test.sh'
|
|
||||||
schedule: # Note: coordinate with other tests to not overload runners at the same time of day
|
|
||||||
- cron: '6 19 * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
name: "Run contaier registry hosting test on kind/k8s"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: "Clone project repository"
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
# At present the stock setup-python action fails on Linux/aarch64
|
|
||||||
# Conditional steps below workaroud this by using deadsnakes for that case only
|
|
||||||
- name: "Install Python for ARM on Linux"
|
|
||||||
if: ${{ runner.arch == 'arm64' && runner.os == 'Linux' }}
|
|
||||||
uses: deadsnakes/action@v3.0.1
|
|
||||||
with:
|
|
||||||
python-version: '3.8'
|
|
||||||
- name: "Install Python cases other than ARM on Linux"
|
|
||||||
if: ${{ ! (runner.arch == 'arm64' && runner.os == 'Linux') }}
|
|
||||||
uses: actions/setup-python@v4
|
|
||||||
with:
|
|
||||||
python-version: '3.8'
|
|
||||||
- name: "Print Python version"
|
|
||||||
run: python3 --version
|
|
||||||
- name: "Install shiv"
|
|
||||||
run: pip install shiv
|
|
||||||
- name: "Generate build version file"
|
|
||||||
run: ./scripts/create_build_tag_file.sh
|
|
||||||
- name: "Build local shiv package"
|
|
||||||
run: ./scripts/build_shiv_package.sh
|
|
||||||
- name: "Check cgroups version"
|
|
||||||
run: mount | grep cgroup
|
|
||||||
- name: "Install kind"
|
|
||||||
run: ./tests/scripts/install-kind.sh
|
|
||||||
- name: "Install Kubectl"
|
|
||||||
run: ./tests/scripts/install-kubectl.sh
|
|
||||||
- name: "Install ed" # Only needed until we remove the need to edit the spec file
|
|
||||||
run: apt update && apt install -y ed
|
|
||||||
- name: "Run container registry deployment test"
|
|
||||||
run: |
|
|
||||||
source /opt/bash-utils/cgroup-helper.sh
|
|
||||||
join_cgroup
|
|
||||||
./tests/container-registry/run-test.sh
|
|
||||||
|
|
@ -48,5 +48,5 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
source /opt/bash-utils/cgroup-helper.sh
|
source /opt/bash-utils/cgroup-helper.sh
|
||||||
join_cgroup
|
join_cgroup
|
||||||
./tests/database/run-test.sh
|
CERC_SCRIPT_DEBUG=1 ./tests/database/run-test.sh
|
||||||
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
Change this file to trigger running the test-container-registry CI job
|
|
@ -12,8 +12,8 @@ spec_file_name="${stack_name}-spec.yml"
|
|||||||
deployment_dir_name="${stack_name}-deployment"
|
deployment_dir_name="${stack_name}-deployment"
|
||||||
rm -f ${spec_file_name}
|
rm -f ${spec_file_name}
|
||||||
rm -rf ${deployment_dir_name}
|
rm -rf ${deployment_dir_name}
|
||||||
laconic-so --stack ${stack_name} deploy --deploy-to compose init --output ${spec_file_name}
|
laconic-so --stack ${stack_name} deploy --deploy-to k8s-kind init --output ${spec_file_name}
|
||||||
laconic-so --stack ${stack_name} deploy --deploy-to compose create --deployment-dir ${deployment_dir_name} --spec-file ${spec_file_name}
|
laconic-so --stack ${stack_name} deploy --deploy-to k8s-kind create --deployment-dir ${deployment_dir_name} --spec-file ${spec_file_name}
|
||||||
#laconic-so deployment --dir ${deployment_dir_name} start
|
#laconic-so deployment --dir ${deployment_dir_name} start
|
||||||
#laconic-so deployment --dir ${deployment_dir_name} ps
|
#laconic-so deployment --dir ${deployment_dir_name} ps
|
||||||
#laconic-so deployment --dir ${deployment_dir_name} stop
|
#laconic-so deployment --dir ${deployment_dir_name} stop
|
||||||
|
@ -27,7 +27,7 @@ import subprocess
|
|||||||
import click
|
import click
|
||||||
import importlib.resources
|
import importlib.resources
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from stack_orchestrator.util import include_exclude_check, get_parsed_stack_config, stack_is_external, warn_exit
|
from stack_orchestrator.util import include_exclude_check, get_parsed_stack_config, stack_is_external
|
||||||
from stack_orchestrator.base import get_npm_registry_url
|
from stack_orchestrator.base import get_npm_registry_url
|
||||||
|
|
||||||
# TODO: find a place for this
|
# TODO: find a place for this
|
||||||
@ -164,8 +164,6 @@ def command(ctx, include, exclude, force_rebuild, extra_build_args):
|
|||||||
containers_in_scope = []
|
containers_in_scope = []
|
||||||
if stack:
|
if stack:
|
||||||
stack_config = get_parsed_stack_config(stack)
|
stack_config = get_parsed_stack_config(stack)
|
||||||
if "containers" not in stack_config or stack_config["containers"] is None:
|
|
||||||
warn_exit(f"stack {stack} does not define any containers")
|
|
||||||
containers_in_scope = stack_config['containers']
|
containers_in_scope = stack_config['containers']
|
||||||
else:
|
else:
|
||||||
containers_in_scope = all_containers
|
containers_in_scope = all_containers
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
services:
|
|
||||||
registry:
|
|
||||||
image: registry:2.8
|
|
||||||
restart: always
|
|
||||||
environment:
|
|
||||||
REGISTRY_LOG_LEVEL: ${REGISTRY_LOG_LEVEL}
|
|
||||||
volumes:
|
|
||||||
- registry-data:/var/lib/registry
|
|
||||||
ports:
|
|
||||||
- "5000"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
registry-data:
|
|
@ -1,12 +0,0 @@
|
|||||||
version: "3.2"
|
|
||||||
|
|
||||||
services:
|
|
||||||
mars:
|
|
||||||
image: cerc/mars-v2:local
|
|
||||||
restart: always
|
|
||||||
ports:
|
|
||||||
- "3000:3000"
|
|
||||||
environment:
|
|
||||||
- URL_OSMOSIS_REST=https://lcd-osmosis.blockapsis.com
|
|
||||||
- URL_OSMOSIS_RPC=https://rpc-osmosis.blockapsis.com
|
|
||||||
- WALLET_CONNECT_ID=0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x
|
|
@ -1,4 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Build the mars-v2 image
|
|
||||||
source ${CERC_CONTAINER_BASE_DIR}/build-base.sh
|
|
||||||
docker build -t cerc/mars-v2:local -f ${CERC_REPO_BASE_DIR}/mars-v2-frontend/Dockerfile ${build_command_args} ${CERC_REPO_BASE_DIR}/mars-v2-frontend
|
|
@ -1,3 +0,0 @@
|
|||||||
# Container Registry Stack
|
|
||||||
|
|
||||||
Host a container image registry
|
|
@ -1,5 +0,0 @@
|
|||||||
version: "1.0"
|
|
||||||
name: container-registry
|
|
||||||
description: "Container registry stack"
|
|
||||||
pods:
|
|
||||||
- container-registry
|
|
@ -1,16 +0,0 @@
|
|||||||
# mars
|
|
||||||
|
|
||||||
On a fresh Digital Ocean droplet with Ubuntu:
|
|
||||||
|
|
||||||
```
|
|
||||||
git clone https://github.com/cerc-io/stack-orchestrator
|
|
||||||
cd stack-orchestrator
|
|
||||||
./scripts/quick-install-linux.sh
|
|
||||||
```
|
|
||||||
Read and follow the instructions output from the above output to complete installation, then:
|
|
||||||
|
|
||||||
```
|
|
||||||
laconic-so --stack mars-v2 setup-repositories
|
|
||||||
laconic-so --stack mars-v2 build-containers
|
|
||||||
laconic-so --stack mars-v2 deploy up
|
|
||||||
```
|
|
@ -1,8 +0,0 @@
|
|||||||
version: "0.1"
|
|
||||||
name: mars-v2
|
|
||||||
repos:
|
|
||||||
- github.com/mars-protocol/mars-v2-frontend
|
|
||||||
containers:
|
|
||||||
- cerc/mars-v2
|
|
||||||
pods:
|
|
||||||
- mars-v2
|
|
@ -1,146 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
|
|
||||||
set -x
|
|
||||||
# Dump environment variables for debugging
|
|
||||||
echo "Environment variables:"
|
|
||||||
env
|
|
||||||
fi
|
|
||||||
|
|
||||||
stack="container-registry"
|
|
||||||
|
|
||||||
# Helper functions: TODO move into a separate file
|
|
||||||
wait_for_pods_started () {
|
|
||||||
for i in {1..50}
|
|
||||||
do
|
|
||||||
local ps_output=$( $TEST_TARGET_SO deployment --dir $test_deployment_dir ps )
|
|
||||||
|
|
||||||
if [[ "$ps_output" == *"Running containers:"* ]]; then
|
|
||||||
# if ready, return
|
|
||||||
return
|
|
||||||
else
|
|
||||||
# if not ready, wait
|
|
||||||
sleep 5
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
# Timed out, error exit
|
|
||||||
echo "waiting for pods to start: FAILED"
|
|
||||||
delete_cluster_exit
|
|
||||||
}
|
|
||||||
|
|
||||||
wait_for_log_output () {
|
|
||||||
for i in {1..50}
|
|
||||||
do
|
|
||||||
|
|
||||||
local log_output=$( $TEST_TARGET_SO deployment --dir $test_deployment_dir logs )
|
|
||||||
|
|
||||||
if [[ ! -z "$log_output" ]]; then
|
|
||||||
# if ready, return
|
|
||||||
return
|
|
||||||
else
|
|
||||||
# if not ready, wait
|
|
||||||
sleep 5
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
# Timed out, error exit
|
|
||||||
echo "waiting for pods log content: FAILED"
|
|
||||||
delete_cluster_exit
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
delete_cluster_exit () {
|
|
||||||
$TEST_TARGET_SO deployment --dir $test_deployment_dir stop --delete-volumes
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Note: eventually this test should be folded into ../deploy/
|
|
||||||
# but keeping it separate for now for convenience
|
|
||||||
TEST_TARGET_SO=$( ls -t1 ./package/laconic-so* | head -1 )
|
|
||||||
# Set a non-default repo dir
|
|
||||||
export CERC_REPO_BASE_DIR=~/stack-orchestrator-test/repo-base-dir
|
|
||||||
echo "Testing this package: $TEST_TARGET_SO"
|
|
||||||
echo "Test version command"
|
|
||||||
reported_version_string=$( $TEST_TARGET_SO version )
|
|
||||||
echo "Version reported is: ${reported_version_string}"
|
|
||||||
echo "Cloning repositories into: $CERC_REPO_BASE_DIR"
|
|
||||||
rm -rf $CERC_REPO_BASE_DIR
|
|
||||||
mkdir -p $CERC_REPO_BASE_DIR
|
|
||||||
$TEST_TARGET_SO --stack ${stack} setup-repositories
|
|
||||||
$TEST_TARGET_SO --stack ${stack} build-containers
|
|
||||||
# Test basic stack-orchestrator deploy to k8s
|
|
||||||
test_deployment_dir=$CERC_REPO_BASE_DIR/${stack}-deployment-dir
|
|
||||||
test_deployment_spec=$CERC_REPO_BASE_DIR/${stack}-deployment-spec.yml
|
|
||||||
$TEST_TARGET_SO --stack ${stack} deploy --deploy-to k8s-kind init --output $test_deployment_spec --config CERC_TEST_PARAM_1=PASSED
|
|
||||||
# Check the file now exists
|
|
||||||
if [ ! -f "$test_deployment_spec" ]; then
|
|
||||||
echo "deploy init test: spec file not present"
|
|
||||||
echo "deploy init test: FAILED"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "deploy init test: passed"
|
|
||||||
|
|
||||||
# Switch to a full path for bind mount.
|
|
||||||
volume_name="registry-data"
|
|
||||||
sed -i "s|^\(\s*${volume_name}:$\)$|\1 ${test_deployment_dir}/data/${volume_name}|" $test_deployment_spec
|
|
||||||
|
|
||||||
# Add ingress config to the spec file
|
|
||||||
ed $test_deployment_spec <<IngressSpec
|
|
||||||
/network:/
|
|
||||||
a
|
|
||||||
http-proxy:
|
|
||||||
- host-name: localhost
|
|
||||||
routes:
|
|
||||||
- path: /
|
|
||||||
proxy-to: registry:5000
|
|
||||||
.
|
|
||||||
w
|
|
||||||
q
|
|
||||||
IngressSpec
|
|
||||||
|
|
||||||
$TEST_TARGET_SO --stack ${stack} deploy create --spec-file $test_deployment_spec --deployment-dir $test_deployment_dir
|
|
||||||
# Check the deployment dir exists
|
|
||||||
if [ ! -d "$test_deployment_dir" ]; then
|
|
||||||
echo "deploy create test: deployment directory not present"
|
|
||||||
echo "deploy create test: FAILED"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "deploy create test: passed"
|
|
||||||
|
|
||||||
# Note: this isn't strictly necessary, except we end up trying to push the image into
|
|
||||||
# the kind cluster then fails because it can't be found locally
|
|
||||||
docker pull registry:2.8
|
|
||||||
|
|
||||||
# Try to start the deployment
|
|
||||||
$TEST_TARGET_SO deployment --dir $test_deployment_dir start
|
|
||||||
wait_for_pods_started
|
|
||||||
# Check logs command works
|
|
||||||
wait_for_log_output
|
|
||||||
sleep 1
|
|
||||||
log_output_3=$( $TEST_TARGET_SO deployment --dir $test_deployment_dir logs )
|
|
||||||
if [[ "$log_output_3" == *"listening on"* ]]; then
|
|
||||||
echo "deployment logs test: passed"
|
|
||||||
else
|
|
||||||
echo "deployment logs test: FAILED"
|
|
||||||
echo $log_output_3
|
|
||||||
delete_cluster_exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check that we can use the registry
|
|
||||||
# Note: since this pulls from the DockerCo registry without auth it's possible it'll run into rate limiting issues
|
|
||||||
docker pull hello-world
|
|
||||||
docker tag hello-world localhost:80/hello-world
|
|
||||||
docker push localhost:80/hello-world
|
|
||||||
# Then do a quick check that we actually pushed something there
|
|
||||||
# See: https://stackoverflow.com/questions/31251356/how-to-get-a-list-of-images-on-docker-registry-v2
|
|
||||||
registry_response=$(curl -s -X GET http://localhost:80/v2/_catalog)
|
|
||||||
if [[ "$registry_response" == *"{\"repositories\":[\"hello-world\"]}"* ]]; then
|
|
||||||
echo "registry content test: passed"
|
|
||||||
else
|
|
||||||
echo "registry content test: FAILED"
|
|
||||||
echo $registry_response
|
|
||||||
delete_cluster_exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Stop and clean up
|
|
||||||
$TEST_TARGET_SO deployment --dir $test_deployment_dir stop --delete-volumes
|
|
||||||
echo "Test passed"
|
|
Loading…
Reference in New Issue
Block a user