From f496c4b9a64cd066503c54be521af4aafde60a59 Mon Sep 17 00:00:00 2001 From: nerfZael Date: Fri, 7 Jun 2024 20:42:57 +0200 Subject: [PATCH 1/2] set up deployment for google cloud --- .github/workflows/cd.prod-agent.yaml | 63 ++++++++++++++++++++++++++++ Dockerfile | 17 ++++++-- autotx/chain_fork.py | 2 +- fork.Dockerfile | 5 +++ 4 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/cd.prod-agent.yaml create mode 100644 fork.Dockerfile diff --git a/.github/workflows/cd.prod-agent.yaml b/.github/workflows/cd.prod-agent.yaml new file mode 100644 index 00000000..1fae5a81 --- /dev/null +++ b/.github/workflows/cd.prod-agent.yaml @@ -0,0 +1,63 @@ +name: CD Prod Agent +on: + push: + branches: + - main + paths: + - ./** + +jobs: + deploy: + permissions: + contents: 'read' + id-token: 'write' + + runs-on: ubuntu-latest + defaults: + run: + working-directory: . + steps: + - uses: 'actions/checkout@v4' + + - name: Set up Python 3.10 + uses: actions/setup-python@v2 + with: + python-version: "3.10" + + - name: Install and configure Poetry + uses: snok/install-poetry@v1 + with: + version: 1.7.1 + virtualenvs-create: true + virtualenvs-in-project: true + + - name: Export requirements.txt from Poetry + working-directory: . + run: poetry export --without-hashes --format=requirements.txt > requirements.txt + + - id: 'auth' + uses: 'google-github-actions/auth@v2' + with: + workload_identity_provider: ${{ secrets.PROD_GOOGLE_WIP }} + service_account: ${{ secrets.PROD_GOOGLE_SA }} + + - name: 'Set up Cloud SDK' + uses: 'google-github-actions/setup-gcloud@v1' + with: + version: '>= 363.0.0' + - name: 'Use gcloud CLI' + run: 'gcloud info' + + - name: Create .deploy.env file + run: | + echo "ALCHEMY_API_KEY=${{ secrets.ALCHEMY_API_KEY }}" >> .deploy.env + echo "OPENAI_API_KEY=${{ secrets.CI_OPENAI_API_KEY }}" >> .deploy.env + echo "OPENAI_BASE_URL=https://api.openai.com/v1" >> .deploy.env + echo "OPENAI_MODEL_NAME=gpt-4o" >> .deploy.env + echo "COINGECKO_API_KEY=${{ secrets.CI_COINGECKO_API_KEY }}" >> .deploy.env + echo "LIFI_API_KEY=${{ secrets.LIFI_API_KEY }}" >> .deploy.env + echo "SUPABASE_SERVICE_ROLE_KEY=${{ secrets.PROD_SUPABASE_SERVICE_ROLE_KEY }}" >> .deploy.env + echo "SUPABASE_URL=${{ secrets.PROD_SUPABASE_URL }}" >> .deploy.env + + - name: 'deploy' + run: 'gcloud run deploy sample --port 80 --source .' diff --git a/Dockerfile b/Dockerfile index 117a793b..23fb9c09 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,14 @@ -FROM ghcr.io/foundry-rs/foundry +FROM python:3.11.3 +ENV PYTHONUNBUFFERED True -WORKDIR /anvil -EXPOSE 8545 -ENTRYPOINT anvil --fork-url $CHAIN_RPC_URL --host 0.0.0.0 +RUN pip install --upgrade pip +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +ENV APP_HOME /root +WORKDIR $APP_HOME +COPY /autotx $APP_HOME/autotx +COPY .deploy.env $APP_HOME/.env + +EXPOSE 8080 +CMD ["uvicorn", "autotx.server:app", "--host", "0.0.0.0", "--port", "8080"] \ No newline at end of file diff --git a/autotx/chain_fork.py b/autotx/chain_fork.py index 8f668e94..2d03eb35 100644 --- a/autotx/chain_fork.py +++ b/autotx/chain_fork.py @@ -8,7 +8,7 @@ def start() -> None: delete_cached_safe_address() build = subprocess.run( - ["docker", "build", "-t", "autotx_chain_fork", "."], capture_output=True + ["docker", "build", "-t", "autotx_chain_fork", ".", "-f", "fork.Dockerfile"], capture_output=True ) if build.returncode != 0: diff --git a/fork.Dockerfile b/fork.Dockerfile new file mode 100644 index 00000000..117a793b --- /dev/null +++ b/fork.Dockerfile @@ -0,0 +1,5 @@ +FROM ghcr.io/foundry-rs/foundry + +WORKDIR /anvil +EXPOSE 8545 +ENTRYPOINT anvil --fork-url $CHAIN_RPC_URL --host 0.0.0.0 From 52c4c697a97e2ff7d96f1ff7d386947107874763 Mon Sep 17 00:00:00 2001 From: nerfZael Date: Fri, 7 Jun 2024 20:44:10 +0200 Subject: [PATCH 2/2] removed unecessary step --- .github/workflows/cd.prod-agent.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/cd.prod-agent.yaml b/.github/workflows/cd.prod-agent.yaml index 1fae5a81..418e8bed 100644 --- a/.github/workflows/cd.prod-agent.yaml +++ b/.github/workflows/cd.prod-agent.yaml @@ -31,10 +31,6 @@ jobs: virtualenvs-create: true virtualenvs-in-project: true - - name: Export requirements.txt from Poetry - working-directory: . - run: poetry export --without-hashes --format=requirements.txt > requirements.txt - - id: 'auth' uses: 'google-github-actions/auth@v2' with: