Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
ba779d8
init git hub action
kristinaNikolaevaa Oct 11, 2022
2c9af3f
fix
kristinaNikolaevaa Oct 11, 2022
e870057
Update deploy.yml
kristinaNikolaevaa Oct 11, 2022
be46e9c
Update deploy.yml
kristinaNikolaevaa Oct 11, 2022
93cedc5
fixed
kristinaNikolaevaa Oct 11, 2022
c06f0da
Update deploy.py
kristinaNikolaevaa Oct 11, 2022
7648f9b
logs
kristinaNikolaevaa Oct 11, 2022
f787398
logs
kristinaNikolaevaa Oct 11, 2022
e80741e
Update deploy.yml
kristinaNikolaevaa Oct 11, 2022
19df223
test
kristinaNikolaevaa Oct 11, 2022
84daa23
fix
kristinaNikolaevaa Oct 11, 2022
0280dcb
fix
kristinaNikolaevaa Oct 11, 2022
ba0d41c
try
kristinaNikolaevaa Oct 11, 2022
f4372cb
test
kristinaNikolaevaa Oct 11, 2022
65d82b1
fix
kristinaNikolaevaa Oct 11, 2022
19c9b27
Update deploy.py
kristinaNikolaevaa Oct 11, 2022
22830ed
fix
kristinaNikolaevaa Oct 11, 2022
5b77b0f
try fix uniswap tests
kristinaNikolaevaa Oct 12, 2022
77e7f80
Update deploy.py
kristinaNikolaevaa Oct 12, 2022
001eef0
added logs
kristinaNikolaevaa Oct 12, 2022
93d2a0c
added logs
kristinaNikolaevaa Oct 12, 2022
92dd0f0
Update deploy.py
kristinaNikolaevaa Oct 12, 2022
eb73e98
Update deploy.py
kristinaNikolaevaa Oct 12, 2022
69c6635
test
kristinaNikolaevaa Oct 12, 2022
bd300fb
init git hub action
kristinaNikolaevaa Oct 11, 2022
e3752ad
Update deploy.py
kristinaNikolaevaa Oct 12, 2022
81a70f8
Merge branch 'feature/NDEV-698/move-workflow-from-bildkite' of https:…
kristinaNikolaevaa Oct 12, 2022
6eceec6
fix
kristinaNikolaevaa Oct 12, 2022
5d903f7
Merge branch 'develop' into feature/NDEV-698/move-workflow-from-bildkite
kristinaNikolaevaa Oct 19, 2022
68f74ab
Update pipeline.yml
kristinaNikolaevaa Oct 19, 2022
c41e070
Merge branch 'develop' into feature/NDEV-698/move-workflow-from-bildkite
kristinaNikolaevaa Oct 20, 2022
77253b5
new runners
kristinaNikolaevaa Oct 20, 2022
a7a21ea
python -> python3
kristinaNikolaevaa Oct 24, 2022
a55dbe8
Update pipeline.yml
kristinaNikolaevaa Oct 24, 2022
3ecdbfc
Update pipeline.yml
kristinaNikolaevaa Oct 24, 2022
fe4dfe3
Update pipeline.yml
kristinaNikolaevaa Oct 24, 2022
0133625
Update pipeline.yml
kristinaNikolaevaa Oct 24, 2022
687eb3a
Update pipeline.yml
kristinaNikolaevaa Oct 24, 2022
4701b73
Update pipeline.yml
kristinaNikolaevaa Oct 24, 2022
6c9faec
Update pipeline.yml
kristinaNikolaevaa Oct 24, 2022
f5bd056
fixed after review
kristinaNikolaevaa Oct 25, 2022
867ee45
Update pipeline.yml
kristinaNikolaevaa Oct 20, 2022
4d6be6c
Merge branch 'develop' into feature/NDEV-698/move-workflow-from-bildkite
kristinaNikolaevaa Oct 27, 2022
3a2182a
Merge branch 'feature/NDEV-698/move-workflow-from-bildkite' of https:…
kristinaNikolaevaa Oct 27, 2022
34e0c07
fixed after review
kristinaNikolaevaa Oct 28, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
init git hub action
  • Loading branch information
kristinaNikolaevaa committed Oct 11, 2022
commit ba779d8c8a76535fb7f7a19286ab704a6ae3a51b
179 changes: 179 additions & 0 deletions .github/workflows/deploy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
import os
import time
import sys
import docker
import subprocess
from python_terraform import Terraform
try:
import click
except ImportError:
print("Please install click library: pip install click==8.0.3")
sys.exit(1)


@click.group()
def cli():
pass


githab_sha = "247f98b26f325530623ece2a749ffd1787ded7"
githab_build_id = 1
TFSTATE_BUCKET = "nl-ci-stands"
TFSTATE_KEY = f"tests/test-{githab_sha}-{githab_build_id}"
TFSTATE_REGION = "us-east-2"
IMAGE_NAME = "neonlabsorg/proxy"
DOCKER_USER = os.environ.get("DHUBU")
DOCKER_PASSWORD = os.environ.get("DHUBP")

UNISWAP_V2_CORE_COMMIT = 'stable'
UNISWAP_V2_CORE_IMAGE = f'neonlabsorg/uniswap-v2-core:{UNISWAP_V2_CORE_COMMIT}'
UNISWAP_TESTNAME = "test_UNISWAP.py"

docker_client = docker.APIClient()


@cli.command(name="build_docker_image")
@click.option('--neon_evm_commit')
@click.option('--github_sha')
def build_docker_image(neon_evm_commit, github_sha):
neon_evm_image = f'neonlabsorg/evm_loader:{neon_evm_commit}'
docker_client.pull(neon_evm_image)

buildargs = {"NEON_EVM_COMMIT": neon_evm_commit,
"PROXY_REVISION": github_sha,
"PROXY_LOG_CFG": "log_cfg.json"}

tag = f"{IMAGE_NAME}:{github_sha}"
click.echo("start build")
output = docker_client.build(tag=tag, buildargs=buildargs, path="./")
for line in output:
if 'stream' in str(line):
click.echo(str(line).strip('\n'))


@cli.command(name="publish_image")
@click.option('--branch')
@click.option('--github_sha')
def publish_image(branch, github_sha):
if branch == 'master':
tag = 'stable'
elif branch == 'develop':
tag = 'latest'
else:
tag = branch.split('/')[-1]

docker_client.login(username=DOCKER_USER, password=DOCKER_PASSWORD)

docker_client.tag(f"{IMAGE_NAME}:{github_sha}", tag)
docker_client.push(f"{IMAGE_NAME}:{tag}")

docker_client.tag(f"{IMAGE_NAME}:{github_sha}", github_sha)
docker_client.push(f"{IMAGE_NAME}:{github_sha}")


@cli.command(name="terraform")
def terraform_build_infrastructure():
# app = cdktf.App()

# a = cdktf.S3BackendProps(
# bucket=TFSTATE_BUCKET,
# key=TFSTATE_KEY,
# region=TFSTATE_REGION
# )

# app.synth()
# print(app)
t = Terraform()

backend_config = {"bucket": TFSTATE_BUCKET,
"key": TFSTATE_KEY, "region": TFSTATE_REGION}
return_code, stdout, stderr = t.init(backend_config=backend_config)

print(return_code)
print(stdout)
print(stderr)
t.destroy()


@click.option('--neon_evm_commit')
@click.option('--github_sha')
@cli.command(name="deploy_check")
def deploy_check(neon_evm_commit, github_sha):
os.environ["REVISION"] = neon_evm_commit
os.environ["NEON_EVM_COMMIT"] = github_sha
os.environ["FAUCET_COMMIT"] = 'latest'

containers = ['proxy', 'solana', 'proxy_program_loader',
'dbcreation', 'faucet', 'airdropper', 'indexer']
for container in containers:
dump_docker_logs(container)
cleanup_docker()

try:
command = 'docker-compose -f proxy/docker-compose-test.yml up -d'
subprocess.run(command, shell=True)
except:
raise "Docker-compose failed to start"

wait_for_faucet()
run_uniswap_test()


def dump_docker_logs(container):
logs = docker_client.logs(container).decode("utf-8")
with open(f"{container}.log", "w") as file:
file.write(logs)


def cleanup_docker():
click.echo(f"Cleanup docker-compose...")
command = "docker-compose -f proxy/docker-compose-test.yml down -t 1"
subprocess.run(command, shell=True)
click.echo(f"Cleanup docker-compose done.")
click.echo(f"Removing temporary data volumes...")
command = "docker volume prune -f"
subprocess.run(command, shell=True)
click.echo(f"Removing temporary data done.")


def get_fauset_url():
command = 'docker exec proxy bash -c "echo ${FAUCET_URL}"'
faucet_url = subprocess.run(
command, shell=True, capture_output=True, text=True).stdout.strip()
return faucet_url


@cli.command(name="test1")
def wait_for_faucet():
faucet_url = get_fauset_url()
faucet_ip, faucet_port = faucet_url.replace("http://", "").split(':')

command = f'docker exec proxy nc -zvw1 {faucet_ip} {faucet_port}'
timeout_sec = 120
start_time = time.time()
while True:
if time.time() - start_time > timeout_sec:
raise f'Faucet {faucet_url} is unavailable - time is over'
try:
if subprocess.run(
command, shell=True, capture_output=True, text=True).returncode == 0:
click.echo(f"Faucet {faucet_url} is available")
break
else:
click.echo(f"Faucet {faucet_url} is unavailable - sleeping")
except:
raise f"Error during run command {command}"
time.sleep(1)


def run_uniswap_test():
fauset_url = get_fauset_url()
os.environ["FAUCET_URL"] = fauset_url

docker_client.pull(UNISWAP_V2_CORE_IMAGE)
command = f'docker run --rm --network=container:proxy -e FAUCET_URL --entrypoint ./deploy-test.sh {UNISWAP_V2_CORE_IMAGE} all'
out = subprocess.run(command, shell=True)


if __name__ == "__main__":
cli()
34 changes: 34 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Build proxy docker image
on:
workflow_dispatch:
inputs:
full_test_suite:
required: true
neon_evm_commit:
required: true
neon_evm_branch:
required: true
pull_request:
types: [opened, reopened, synchronize]
push:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: "true"
# - name: TEST
# run: echo ${{ github.event.inputs.full_test_suite }}

- name: install python libs
run: pip install docker

- name: build docker image
run: python ./.github/workflows/deploy.py build_docker_image --github_sha=${GITHUB_SHA}

- name: publish image
run: python ./.github/workflows/deploy.py publish_image --branch=${GITHUB_REF} --github_sha=${GITHUB_SHA}

- name: deploy_check
run: python ./.github/workflows/deploy.py publish_image --neon_evm_commit='latest' --github_sha=${GITHUB_SHA}
Loading