Skip to content

Align Android automation flow and CI deploy #7

Align Android automation flow and CI deploy

Align Android automation flow and CI deploy #7

Workflow file for this run

name: Build and Deploy
on:
push:
branches: [ main, elizaos-challenge ]
workflow_dispatch:
permissions:
contents: write
env:
DOCKER_IMAGE: ${{ secrets.DOCKER_USERNAME }}/miku
NOSANA_API_KEY: ${{ secrets.NOSANA_API_KEY }}
LLM_API_KEY: ${{ secrets.GEMINI_API_KEY || secrets.OPENAI_API_KEY }}
jobs:
build-android:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Build Android APK
uses: sparkfabrik/android-build-action@v1.5.0
with:
project-path: android
gradle-task: assembleRelease
output-path: app-release.apk
- name: Upload APK Artifact
uses: actions/upload-artifact@v4
with:
name: android-apk
path: app-release.apk
- name: Create Release
if: github.ref == 'refs/heads/main'
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ github.run_number }}
name: Release v${{ github.run_number }}
files: app-release.apk
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-and-deploy-agent:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: |
${{ env.DOCKER_IMAGE }}:latest
${{ env.DOCKER_IMAGE }}:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Install Nosana CLI
run: npm install -g @nosana/cli
- name: Validate Gemini API key
run: |
test -n "${{ env.LLM_API_KEY }}" || {
echo "GEMINI_API_KEY or OPENAI_API_KEY secret is required for deployment";
exit 1;
}
- name: Sync deployment config
run: |
tmp_file=$(mktemp)
jq \
--arg image "${{ env.DOCKER_IMAGE }}:latest" \
--arg apiKey "${{ env.LLM_API_KEY }}" \
--arg baseUrl "https://generativelanguage.googleapis.com/v1beta/openai" \
--arg smallModel "gemini-2.5-flash" \
--arg largeModel "gemini-2.5-flash" \
--arg embeddingModel "gemini-embedding-001" \
--arg embeddingDimensions "1536" \
'
.ops[0].args.image = $image
| .ops[0].args.env.OPENAI_API_KEY = $apiKey
| .ops[0].args.env.OPENAI_BASE_URL = $baseUrl
| .ops[0].args.env.OPENAI_SMALL_MODEL = $smallModel
| .ops[0].args.env.OPENAI_LARGE_MODEL = $largeModel
| .ops[0].args.env.OPENAI_EMBEDDING_MODEL = $embeddingModel
| .ops[0].args.env.OPENAI_EMBEDDING_DIMENSIONS = $embeddingDimensions
' ./nos_job_def/nosana_eliza_job_definition.json > "$tmp_file"
mv "$tmp_file" ./nos_job_def/nosana_eliza_job_definition.json
- name: Deploy to Nosana
run: |
nosana job post \
--file ./nos_job_def/nosana_eliza_job_definition.json \
--market nvidia-3090 \
--timeout 300 \
--api ${{ env.NOSANA_API_KEY }}