Skip to content

Commit 0cf39c8

Browse files
committed
add build, publish, deploy pipeline for TEE
1 parent cd40385 commit 0cf39c8

File tree

3 files changed

+170
-4
lines changed

3 files changed

+170
-4
lines changed
+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
name: Build, Push & Deploy Eliza to Phala Cloud
2+
3+
on:
4+
push:
5+
branches:
6+
- v2-develop
7+
paths:
8+
- "Dockerfile"
9+
workflow_dispatch:
10+
inputs:
11+
logLevel:
12+
description: 'Log level'
13+
required: true
14+
default: 'warning'
15+
environment:
16+
description: 'Environment to deploy'
17+
required: false
18+
default: 'staging'
19+
20+
env:
21+
APP_NAME: ${{ vars.APP_NAME || secrets.APP_NAME }}
22+
DOCKER_USERNAME: ${{ vars.DOCKER_USERNAME || secrets.DOCKER_USERNAME }}
23+
DOCKER_IMAGE: ${{ vars.DOCKER_IMAGE || secrets.DOCKER_IMAGE }}
24+
DOCKER_REGISTRY: ${{ vars.DOCKER_REGISTRY || secrets.DOCKER_REGISTRY || 'docker.io' }}
25+
DOCKER_REGISTRY_USERNAME: ${{ vars.DOCKER_REGISTRY_USERNAME || secrets.DOCKER_REGISTRY_USERNAME }}
26+
DOCKER_REGISTRY_PASSWORD: ${{ vars.DOCKER_REGISTRY_PASSWORD || secrets.DOCKER_REGISTRY_PASSWORD }}
27+
PHALA_CLOUD_API_KEY: ${{ vars.PHALA_CLOUD_API_KEY || secrets.PHALA_CLOUD_API_KEY }}
28+
EVM_CHAINS: ${{ vars.EVM_CHAINS || secrets.EVM_CHAINS }}
29+
OPENAI_API_KEY: ${{ vars.OPENAI_API_KEY || secrets.OPENAI_API_KEY }}
30+
ANTHROPIC_API_KEY: ${{ vars.ANTHROPIC_API_KEY || secrets.ANTHROPIC_API_KEY }}
31+
BIRDEYE_API_KEY: ${{ vars.BIRDEYE_API_KEY || secrets.BIRDEYE_API_KEY }}
32+
COMMUNITY_MANAGER_DISCORD_APPLICATION_ID: ${{ vars.COMMUNITY_MANAGER_DISCORD_APPLICATION_ID || secrets.COMMUNITY_MANAGER_DISCORD_APPLICATION_ID }}
33+
COMMUNITY_MANAGER_DISCORD_API_TOKEN: ${{ vars.COMMUNITY_MANAGER_DISCORD_API_TOKEN || secrets.COMMUNITY_MANAGER_DISCORD_API_TOKEN }}
34+
SOCIAL_MEDIA_MANAGER_DISCORD_APPLICATION_ID: ${{ vars.SOCIAL_MEDIA_MANAGER_DISCORD_APPLICATION_ID || secrets.SOCIAL_MEDIA_MANAGER_DISCORD_APPLICATION_ID }}
35+
SOCIAL_MEDIA_MANAGER_DISCORD_API_TOKEN: ${{ vars.SOCIAL_MEDIA_MANAGER_DISCORD_API_TOKEN || secrets.SOCIAL_MEDIA_MANAGER_DISCORD_API_TOKEN }}
36+
LIAISON_DISCORD_APPLICATION_ID: ${{ vars.LIAISON_DISCORD_APPLICATION_ID || secrets.LIAISON_DISCORD_APPLICATION_ID }}
37+
LIAISON_DISCORD_API_TOKEN: ${{ vars.LIAISON_DISCORD_API_TOKEN || secrets.LIAISON_DISCORD_API_TOKEN }}
38+
PROJECT_MANAGER_DISCORD_APPLICATION_ID: ${{ vars.PROJECT_MANAGER_DISCORD_APPLICATION_ID || secrets.PROJECT_MANAGER_DISCORD_APPLICATION_ID }}
39+
PROJECT_MANAGER_DISCORD_API_TOKEN: ${{ vars.PROJECT_MANAGER_DISCORD_API_TOKEN || secrets.PROJECT_MANAGER_DISCORD_API_TOKEN }}
40+
DEV_REL_DISCORD_APPLICATION_ID: ${{ vars.DEV_REL_DISCORD_APPLICATION_ID || secrets.DEV_REL_DISCORD_APPLICATION_ID }}
41+
DEV_REL_DISCORD_API_TOKEN: ${{ vars.DEV_REL_DISCORD_API_TOKEN || secrets.DEV_REL_DISCORD_API_TOKEN }}
42+
TEE_MODE: ${{ vars.TEE_MODE || secrets.TEE_MODE || 'PRODUCTION' }}
43+
WALLET_SECRET_SALT: ${{ vars.WALLET_SECRET_SALT || secrets.WALLET_SECRET_SALT || github.sha }}
44+
TEE_VENDOR: ${{ vars.TEE_VENDOR || secrets.TEE_VENDOR || 'phala' }}
45+
jobs:
46+
build-and-push:
47+
permissions:
48+
contents: read
49+
packages: write
50+
runs-on: ubuntu-latest
51+
steps:
52+
- name: Checkout repository
53+
uses: actions/checkout@v4
54+
55+
- name: Log in to GitHub Container Registry
56+
uses: docker/login-action@v3
57+
with:
58+
registry: ${{ env.DOCKER_REGISTRY }}
59+
username: ${{ env.DOCKER_REGISTRY_USERNAME }}
60+
password: ${{ env.DOCKER_REGISTRY_PASSWORD }}
61+
62+
- name: Build and Push Docker image
63+
uses: docker/build-push-action@v5
64+
with:
65+
context: .
66+
file: Dockerfile
67+
push: true
68+
tags: |
69+
${{ env.DOCKER_IMAGE }}:latest
70+
${{ env.DOCKER_IMAGE }}:${{ github.sha }}
71+
- name: Set Docker Image Full Name
72+
run: |
73+
export DOCKER_IMAGE_FULL_NAME=${{ env.DOCKER_IMAGE }}:${{ github.sha }}
74+
75+
- name: Install Phala Cloud CLI
76+
run: sudo apt-get update && sudo apt-get install -y nodejs && sudo npm install -g bun
77+
# Configure Phala Cloud API key
78+
- name: Configure Phala Cloud
79+
run: |
80+
npx phala auth login ${{ env.PHALA_CLOUD_API_KEY }}
81+
echo "Verifying Phala Cloud access..."
82+
npx phala cvms ls
83+
84+
- name: Update Docker Compose
85+
run: |
86+
sed -i "s|\${DOCKER_IMAGE}|${DOCKER_IMAGE_FULL_NAME}|g" ./tee-docker-compose.yaml
87+
88+
- name: Deploy to Phala Cloud
89+
run: |
90+
cat ./tee-docker-compose.yaml
91+
npx phala cvms create \
92+
-n ${{ env.APP_NAME }} \
93+
-c tee-docker-compose.yaml \
94+
--skip-env \
95+
--vcpu 4 \
96+
--memory 8192 \
97+
--disk-size 50 \
98+
--teepod-id 3 \
99+
--image dstack-0.3.5

docker-compose.yaml

+6-4
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@ services:
77
- POSTGRES_USER=postgres
88
- POSTGRES_DB=eliza
99
volumes:
10-
- postgres-data:/var/lib/postgresql/data
10+
- postgres-data:/root/.eliza/db
1111
ports:
1212
- '127.0.0.1:5432:5432'
1313
healthcheck:
1414
test: ['CMD-SHELL', 'pg_isready -U postgres']
1515
interval: 5s
1616
timeout: 5s
1717
retries: 5
18+
networks:
19+
- eliza-network
1820
restart: always
1921
eliza:
2022
build:
@@ -41,13 +43,13 @@ services:
4143
- LIAISON_DISCORD_API_TOKEN=${LIAISON_DISCORD_API_TOKEN}
4244
- PROJECT_MANAGER_DISCORD_APPLICATION_ID=${PROJECT_MANAGER_DISCORD_APPLICATION_ID}
4345
- PROJECT_MANAGER_DISCORD_API_TOKEN=${PROJECT_MANAGER_DISCORD_API_TOKEN}
44-
- DEV_SUPPORT_DISCORD_APPLICATION_ID=${DEV_SUPPORT_DISCORD_APPLICATION_ID}
45-
- DEV_SUPPORT_DISCORD_API_TOKEN=${DEV_SUPPORT_DISCORD_API_TOKEN}
46+
- DEV_REL_DISCORD_APPLICATION_ID=${DEV_REL_DISCORD_APPLICATION_ID}
47+
- DEV_REL_DISCORD_API_TOKEN=${DEV_REL_DISCORD_API_TOKEN}
4648
- INVESTMENT_MANAGER_DISCORD_APPLICATION_ID=${INVESTMENT_MANAGER_DISCORD_APPLICATION_ID}
4749
- INVESTMENT_MANAGER_DISCORD_API_TOKEN=${INVESTMENT_MANAGER_DISCORD_API_TOKEN}
50+
- PGLITE_DATA_DIR=/root/.eliza/db
4851
ports:
4952
- '3000:3000'
50-
- '5173:5173'
5153
depends_on:
5254
postgres:
5355
condition: service_healthy

tee-docker-compose.yaml

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
version: '3'
2+
services:
3+
postgres:
4+
image: postgres:15
5+
environment:
6+
- POSTGRES_PASSWORD=postgres
7+
- POSTGRES_USER=postgres
8+
- POSTGRES_DB=eliza
9+
volumes:
10+
- postgres-data:/root/.eliza/db
11+
ports:
12+
- '127.0.0.1:5432:5432'
13+
healthcheck:
14+
test: ['CMD-SHELL', 'pg_isready -U postgres']
15+
interval: 5s
16+
timeout: 5s
17+
retries: 5
18+
networks:
19+
- eliza-network
20+
restart: always
21+
eliza:
22+
image: ${DOCKER_IMAGE_FULL_NAME}
23+
container_name: elizav2
24+
command: bun run start
25+
stdin_open: true
26+
tty: true
27+
volumes:
28+
- /var/run/tappd.sock:/var/run/tappd.sock
29+
environment:
30+
- OPENAI_API_KEY=${OPENAI_API_KEY}
31+
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
32+
- SERVER_PORT=${SERVER_PORT}
33+
- EVM_CHAINS=${EVM_CHAINS}
34+
- BIRDEYE_API_KEY=${BIRDEYE_API_KEY}
35+
- COMMUNITY_MANAGER_DISCORD_APPLICATION_ID=${COMMUNITY_MANAGER_DISCORD_APPLICATION_ID}
36+
- COMMUNITY_MANAGER_DISCORD_API_TOKEN=${COMMUNITY_MANAGER_DISCORD_API_TOKEN}
37+
- SOCIAL_MEDIA_MANAGER_DISCORD_APPLICATION_ID=${SOCIAL_MEDIA_MANAGER_DISCORD_APPLICATION_ID}
38+
- SOCIAL_MEDIA_MANAGER_DISCORD_API_TOKEN=${SOCIAL_MEDIA_MANAGER_DISCORD_API_TOKEN}
39+
- LIAISON_DISCORD_APPLICATION_ID=${LIAISON_DISCORD_APPLICATION_ID}
40+
- LIAISON_DISCORD_API_TOKEN=${LIAISON_DISCORD_API_TOKEN}
41+
- PROJECT_MANAGER_DISCORD_APPLICATION_ID=${PROJECT_MANAGER_DISCORD_APPLICATION_ID}
42+
- PROJECT_MANAGER_DISCORD_API_TOKEN=${PROJECT_MANAGER_DISCORD_API_TOKEN}
43+
- DEV_REL_DISCORD_APPLICATION_ID=${DEV_REL_DISCORD_APPLICATION_ID}
44+
- DEV_REL_DISCORD_API_TOKEN=${DEV_REL_DISCORD_API_TOKEN}
45+
- INVESTMENT_MANAGER_DISCORD_APPLICATION_ID=${INVESTMENT_MANAGER_DISCORD_APPLICATION_ID}
46+
- INVESTMENT_MANAGER_DISCORD_API_TOKEN=${INVESTMENT_MANAGER_DISCORD_API_TOKEN}
47+
- PGLITE_DATA_DIR=/root/.eliza/db
48+
- TEE_MODE=${TEE_MODE}
49+
- WALLET_SECRET_SALT=${WALLET_SECRET_SALT}
50+
- TEE_VENDOR=${TEE_VENDOR}
51+
ports:
52+
- '3000:3000'
53+
depends_on:
54+
postgres:
55+
condition: service_healthy
56+
restart: always
57+
networks:
58+
- eliza-network
59+
60+
networks:
61+
eliza-network:
62+
driver: bridge
63+
64+
volumes:
65+
postgres-data:

0 commit comments

Comments
 (0)