@@ -35,73 +35,72 @@ jobs:
3535 username : ${{ github.repository_owner }}
3636 password : ${{ secrets.GITHUB_TOKEN }}
3737
38+ # - name: Generate GitHub App Token
39+ # id: generate-token
40+ # uses: actions/create-github-app-token@v1
41+ # with:
42+ # app-id: ${{ secrets.GITHUB_APP_ID }}
43+ # private-key: ${{ secrets.GITHUB_APP_PRIVATE_KEY }}
44+ # owner: scaleapi
45+
3846 - name : Discover tutorial agent images
3947 id : discover
40- env :
41- GITHUB_TOKEN : ${{ secrets.PACKAGE_TOKEN }}
48+ # env:
49+ # GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
4250 run : |
43- echo "🔍 Discovering tutorial agent images from GHCR..."
44-
45- # Validate token access
46- if ! gh api user --jq '.login' >/dev/null 2>&1; then
47- echo "❌ PACKAGE_TOKEN not configured or lacks permissions"
48- echo "Please ensure PACKAGE_TOKEN secret is set with:"
49- echo " - read:packages scope"
50- echo " - Access to scaleapi organization packages"
51- exit 1
52- fi
53-
54- # Get all packages from the organization using your working command
55- echo "Fetching packages from scaleapi organization..."
56- gh api orgs/scaleapi/packages \
57- --method GET \
58- --field package_type=container \
59- --field per_page=100 \
60- --jq '.[] | select(.name | startswith("scale-agentex-python/tutorial-agents/")) | .name' > packages.txt
61-
62- echo "📋 Found tutorial agent packages:"
63- cat packages.txt
64-
65- # Build agent matrix from discovered packages
66- echo "🔨 Building agent matrix from discovered packages..."
51+ echo "🔍 Building agent matrix from known tutorial agent images..."
52+
53+ # Define the list of known tutorial agent packages
54+ PACKAGES=(
55+ "scale-agentex-python/tutorial-agents/00_sync-000_hello_acp"
56+ "scale-agentex-python/tutorial-agents/00_sync-010_multiturn"
57+ "scale-agentex-python/tutorial-agents/00_sync-020_streaming"
58+ "scale-agentex-python/tutorial-agents/10_async-00_base-000_hello_acp"
59+ "scale-agentex-python/tutorial-agents/10_async-00_base-010_multiturn"
60+ "scale-agentex-python/tutorial-agents/10_async-00_base-020_streaming"
61+ "scale-agentex-python/tutorial-agents/10_async-00_base-030_tracing"
62+ "scale-agentex-python/tutorial-agents/10_async-00_base-040_other_sdks"
63+ "scale-agentex-python/tutorial-agents/10_async-00_base-080_batch_events"
64+ "scale-agentex-python/tutorial-agents/10_async-10_temporal-000_hello_acp"
65+ "scale-agentex-python/tutorial-agents/10_async-10_temporal-010_agent_chat"
66+ "scale-agentex-python/tutorial-agents/10_async-10_temporal-020_state_machine"
67+ "scale-agentex-python/tutorial-agents/10_async-10_temporal-030_custom_activities"
68+ "scale-agentex-python/tutorial-agents/10_async-10_temporal-050_agent_chat_guardrails"
69+ "scale-agentex-python/tutorial-agents/10_async-10_temporal-060_open_ai_agents_sdk_hello_world"
70+ "scale-agentex-python/tutorial-agents/10_async-10_temporal-070_open_ai_agents_sdk_tools"
71+ "scale-agentex-python/tutorial-agents/10_async-10_temporal-080_open_ai_agents_sdk_human_in_the_loop"
72+ "scale-agentex-python/tutorial-agents/10_async-10_temporal-090_claude_agents_sdk_mvp"
73+ )
74+
75+ # Build agent matrix from the package list
6776 AGENT_IMAGES="["
6877
69- while IFS= read -r package_name; do
70- if [[ -n "$package_name" ]]; then
71- echo "Processing package: $package_name"
72-
73- # Extract agent directory name (e.g., "00_sync-000_hello_acp")
74- agent_dir=$(basename "$package_name")
75-
76- # Convert to agent name format (e.g., "s000-hello-acp")
77- # Pattern: [digits]_[type]-[digits]_[rest] -> s[digits]-[rest]
78- agent_name=$(echo "$agent_dir" | sed -E 's/^[0-9]+_[^-]+-([0-9]+)_(.*)$/s\1-\2/' | tr '_' '-')
78+ for package_name in "${PACKAGES[@]}"; do
79+ echo "Processing package: $package_name"
7980
80- echo " - Agent dir: $agent_dir"
81- echo " - Agent name: $agent_name"
81+ # Extract agent directory name and convert to agent name format (e.g., "s000-hello-acp")
82+ # Pattern: [digits]_[type]-[digits]_[rest] -> s[digits]-[rest]
83+ agent_name=$(basename "$package_name" | sed -E 's/^[0-9]+_[^-]+-([0-9]+)_(.*)$/s\1-\2/' | tr '_' '-')
84+ echo " - Agent name: $agent_name"
8285
83- # Add to JSON array
84- if [[ "$AGENT_IMAGES" != "[" ]]; then
85- AGENT_IMAGES+=","
86- fi
87-
88- AGENT_IMAGES+='{"name":"'$agent_dir'","image":"ghcr.io/'$package_name':latest","agent_name":"'$agent_name'"}'
86+ # Add to JSON array
87+ if [[ "$AGENT_IMAGES" != "[" ]]; then
88+ AGENT_IMAGES+=","
8989 fi
90- done < packages.txt
9190
92- AGENT_IMAGES+="]" # Close array
91+ AGENT_IMAGES+='{"image":"ghcr.io/scaleapi/'"$package_name"':latest","agent_name":"'"$agent_name"'"}'
92+ done
93+
94+ AGENT_IMAGES+="]"
9395
9496 echo "📋 Generated agent matrix:"
9597 echo "$AGENT_IMAGES" | jq '.'
9698
9799 # Convert to compact JSON for matrix
98100 echo "agent-matrix=$(echo "$AGENT_IMAGES" | jq -c '.')" >> $GITHUB_OUTPUT
99101
100- # Cleanup
101- rm -f packages.txt
102-
103102 run-integration-tests :
104- name : " Run Integration Tests - ${{ matrix.agent.name }}"
103+ name : " Run Integration Tests - ${{ matrix.agent.agent_name }}"
105104 runs-on : ubuntu-latest
106105 needs : discover-agent-images
107106 strategy :
@@ -174,6 +173,8 @@ jobs:
174173 docker compose ps
175174
176175 - name : Run agent integration test
176+ env :
177+ OPENAI_API_KEY : ${{ secrets.TUTORIAL_OPENAI_API_KEY }}
177178 run : |
178179 # Set variables for this agent
179180 AGENT_NAME="${{ matrix.agent.agent_name }}"
@@ -183,6 +184,11 @@ jobs:
183184 echo "🧪 Running integration test for agent: ${AGENT_NAME}"
184185 echo "🐳 Using image: ${AGENT_IMAGE}"
185186
187+ SECRET_ARGS=""
188+ if [ ! -z "$OPENAI_API_KEY" ]; then
189+ SECRET_ARGS="$SECRET_ARGS -e OPENAI_API_KEY=\"$OPENAI_API_KEY\""
190+ fi
191+
186192 # Start the agent container
187193 docker run -d --name "${CONTAINER_NAME}" \
188194 -e AGENT_NAME="${AGENT_NAME}" \
@@ -191,6 +197,7 @@ jobs:
191197 -e ACP_TYPE=sync \
192198 -e AGENTEX_BASE_URL=http://agentex:5003 \
193199 -e AGENTEX_API_BASE_URL=http://agentex:5003 \
200+ ${SECRET_ARGS} \
194201 -p 8000:8000 \
195202 --network agentex-network \
196203 "${AGENT_IMAGE}"
0 commit comments