mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
1099 lines
38 KiB
YAML
1099 lines
38 KiB
YAML
name: "Showcase: Build & Deploy"
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- "showcase/**"
|
|
- "examples/integrations/**"
|
|
workflow_dispatch:
|
|
inputs:
|
|
service:
|
|
description: "Service to deploy (shell, langgraph-python, mastra, all)"
|
|
required: true
|
|
default: "all"
|
|
type: choice
|
|
options:
|
|
- all
|
|
- shell
|
|
- langgraph-python
|
|
- mastra
|
|
- crewai-crews
|
|
- pydantic-ai
|
|
- google-adk
|
|
- ag2
|
|
- agno
|
|
- llamaindex
|
|
- langgraph-fastapi
|
|
- langgraph-typescript
|
|
- langroid
|
|
- spring-ai
|
|
- strands
|
|
- ms-agent-python
|
|
- claude-sdk-typescript
|
|
- ms-agent-dotnet
|
|
- claude-sdk-python
|
|
- test-integration-tmp
|
|
- starter-langgraph-python
|
|
- starter-mastra
|
|
- starter-crewai-crews
|
|
- starter-google-adk
|
|
|
|
concurrency:
|
|
group: showcase-deploy-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
detect-changes:
|
|
name: Detect Changes
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
shell: ${{ steps.changes.outputs.shell }}
|
|
langgraph: ${{ steps.changes.outputs.langgraph }}
|
|
mastra: ${{ steps.changes.outputs.mastra }}
|
|
crewai_crews: ${{ steps.changes.outputs.crewai_crews }}
|
|
pydantic_ai: ${{ steps.changes.outputs.pydantic_ai }}
|
|
google_adk: ${{ steps.changes.outputs.google_adk }}
|
|
ag2: ${{ steps.changes.outputs.ag2 }}
|
|
agno: ${{ steps.changes.outputs.agno }}
|
|
llamaindex: ${{ steps.changes.outputs.llamaindex }}
|
|
langgraph_fastapi: ${{ steps.changes.outputs.langgraph_fastapi }}
|
|
langgraph_typescript: ${{ steps.changes.outputs.langgraph_typescript }}
|
|
langroid: ${{ steps.changes.outputs.langroid }}
|
|
spring_ai: ${{ steps.changes.outputs.spring_ai }}
|
|
strands: ${{ steps.changes.outputs.strands }}
|
|
ms_agent_python: ${{ steps.changes.outputs.ms_agent_python }}
|
|
claude_sdk_typescript: ${{ steps.changes.outputs.claude_sdk_typescript }}
|
|
ms_agent_dotnet: ${{ steps.changes.outputs.ms_agent_dotnet }}
|
|
claude_sdk_python: ${{ steps.changes.outputs.claude_sdk_python }}
|
|
test_integration_tmp: ${{ steps.changes.outputs.test_integration_tmp }}
|
|
starter_langgraph_python: ${{ steps.changes.outputs.starter_langgraph_python }}
|
|
starter_mastra: ${{ steps.changes.outputs.starter_mastra }}
|
|
starter_crewai_crews: ${{ steps.changes.outputs.starter_crewai_crews }}
|
|
starter_google_adk: ${{ steps.changes.outputs.starter_google_adk }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dorny/paths-filter@v3
|
|
id: changes
|
|
with:
|
|
filters: |
|
|
shell:
|
|
- 'showcase/shell/**'
|
|
- 'showcase/shared/**'
|
|
- 'showcase/scripts/**'
|
|
- 'showcase/packages/*/manifest.yaml'
|
|
langgraph:
|
|
- 'showcase/packages/langgraph-python/**'
|
|
mastra:
|
|
- 'showcase/packages/mastra/**'
|
|
crewai_crews:
|
|
- 'showcase/packages/crewai-crews/**'
|
|
pydantic_ai:
|
|
- 'showcase/packages/pydantic-ai/**'
|
|
google_adk:
|
|
- 'showcase/packages/google-adk/**'
|
|
ag2:
|
|
- 'showcase/packages/ag2/**'
|
|
agno:
|
|
- 'showcase/packages/agno/**'
|
|
llamaindex:
|
|
- 'showcase/packages/llamaindex/**'
|
|
langgraph_fastapi:
|
|
- 'showcase/packages/langgraph-fastapi/**'
|
|
langgraph_typescript:
|
|
- 'showcase/packages/langgraph-typescript/**'
|
|
langroid:
|
|
- 'showcase/packages/langroid/**'
|
|
spring_ai:
|
|
- 'showcase/packages/spring-ai/**'
|
|
strands:
|
|
- 'showcase/packages/strands/**'
|
|
ms_agent_python:
|
|
- 'showcase/packages/ms-agent-python/**'
|
|
claude_sdk_typescript:
|
|
- 'showcase/packages/claude-sdk-typescript/**'
|
|
ms_agent_dotnet:
|
|
- 'showcase/packages/ms-agent-dotnet/**'
|
|
claude_sdk_python:
|
|
- 'showcase/packages/claude-sdk-python/**'
|
|
test_integration_tmp:
|
|
- 'showcase/packages/test-integration-tmp/**'
|
|
starter_langgraph_python:
|
|
- 'examples/integrations/langgraph-python/**'
|
|
starter_mastra:
|
|
- 'examples/integrations/mastra/**'
|
|
starter_crewai_crews:
|
|
- 'examples/integrations/crewai-crews/**'
|
|
starter_google_adk:
|
|
- 'examples/integrations/adk/**'
|
|
|
|
check-lockfile:
|
|
name: Verify Lockfile
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 3
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: pnpm/action-setup@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
- name: Verify lockfile is up to date
|
|
run: pnpm install --frozen-lockfile --ignore-scripts
|
|
|
|
build-shell:
|
|
name: Build & Push Shell
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.shell == 'true' ||
|
|
github.event.inputs.service == 'shell' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
lfs: true
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push shell image
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: .
|
|
file: showcase/shell/Dockerfile
|
|
push: true
|
|
build-args: |
|
|
COMMIT_SHA=${{ github.sha }}
|
|
BRANCH=${{ github.ref_name }}
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-shell:latest
|
|
ghcr.io/copilotkit/showcase-shell:${{ github.sha }}
|
|
cache-from: type=gha,scope=shell
|
|
cache-to: type=gha,scope=shell,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"40eea0da-6071-4ea8-bdb9-39afb19225ec\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "Deploy triggered"
|
|
|
|
build-langgraph:
|
|
name: Build & Push LangGraph Python
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.langgraph == 'true' ||
|
|
github.event.inputs.service == 'langgraph-python' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/langgraph-python
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-langgraph-python:latest
|
|
ghcr.io/copilotkit/showcase-langgraph-python:${{ github.sha }}
|
|
cache-from: type=gha,scope=langgraph
|
|
cache-to: type=gha,scope=langgraph,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"90d03214-4569-41b0-b4c1-6438a8a7b203\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "Deploy triggered"
|
|
|
|
build-mastra:
|
|
name: Build & Push Mastra
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.mastra == 'true' ||
|
|
github.event.inputs.service == 'mastra' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/mastra
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-mastra:latest
|
|
ghcr.io/copilotkit/showcase-mastra:${{ github.sha }}
|
|
cache-from: type=gha,scope=mastra
|
|
cache-to: type=gha,scope=mastra,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"d7979eb7-2405-4aab-ad21-438f4a1b08af\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "Deploy triggered"
|
|
|
|
build-crewai_crews:
|
|
name: Build & Push CrewAI (Crews)
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.crewai_crews == 'true' ||
|
|
github.event.inputs.service == 'crewai-crews' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/crewai-crews
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-crewai-crews:latest
|
|
ghcr.io/copilotkit/showcase-crewai-crews:${{ github.sha }}
|
|
cache-from: type=gha,scope=crewai_crews
|
|
cache-to: type=gha,scope=crewai_crews,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"0e9c284d-8d87-4fcf-9f82-6b704d7e4bd4\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "crewai-crews deploy triggered"
|
|
|
|
build-pydantic_ai:
|
|
name: Build & Push PydanticAI
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.pydantic_ai == 'true' ||
|
|
github.event.inputs.service == 'pydantic-ai' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/pydantic-ai
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-pydantic-ai:latest
|
|
ghcr.io/copilotkit/showcase-pydantic-ai:${{ github.sha }}
|
|
cache-from: type=gha,scope=pydantic_ai
|
|
cache-to: type=gha,scope=pydantic_ai,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"0a106173-2282-4887-a994-0ca276a99d69\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "pydantic-ai deploy triggered"
|
|
|
|
build-google_adk:
|
|
name: Build & Push Google ADK
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.google_adk == 'true' ||
|
|
github.event.inputs.service == 'google-adk' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/google-adk
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-google-adk:latest
|
|
ghcr.io/copilotkit/showcase-google-adk:${{ github.sha }}
|
|
cache-from: type=gha,scope=google_adk
|
|
cache-to: type=gha,scope=google_adk,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"87f60507-5a3d-4b8a-9e23-2b1de85d939c\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "google-adk deploy triggered"
|
|
|
|
build-ag2:
|
|
name: Build & Push AG2
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.ag2 == 'true' ||
|
|
github.event.inputs.service == 'ag2' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/ag2
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-ag2:latest
|
|
ghcr.io/copilotkit/showcase-ag2:${{ github.sha }}
|
|
cache-from: type=gha,scope=ag2
|
|
cache-to: type=gha,scope=ag2,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"4a37481b-f264-4eb7-a9cd-0a9ebb9ac05c\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "ag2 deploy triggered"
|
|
|
|
build-agno:
|
|
name: Build & Push Agno
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.agno == 'true' ||
|
|
github.event.inputs.service == 'agno' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/agno
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-agno:latest
|
|
ghcr.io/copilotkit/showcase-agno:${{ github.sha }}
|
|
cache-from: type=gha,scope=agno
|
|
cache-to: type=gha,scope=agno,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"32cab80b-e329-45bd-9c73-c4e1ddc94305\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "agno deploy triggered"
|
|
|
|
build-llamaindex:
|
|
name: Build & Push LlamaIndex
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.llamaindex == 'true' ||
|
|
github.event.inputs.service == 'llamaindex' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/llamaindex
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-llamaindex:latest
|
|
ghcr.io/copilotkit/showcase-llamaindex:${{ github.sha }}
|
|
cache-from: type=gha,scope=llamaindex
|
|
cache-to: type=gha,scope=llamaindex,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"285386e8-492d-4cb8-b632-0a7d4607378f\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "llamaindex deploy triggered"
|
|
|
|
build-langgraph_fastapi:
|
|
name: Build & Push LangGraph (FastAPI)
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.langgraph_fastapi == 'true' ||
|
|
github.event.inputs.service == 'langgraph-fastapi' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/langgraph-fastapi
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-langgraph-fastapi:latest
|
|
ghcr.io/copilotkit/showcase-langgraph-fastapi:${{ github.sha }}
|
|
cache-from: type=gha,scope=langgraph_fastapi
|
|
cache-to: type=gha,scope=langgraph_fastapi,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"06cccb5c-59f4-46b5-8adc-7113e77011a4\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "langgraph-fastapi deploy triggered"
|
|
|
|
build-langgraph_typescript:
|
|
name: Build & Push LangGraph (TypeScript)
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.langgraph_typescript == 'true' ||
|
|
github.event.inputs.service == 'langgraph-typescript' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/langgraph-typescript
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-langgraph-typescript:latest
|
|
ghcr.io/copilotkit/showcase-langgraph-typescript:${{ github.sha }}
|
|
cache-from: type=gha,scope=langgraph_typescript
|
|
cache-to: type=gha,scope=langgraph_typescript,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"66246d3b-a18e-46f0-be51-5f3ff7a36e5a\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "langgraph-typescript deploy triggered"
|
|
|
|
build-langroid:
|
|
name: Build & Push Langroid
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.langroid == 'true' ||
|
|
github.event.inputs.service == 'langroid' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/langroid
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-langroid:latest
|
|
ghcr.io/copilotkit/showcase-langroid:${{ github.sha }}
|
|
cache-from: type=gha,scope=langroid
|
|
cache-to: type=gha,scope=langroid,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"6dd9cb0a-66cc-46f1-972e-7cd74756157d\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "langroid deploy triggered"
|
|
|
|
build-spring_ai:
|
|
name: Build & Push Spring AI
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.spring_ai == 'true' ||
|
|
github.event.inputs.service == 'spring-ai' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/spring-ai
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-spring-ai:latest
|
|
ghcr.io/copilotkit/showcase-spring-ai:${{ github.sha }}
|
|
cache-from: type=gha,scope=spring_ai
|
|
cache-to: type=gha,scope=spring_ai,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"eed5d041-91be-4282-b414-beea00843401\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "spring-ai deploy triggered"
|
|
|
|
build-strands:
|
|
name: Build & Push AWS Strands
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.strands == 'true' ||
|
|
github.event.inputs.service == 'strands' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/strands
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-strands:latest
|
|
ghcr.io/copilotkit/showcase-strands:${{ github.sha }}
|
|
cache-from: type=gha,scope=strands
|
|
cache-to: type=gha,scope=strands,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"92e1cfad-ad53-403f-ab2b-5ab380832232\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "strands deploy triggered"
|
|
|
|
build-ms_agent_python:
|
|
name: Build & Push MS Agent Framework (Python)
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.ms_agent_python == 'true' ||
|
|
github.event.inputs.service == 'ms-agent-python' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/ms-agent-python
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-ms-agent-python:latest
|
|
ghcr.io/copilotkit/showcase-ms-agent-python:${{ github.sha }}
|
|
cache-from: type=gha,scope=ms_agent_python
|
|
cache-to: type=gha,scope=ms_agent_python,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"655db75a-af8d-427d-a4f9-441570ae5003\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "ms-agent-python deploy triggered"
|
|
|
|
build-claude_sdk_typescript:
|
|
name: Build & Push Claude Agent SDK (TypeScript)
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.claude_sdk_typescript == 'true' ||
|
|
github.event.inputs.service == 'claude-sdk-typescript' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/claude-sdk-typescript
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-claude-sdk-typescript:latest
|
|
ghcr.io/copilotkit/showcase-claude-sdk-typescript:${{ github.sha }}
|
|
cache-from: type=gha,scope=claude_sdk_typescript
|
|
cache-to: type=gha,scope=claude_sdk_typescript,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"18a98727-5700-44aa-b497-b60795dbbd6a\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "claude-sdk-typescript deploy triggered"
|
|
|
|
build-ms_agent_dotnet:
|
|
name: Build & Push MS Agent Framework (.NET)
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.ms_agent_dotnet == 'true' ||
|
|
github.event.inputs.service == 'ms-agent-dotnet' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/ms-agent-dotnet
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-ms-agent-dotnet:latest
|
|
ghcr.io/copilotkit/showcase-ms-agent-dotnet:${{ github.sha }}
|
|
cache-from: type=gha,scope=ms_agent_dotnet
|
|
cache-to: type=gha,scope=ms_agent_dotnet,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"beeb2dd6-87a4-4599-aa07-0578f7bd6519\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "ms-agent-dotnet deploy triggered"
|
|
|
|
build-claude_sdk_python:
|
|
name: Build & Push Claude Agent SDK (Python)
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.claude_sdk_python == 'true' ||
|
|
github.event.inputs.service == 'claude-sdk-python' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/claude-sdk-python
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-claude-sdk-python:latest
|
|
ghcr.io/copilotkit/showcase-claude-sdk-python:${{ github.sha }}
|
|
cache-from: type=gha,scope=claude_sdk_python
|
|
cache-to: type=gha,scope=claude_sdk_python,mode=max
|
|
|
|
- name: Trigger Railway deploy
|
|
run: |
|
|
curl -sf -X POST https://backboard.railway.com/graphql/v2 \
|
|
-H "Authorization: Bearer ${{ secrets.RAILWAY_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"mutation { serviceInstanceRedeploy(serviceId: \"b122ab65-9854-4cb2-a68e-b50ff13f7481\", environmentId: \"b14919f4-6417-429f-848d-c6ae2201e04f\") }"}' \
|
|
&& echo "claude-sdk-python deploy triggered"
|
|
|
|
build-test_integration_tmp:
|
|
name: Build & Push Test Integration
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.test_integration_tmp == 'true' ||
|
|
github.event.inputs.service == 'test-integration-tmp' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: showcase/packages/test-integration-tmp
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-test-integration-tmp:latest
|
|
ghcr.io/copilotkit/showcase-test-integration-tmp:${{ github.sha }}
|
|
cache-from: type=gha,scope=test_integration_tmp
|
|
cache-to: type=gha,scope=test_integration_tmp,mode=max
|
|
|
|
# No Railway service exists for test-integration-tmp — deploy step omitted
|
|
|
|
build-starter_langgraph_python:
|
|
name: Build & Push Starter LangGraph Python
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.starter_langgraph_python == 'true' ||
|
|
github.event.inputs.service == 'starter-langgraph-python' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: examples/integrations/langgraph-python
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-starter-langgraph-python:latest
|
|
ghcr.io/copilotkit/showcase-starter-langgraph-python:${{ github.sha }}
|
|
cache-from: type=gha,scope=starter_langgraph_python
|
|
cache-to: type=gha,scope=starter_langgraph_python,mode=max
|
|
|
|
build-starter_mastra:
|
|
name: Build & Push Starter Mastra
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.starter_mastra == 'true' ||
|
|
github.event.inputs.service == 'starter-mastra' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: examples/integrations/mastra
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-starter-mastra:latest
|
|
ghcr.io/copilotkit/showcase-starter-mastra:${{ github.sha }}
|
|
cache-from: type=gha,scope=starter_mastra
|
|
cache-to: type=gha,scope=starter_mastra,mode=max
|
|
|
|
build-starter_crewai_crews:
|
|
name: Build & Push Starter CrewAI Crews
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.starter_crewai_crews == 'true' ||
|
|
github.event.inputs.service == 'starter-crewai-crews' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: examples/integrations/crewai-crews
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-starter-crewai-crews:latest
|
|
ghcr.io/copilotkit/showcase-starter-crewai-crews:${{ github.sha }}
|
|
cache-from: type=gha,scope=starter_crewai_crews
|
|
cache-to: type=gha,scope=starter_crewai_crews,mode=max
|
|
|
|
build-starter_google_adk:
|
|
name: Build & Push Starter Google ADK
|
|
needs: [detect-changes, check-lockfile]
|
|
if: |
|
|
needs.detect-changes.outputs.starter_google_adk == 'true' ||
|
|
github.event.inputs.service == 'starter-google-adk' ||
|
|
github.event.inputs.service == 'all'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
permissions:
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: examples/integrations/adk
|
|
push: true
|
|
tags: |
|
|
ghcr.io/copilotkit/showcase-starter-google-adk:latest
|
|
ghcr.io/copilotkit/showcase-starter-google-adk:${{ github.sha }}
|
|
cache-from: type=gha,scope=starter_google_adk
|
|
cache-to: type=gha,scope=starter_google_adk,mode=max
|