Merge pull request #4804 from elizaOS/release-v1 #1
This file contains hidden or 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
| name: Build, Push & Deploy to Phala Cloud | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - 'Dockerfile' | |
| workflow_dispatch: | |
| inputs: | |
| logLevel: | |
| description: 'Log level' | |
| required: true | |
| default: 'warning' | |
| environment: | |
| description: 'Environment to deploy' | |
| required: false | |
| default: 'staging' | |
| env: | |
| APP_NAME: ${{ vars.APP_NAME || secrets.APP_NAME }} | |
| APP_ID: ${{ vars.APP_ID || secrets.APP_ID }} | |
| DOCKER_USERNAME: ${{ vars.DOCKER_USERNAME || secrets.DOCKER_USERNAME }} | |
| DOCKER_IMAGE: ${{ vars.DOCKER_IMAGE || secrets.DOCKER_IMAGE }} | |
| DOCKER_REGISTRY: ${{ vars.DOCKER_REGISTRY || secrets.DOCKER_REGISTRY || 'docker.io' }} | |
| DOCKER_REGISTRY_USERNAME: ${{ vars.DOCKER_REGISTRY_USERNAME || secrets.DOCKER_REGISTRY_USERNAME }} | |
| DOCKER_REGISTRY_PASSWORD: ${{ vars.DOCKER_REGISTRY_PASSWORD || secrets.DOCKER_REGISTRY_PASSWORD }} | |
| PHALA_CLOUD_API_KEY: ${{ vars.PHALA_CLOUD_API_KEY || secrets.PHALA_CLOUD_API_KEY }} | |
| OPENAI_API_KEY: ${{ vars.OPENAI_API_KEY || secrets.OPENAI_API_KEY }} | |
| ANTHROPIC_API_KEY: ${{ vars.ANTHROPIC_API_KEY || secrets.ANTHROPIC_API_KEY }} | |
| SERVER_PORT: ${{ vars.SERVER_PORT || secrets.SERVER_PORT }} | |
| POSTGRES_PASSWORD: ${{ vars.POSTGRES_PASSWORD || secrets.POSTGRES_PASSWORD }} | |
| POSTGRES_USER: ${{ vars.POSTGRES_USER || secrets.POSTGRES_USER }} | |
| POSTGRES_DB: ${{ vars.POSTGRES_DB || secrets.POSTGRES_DB }} | |
| EVM_CHAINS: ${{ vars.EVM_CHAINS || secrets.EVM_CHAINS }} | |
| BIRDEYE_API_KEY: ${{ vars.BIRDEYE_API_KEY || secrets.BIRDEYE_API_KEY }} | |
| COMMUNITY_MANAGER_DISCORD_APPLICATION_ID: ${{ vars.COMMUNITY_MANAGER_DISCORD_APPLICATION_ID || secrets.COMMUNITY_MANAGER_DISCORD_APPLICATION_ID }} | |
| COMMUNITY_MANAGER_DISCORD_API_TOKEN: ${{ vars.COMMUNITY_MANAGER_DISCORD_API_TOKEN || secrets.COMMUNITY_MANAGER_DISCORD_API_TOKEN }} | |
| SOCIAL_MEDIA_MANAGER_DISCORD_APPLICATION_ID: ${{ vars.SOCIAL_MEDIA_MANAGER_DISCORD_APPLICATION_ID || secrets.SOCIAL_MEDIA_MANAGER_DISCORD_APPLICATION_ID }} | |
| SOCIAL_MEDIA_MANAGER_DISCORD_API_TOKEN: ${{ vars.SOCIAL_MEDIA_MANAGER_DISCORD_API_TOKEN || secrets.SOCIAL_MEDIA_MANAGER_DISCORD_API_TOKEN }} | |
| LIAISON_DISCORD_APPLICATION_ID: ${{ vars.LIAISON_DISCORD_APPLICATION_ID || secrets.LIAISON_DISCORD_APPLICATION_ID }} | |
| LIAISON_DISCORD_API_TOKEN: ${{ vars.LIAISON_DISCORD_API_TOKEN || secrets.LIAISON_DISCORD_API_TOKEN }} | |
| PROJECT_MANAGER_DISCORD_APPLICATION_ID: ${{ vars.PROJECT_MANAGER_DISCORD_APPLICATION_ID || secrets.PROJECT_MANAGER_DISCORD_APPLICATION_ID }} | |
| PROJECT_MANAGER_DISCORD_API_TOKEN: ${{ vars.PROJECT_MANAGER_DISCORD_API_TOKEN || secrets.PROJECT_MANAGER_DISCORD_API_TOKEN }} | |
| DEV_REL_DISCORD_APPLICATION_ID: ${{ vars.DEV_REL_DISCORD_APPLICATION_ID || secrets.DEV_REL_DISCORD_APPLICATION_ID }} | |
| DEV_REL_DISCORD_API_TOKEN: ${{ vars.DEV_REL_DISCORD_API_TOKEN || secrets.DEV_REL_DISCORD_API_TOKEN }} | |
| INVESTMENT_MANAGER_DISCORD_APPLICATION_ID: ${{ vars.INVESTMENT_MANAGER_DISCORD_APPLICATION_ID || secrets.INVESTMENT_MANAGER_DISCORD_APPLICATION_ID }} | |
| INVESTMENT_MANAGER_DISCORD_API_TOKEN: ${{ vars.INVESTMENT_MANAGER_DISCORD_API_TOKEN || secrets.INVESTMENT_MANAGER_DISCORD_API_TOKEN }} | |
| POSTGRES_URL: ${{ vars.POSTGRES_URL || secrets.POSTGRES_URL }} | |
| TEE_MODE: ${{ vars.TEE_MODE || secrets.TEE_MODE || 'PRODUCTION' }} | |
| WALLET_SECRET_SALT: ${{ vars.WALLET_SECRET_SALT || secrets.WALLET_SECRET_SALT }} | |
| TEE_VENDOR: ${{ vars.TEE_VENDOR || secrets.TEE_VENDOR || 'phala' }} | |
| TELEGRAM_BOT_TOKEN: ${{ vars.TELEGRAM_BOT_TOKEN || secrets.TELEGRAM_BOT_TOKEN }} | |
| jobs: | |
| build-and-push: | |
| permissions: | |
| contents: read | |
| packages: write | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Log in to GitHub Container Registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.DOCKER_REGISTRY }} | |
| username: ${{ env.DOCKER_REGISTRY_USERNAME }} | |
| password: ${{ env.DOCKER_REGISTRY_PASSWORD }} | |
| - name: Build and Push Docker image | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| file: Dockerfile | |
| push: true | |
| tags: | | |
| ${{ env.DOCKER_USERNAME }}/${{ env.DOCKER_IMAGE }}:latest | |
| ${{ env.DOCKER_USERNAME }}/${{ env.DOCKER_IMAGE }}:${{ github.sha }} | |
| - name: Set Docker Image Full Name | |
| run: | | |
| export DOCKER_IMAGE_FULL_NAME=${{ env.DOCKER_USERNAME }}/${{ env.DOCKER_IMAGE }}:${{ github.sha }} | |
| - name: Update Docker Compose | |
| run: | | |
| sed -i "s|\${DOCKER_IMAGE_FULL_NAME}|${{ env.DOCKER_USERNAME }}/${{ env.DOCKER_IMAGE }}:${{ github.sha }}|g" ./tee-docker-compose.yaml | |
| - name: Deploy to Phala Cloud | |
| uses: Leechael/phala-deploy-action@v2 | |
| with: | |
| # Required parameters | |
| phala-api-key: ${{ secrets.PHALA_CLOUD_API_KEY }} | |
| # Optional parameters (with defaults) | |
| app-id: ${{ env.APP_ID || '' }} # App ID of existing CVM (if updating) | |
| cvm-name: '' | |
| compose-file: './tee-docker-compose.yaml' # Default: './docker-compose.yml' | |
| vcpu: '4' # Default: '2' | |
| memory: '4096' # Default: '2048' | |
| disk-size: '40' # Default: '40' | |
| envs: | # Environment variables in YAML format (will be converted to dotenv) | |
| DOCKER_REGISTRY_USERNAME: ${{ env.DOCKER_REGISTRY_USERNAME }} | |
| DOCKER_REGISTRY_PASSWORD: ${{ env.DOCKER_REGISTRY_PASSWORD }} | |
| DOCKER_REGISTRY: ${{ env.DOCKER_REGISTRY }} | |
| OPENAI_API_KEY: ${{ env.OPENAI_API_KEY }} | |
| ANTHROPIC_API_KEY: ${{ env.ANTHROPIC_API_KEY }} | |
| SERVER_PORT: ${{ env.SERVER_PORT }} | |
| EVM_CHAINS: ${{ env.EVM_CHAINS }} | |
| BIRDEYE_API_KEY: ${{ env.BIRDEYE_API_KEY }} | |
| COMMUNITY_MANAGER_DISCORD_APPLICATION_ID: ${{ env.COMMUNITY_MANAGER_DISCORD_APPLICATION_ID }} | |
| COMMUNITY_MANAGER_DISCORD_API_TOKEN: ${{ vars.COMMUNITY_MANAGER_DISCORD_API_TOKEN || secrets.COMMUNITY_MANAGER_DISCORD_API_TOKEN }} | |
| SOCIAL_MEDIA_MANAGER_DISCORD_APPLICATION_ID: ${{ env.SOCIAL_MEDIA_MANAGER_DISCORD_APPLICATION_ID }} | |
| SOCIAL_MEDIA_MANAGER_DISCORD_API_TOKEN: ${{ env.SOCIAL_MEDIA_MANAGER_DISCORD_API_TOKEN }} | |
| LIAISON_DISCORD_APPLICATION_ID: ${{ env.LIAISON_DISCORD_APPLICATION_ID }} | |
| LIAISON_DISCORD_API_TOKEN: ${{ env.LIAISON_DISCORD_API_TOKEN }} | |
| PROJECT_MANAGER_DISCORD_APPLICATION_ID: ${{ env.PROJECT_MANAGER_DISCORD_APPLICATION_ID }} | |
| PROJECT_MANAGER_DISCORD_API_TOKEN: ${{ env.PROJECT_MANAGER_DISCORD_API_TOKEN }} | |
| DEV_REL_DISCORD_APPLICATION_ID: ${{ env.DEV_REL_DISCORD_APPLICATION_ID }} | |
| DEV_REL_DISCORD_API_TOKEN: ${{ env.DEV_REL_DISCORD_API_TOKEN }} | |
| INVESTMENT_MANAGER_DISCORD_APPLICATION_ID: ${{ env.INVESTMENT_MANAGER_DISCORD_APPLICATION_ID }} | |
| INVESTMENT_MANAGER_DISCORD_API_TOKEN: ${{ env.INVESTMENT_MANAGER_DISCORD_API_TOKEN }} | |
| POSTGRES_URL: ${{ env.POSTGRES_URL }} | |
| TEE_MODE: ${{ env.TEE_MODE || 'PRODUCTION' }} | |
| WALLET_SECRET_SALT: ${{ env.WALLET_SECRET_SALT }} | |
| TEE_VENDOR: ${{ env.TEE_VENDOR || 'phala' }} | |
| TELEGRAM_BOT_TOKEN: ${{ env.TELEGRAM_BOT_TOKEN }} | |
| node-id: '' # Node ID (Teepod ID: Default to available node id) | |
| base-image: '' # Base image to use for the CVM (Default to latest dstack image) |