agent-starter-pack 0.9.2__py3-none-any.whl → 0.10.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agent_starter_pack-0.9.2.dist-info → agent_starter_pack-0.10.0.dist-info}/METADATA +2 -2
- {agent_starter_pack-0.9.2.dist-info → agent_starter_pack-0.10.0.dist-info}/RECORD +53 -51
- agents/adk_base/.template/templateconfig.yaml +1 -1
- agents/adk_gemini_fullstack/.template/templateconfig.yaml +1 -1
- agents/agentic_rag/.template/templateconfig.yaml +1 -1
- agents/agentic_rag/README.md +1 -1
- agents/live_api/tests/integration/test_server_e2e.py +7 -1
- llm.txt +3 -2
- src/base_template/Makefile +4 -3
- src/base_template/README.md +7 -2
- src/base_template/deployment/README.md +6 -121
- src/base_template/deployment/terraform/github.tf +284 -0
- src/base_template/deployment/terraform/providers.tf +5 -0
- src/base_template/deployment/terraform/variables.tf +40 -1
- src/base_template/deployment/terraform/vars/env.tfvars +7 -1
- src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'github_actions' %}wif.tf{% else %}unused_wif.tf{% endif %} +43 -0
- src/base_template/deployment/terraform/{build_triggers.tf → {% if cookiecutter.cicd_runner == 'google_cloud_build' %}build_triggers.tf{% else %}unused_build_triggers.tf{% endif %} } +33 -18
- src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml +114 -0
- src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml +65 -0
- src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml +170 -0
- src/base_template/{deployment/cd/deploy-to-prod.yaml → {% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml } +7 -7
- src/base_template/{deployment/cd/staging.yaml → {% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml } +7 -7
- src/cli/commands/create.py +120 -4
- src/cli/commands/list.py +1 -1
- src/cli/commands/setup_cicd.py +292 -298
- src/cli/utils/cicd.py +19 -7
- src/cli/utils/remote_template.py +4 -4
- src/cli/utils/template.py +67 -19
- src/deployment_targets/cloud_run/app/server.py +19 -0
- src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +4 -3
- src/deployment_targets/cloud_run/deployment/terraform/service.tf +4 -3
- src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +35 -0
- src/deployment_targets/cloud_run/tests/load_test/README.md +1 -1
- src/frontends/live_api_react/frontend/package-lock.json +19 -16
- src/frontends/streamlit/frontend/side_bar.py +1 -1
- src/frontends/streamlit/frontend/utils/chat_utils.py +1 -1
- src/frontends/streamlit/frontend/utils/local_chat_history.py +2 -2
- src/resources/docs/adk-cheatsheet.md +1 -1
- src/resources/locks/uv-adk_base-agent_engine.lock +164 -131
- src/resources/locks/uv-adk_base-cloud_run.lock +177 -144
- src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +164 -131
- src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +177 -144
- src/resources/locks/uv-agentic_rag-agent_engine.lock +223 -190
- src/resources/locks/uv-agentic_rag-cloud_run.lock +251 -218
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +315 -485
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +358 -531
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock +281 -249
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock +323 -290
- src/resources/locks/uv-live_api-cloud_run.lock +350 -327
- src/resources/setup_cicd/cicd_variables.tf +0 -41
- src/resources/setup_cicd/github.tf +0 -87
- src/resources/setup_cicd/providers.tf +0 -39
- {agent_starter_pack-0.9.2.dist-info → agent_starter_pack-0.10.0.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.9.2.dist-info → agent_starter_pack-0.10.0.dist-info}/entry_points.txt +0 -0
- {agent_starter_pack-0.9.2.dist-info → agent_starter_pack-0.10.0.dist-info}/licenses/LICENSE +0 -0
- /src/base_template/{deployment/ci → {% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}}/pr_checks.yaml +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: agent-starter-pack
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.10.0
|
4
4
|
Summary: CLI to bootstrap production-ready Google Cloud GenAI agent projects from templates.
|
5
5
|
Author-email: Google LLC <agent-starter-pack@google.com>
|
6
6
|
License: Apache-2.0
|
@@ -99,7 +99,7 @@ Looking to explore more ADK examples? Check out the [ADK Samples Repository](htt
|
|
99
99
|
#### Extra Features
|
100
100
|
|
101
101
|
The `agent-starter-pack` offers two key features to accelerate and simplify the development of your agent:
|
102
|
-
- **🔄 [CI/CD Automation
|
102
|
+
- **🔄 [CI/CD Automation](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd)** - A single command to set up a complete CI/CD pipeline for all environments, supporting both **Google Cloud Build** and **GitHub Actions**.
|
103
103
|
- **📥 [Data Pipeline for RAG with Terraform/CI-CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/data-ingestion)** - Seamlessly integrate a data pipeline to process embeddings for RAG into your agent system. Supporting [Vertex AI Search](https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction) and [Vector Search](https://cloud.google.com/vertex-ai/docs/vector-search/overview).
|
104
104
|
- **[Remote Templates](docs/guide/remote-templating.md)**: Create and share your own agent starter packs templates from any Git repository.
|
105
105
|
- **🤖 Gemini CLI Integration** - Use the [Gemini CLI](https://github.com/google-gemini/gemini-cli) and the included `GEMINI.md` context file to ask questions about your template, agent architecture, and the path to production. Get instant guidance and code examples directly in your terminal.
|
@@ -1,19 +1,19 @@
|
|
1
1
|
agents/README.md,sha256=L8__lIXXjxLTZbkCmTC4taTFUMRVrO3QI2mCKZTdhJM,462
|
2
2
|
agents/adk_base/README.md,sha256=eLf-F9Z4u_mQOchAnUaSrOAHXRSx8wUQN29kkwz1SF4,894
|
3
|
-
agents/adk_base/.template/templateconfig.yaml,sha256=
|
3
|
+
agents/adk_base/.template/templateconfig.yaml,sha256=8mQ_IIgC0h4eiTUM7FEIPSxwI73aenspcHsnqUb4AfY,923
|
4
4
|
agents/adk_base/app/agent.py,sha256=6Q6QegQDxEaAck989DPIb3ArHMZtw_YJBqhHFqg-UjQ,2182
|
5
5
|
agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
|
6
6
|
agents/adk_base/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
|
7
7
|
agents/adk_base/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
|
8
8
|
agents/adk_gemini_fullstack/README.md,sha256=yQFFcESALj5Q6eweyIyPx__U74obUM88aCBJYNV2UWs,1674
|
9
|
-
agents/adk_gemini_fullstack/.template/templateconfig.yaml,sha256=
|
9
|
+
agents/adk_gemini_fullstack/.template/templateconfig.yaml,sha256=2YeSRfcuTHNdYU9smEMn4LPtorBaDUII3qIWRj8nX70,1716
|
10
10
|
agents/adk_gemini_fullstack/app/agent.py,sha256=NXOkYFxDccJaSq55CTS-UYY8z5-WgBZqexII0Ybzk9c,22662
|
11
11
|
agents/adk_gemini_fullstack/app/config.py,sha256=x--axECPKWW3oLANKz2_4zzHEBIU7if8iYNZRjlTNV0,1563
|
12
12
|
agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb,sha256=wgFzBo7hX393NVzy3ZfZHncs1ptiQbM_8he3XxJu4yM,9763
|
13
13
|
agents/adk_gemini_fullstack/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
|
14
14
|
agents/adk_gemini_fullstack/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
|
15
|
-
agents/agentic_rag/README.md,sha256=
|
16
|
-
agents/agentic_rag/.template/templateconfig.yaml,sha256=
|
15
|
+
agents/agentic_rag/README.md,sha256=cPeY_XGt79ava22PIM0x92oi67R-TnlEKBQGpK1MOkA,2262
|
16
|
+
agents/agentic_rag/.template/templateconfig.yaml,sha256=Gfw3FOjj3XNxoXn6WGwC2PG59f4qB3p2cYTQ49ykvJc,1248
|
17
17
|
agents/agentic_rag/app/agent.py,sha256=tKtzez7vGu6JgMWmZN7QrKkyLBvHu1ondAuICjKoC-g,3983
|
18
18
|
agents/agentic_rag/app/retrievers.py,sha256=qfxwSEixMddvAu4FvUTZAFh1Gdp3RPY65s0Wp6gEFVk,4561
|
19
19
|
agents/agentic_rag/app/templates.py,sha256=8N_uRchwiN7hlH9Y8rdJ1CAtOhpHUWZkXZZ7IU-YJJk,867
|
@@ -38,32 +38,31 @@ agents/live_api/README.md,sha256=c3lu5WguOUBc5hO_UtNZfVhfYxvSzMXuGFICn9M38mU,289
|
|
38
38
|
agents/live_api/.template/templateconfig.yaml,sha256=DD_hihMsuqmd5VWS18vVGZ3ZGVVpFWVXJ2dU07eKb6k,964
|
39
39
|
agents/live_api/app/agent.py,sha256=dYE2qd64OhL-fOgwzrjqN50LYXAgJ1TWbx6ohqtV5Rc,2434
|
40
40
|
agents/live_api/app/server.py,sha256=ZXriNDl_zo7WDRBke85lyzMsy66qGzPaRXY1FMy4Fdw,7793
|
41
|
-
agents/live_api/tests/integration/test_server_e2e.py,sha256=
|
41
|
+
agents/live_api/tests/integration/test_server_e2e.py,sha256=SBowHiVj-_Okbk1dqyITFVIG6yvr5BGNrfxHVpO4TFs,8635
|
42
42
|
agents/live_api/tests/load_test/load_test.py,sha256=HHZyfC4gqiQtZVF_CbbxENGgWQccMLpwMv0IdoQ6cbQ,1275
|
43
43
|
agents/live_api/tests/unit/test_server.py,sha256=_TjlgQgNkjerIaBGnu8P8_KB8ZlSolDcivALpUOn_Rw,4786
|
44
|
-
llm.txt,sha256=
|
44
|
+
llm.txt,sha256=wvqbxa1A8kVRdQyOX-ZcN2rOp2314Kw1y4TTe9n9usI,13714
|
45
45
|
src/base_template/.gitignore,sha256=Fq0w34x4sfbwP4RqDqh6hdHNYRUEsFNI-9XONzLWBIs,2580
|
46
46
|
src/base_template/GEMINI.md,sha256=WzscHWlQeYkKORZ-453P8KM9IHuj1kAxW-69c7Ytuwk,133
|
47
|
-
src/base_template/Makefile,sha256=
|
48
|
-
src/base_template/README.md,sha256=
|
47
|
+
src/base_template/Makefile,sha256=Evt9HcJGBhyoYdVxj5AdfHsQ_vVnbh-g2IlUxM4PFP4,6149
|
48
|
+
src/base_template/README.md,sha256=3okWVHq8Mnm9WwaLR88O9pUq3zUO8fmHilK7ulWHrB4,11342
|
49
49
|
src/base_template/pyproject.toml,sha256=TEu9_gZT9tRuV6x8CcVIpC4Lcetbr0mHMPcJAab0aq4,2874
|
50
50
|
src/base_template/app/__init__.py,sha256=UyAgc2l8nkVIUPUzL9hKR7EgzCsc2jSYcOcjHNNmpMU,59
|
51
51
|
src/base_template/app/utils/gcs.py,sha256=jKblaWOGQEigw3esaawcfX178shhZi2Fyk0fJSA4T68,1501
|
52
52
|
src/base_template/app/utils/tracing.py,sha256=2rv1Ukh2jTBENDwoghCItJ28l-Sjz9gMlzdojlVgJa4,6052
|
53
53
|
src/base_template/app/utils/typing.py,sha256=DP5OZC3IGvqA1XbvWt8kI3gyAK3ZjzUSL5Ca17wNeLI,4249
|
54
|
-
src/base_template/deployment/README.md,sha256=
|
55
|
-
src/base_template/deployment/cd/deploy-to-prod.yaml,sha256=NDXSV5MdnTZfGk0Rkrh7_6RRTq6GiSmKyRVnX83OAfI,3601
|
56
|
-
src/base_template/deployment/cd/staging.yaml,sha256=18plJjSrU73GR1Yncv_i9F0c2VE23ktYuEJpWDPVEQY,7232
|
57
|
-
src/base_template/deployment/ci/pr_checks.yaml,sha256=VFdF6q_-zETCMlJkJ0znW8T7gCYE59BZNliNPz2Bh18,1517
|
54
|
+
src/base_template/deployment/README.md,sha256=gZJvSWdQh_Mi-bZ3dmuPv7fMezIw04fgN5tq7KgglPw,692
|
58
55
|
src/base_template/deployment/terraform/apis.tf,sha256=KX8Oe2gjT-gh9Bkntz9yIAyRjPc1gZvwOhroJ6NZVp4,1513
|
59
|
-
src/base_template/deployment/terraform/
|
56
|
+
src/base_template/deployment/terraform/github.tf,sha256=HqM0gzSvJLoqlfdbBGLqJJ0RjUSRxZm8TgJ_icVH_Tk,10347
|
60
57
|
src/base_template/deployment/terraform/iam.tf,sha256=IdZju8WsfjT_-CswYSGuAHjE8JsWArsAi2TbqTnphEU,5661
|
61
58
|
src/base_template/deployment/terraform/locals.tf,sha256=nvjlavqWRL6e-iIqfIRvsai5JY9l6KhRGcwJQFRdu_U,1653
|
62
59
|
src/base_template/deployment/terraform/log_sinks.tf,sha256=eAGh_dCjOKUQjylkqp1fNM9cfE4QB9HSEovjD6_G9Lg,2971
|
63
|
-
src/base_template/deployment/terraform/providers.tf,sha256=
|
60
|
+
src/base_template/deployment/terraform/providers.tf,sha256=wNWvXJbpvV3njDYO8t4s6DdDkL0dQpWgkPsmJw61ABM,1167
|
64
61
|
src/base_template/deployment/terraform/service_accounts.tf,sha256=KsM9g0dlXmO6-Hokzz09HP1oO3crc8uLJj_Z45d8fe0,1713
|
65
62
|
src/base_template/deployment/terraform/storage.tf,sha256=W0l34U7Ql2wdegfWsWfKzaEooaMaTL2TkU18KM_Vuys,8695
|
66
|
-
src/base_template/deployment/terraform/variables.tf,sha256=
|
63
|
+
src/base_template/deployment/terraform/variables.tf,sha256=fyaif0z9hgmeEd581L6ilU-WZbjAoWynbmh6Bv48zpk,6981
|
64
|
+
src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'github_actions' %}wif.tf{% else %}unused_wif.tf{% endif %},sha256=rCupUnvaTVj75ahJOckNuzlQ-xcLTik_HpqXzVEEB5g,2666
|
65
|
+
src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}build_triggers.tf{% else %}unused_build_triggers.tf{% endif %},sha256=i38RbFSr7CrzsvvQzeX5VYHMZ90fzenR_R_I3vRR6QM,6713
|
67
66
|
src/base_template/deployment/terraform/dev/apis.tf,sha256=R5fyLQGHsZy7JyDdFpuNzUBute6Rn9xR32zIMjkGxzc,1592
|
68
67
|
src/base_template/deployment/terraform/dev/iam.tf,sha256=ZHFs4TMvq6mqD90n8ecXndzW3pyu4EbZO4iJis88BH0,3394
|
69
68
|
src/base_template/deployment/terraform/dev/log_sinks.tf,sha256=uVdMtDdd8MnxtKhqzVaYqadE11P3r4fs2IdgNecxM4I,2671
|
@@ -71,19 +70,25 @@ src/base_template/deployment/terraform/dev/providers.tf,sha256=1S9jCh48d6ailVZ1e
|
|
71
70
|
src/base_template/deployment/terraform/dev/storage.tf,sha256=1mgLs21SUhfcoRICqd7BqUlEVAVGeN3kMsQ4UAQLOh8,4654
|
72
71
|
src/base_template/deployment/terraform/dev/variables.tf,sha256=7uQeqzN6IR14h1iThXf-3M1pbWKpKxCddDs78r49yuo,4324
|
73
72
|
src/base_template/deployment/terraform/dev/vars/env.tfvars,sha256=LoQMjh1AAMR-MGfaSCsVMjdoYTk2T4oS4D9vMH54CdQ,714
|
74
|
-
src/base_template/deployment/terraform/vars/env.tfvars,sha256=
|
73
|
+
src/base_template/deployment/terraform/vars/env.tfvars,sha256=Jyc36pt-0xNMwQsoXucad0QAWFMeGe67fdimCKXx-tw,1411
|
75
74
|
src/base_template/tests/unit/test_dummy.py,sha256=2exfCH8qhkZrLWvK04ZxNTO9MV3fdTbZkJN3uK6zvok,850
|
75
|
+
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml,sha256=nOP8Lr4IEYmcdaWPWeKx9T-HLlbWSx3fxmBgzYjRQM0,5584
|
76
|
+
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml,sha256=vy51dSiRFEFlFq9eEWuUsemG0jXj3VL4lCRMcodPiok,1981
|
77
|
+
src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml,sha256=BvZk0rquC0eP49b07kWp0NkwbGLuGlUJLFJL2-A0q1Q,8408
|
78
|
+
src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml,sha256=jOgmEj4v0xILIzq4dXqyu07wWZjpBaow2jNJyYdbINU,3651
|
79
|
+
src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/pr_checks.yaml,sha256=VFdF6q_-zETCMlJkJ0znW8T7gCYE59BZNliNPz2Bh18,1517
|
80
|
+
src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml,sha256=o7EuMwJJkXI3xNtBubvqyVDTVFRFjNYyv5v6aixVoVU,7312
|
76
81
|
src/cli/main.py,sha256=fyJKjU1gvRQmuqS-J6sExvqXo0-z7n6Bce8PSbDPa6E,1769
|
77
|
-
src/cli/commands/create.py,sha256=
|
78
|
-
src/cli/commands/list.py,sha256=
|
79
|
-
src/cli/commands/setup_cicd.py,sha256=
|
82
|
+
src/cli/commands/create.py,sha256=EFFDEHBZ_O_g24gwTknpq_92c1OPKG2ECmnOiAS4aoU,39201
|
83
|
+
src/cli/commands/list.py,sha256=xlH7w_c_CO2XiFrYyDeBCE_JkUY3f3g4o0HbBIl5fqE,5056
|
84
|
+
src/cli/commands/setup_cicd.py,sha256=rNJN8HFWYf8Q6Wr9bLy1KHodiJJCG3T2JGVYIQskJaE,32232
|
80
85
|
src/cli/utils/__init__.py,sha256=_cTmsXGPqOtK0q8UW5164QTltbJRJFR_Efxq_BRL1-o,1311
|
81
|
-
src/cli/utils/cicd.py,sha256=
|
86
|
+
src/cli/utils/cicd.py,sha256=9s_OcusQznT_pSjFP60BfDBoZ5V6bwPE0QWbWdMaVlY,26515
|
82
87
|
src/cli/utils/datastores.py,sha256=gv1V6eDcOEKx4MRNG5C3Y-VfixYq1AzQuaYMLp8QRNo,1058
|
83
88
|
src/cli/utils/gcp.py,sha256=cnuCyN144eiyYc9aJNEK9JnyWN66rdevugoMdDYC1UU,4032
|
84
89
|
src/cli/utils/logging.py,sha256=0lHe4EPi1A8sOx9xkA7gS4UNl0GsIyp2ahydkkuCzLY,1570
|
85
|
-
src/cli/utils/remote_template.py,sha256=
|
86
|
-
src/cli/utils/template.py,sha256=
|
90
|
+
src/cli/utils/remote_template.py,sha256=iJDocC9AiQd0yfqzj6F0pDrt2QHMPKU66FLlWFkNfqM,10526
|
91
|
+
src/cli/utils/template.py,sha256=oVRY0qaNynrSadvVDJHrth3m-_yw4uisGhuKEdm9PbM,36059
|
87
92
|
src/cli/utils/version.py,sha256=F4udQmzniPStqWZFIgnv3Qg3l9non4mfy2An-Oveqmc,2916
|
88
93
|
src/data_ingestion/README.md,sha256=LNxSQoJW9JozK-TbyGQLj5L_MGWNwrfLk6V6RmQ2oBQ,4032
|
89
94
|
src/data_ingestion/pyproject.toml,sha256=-1Mf2QB8K70ICQV5UPZDpf-fN3UwEQLVzQyxfakCSTY,445
|
@@ -100,11 +105,11 @@ src/deployment_targets/agent_engine/tests/load_test/README.md,sha256=aQP7nDAqd2j
|
|
100
105
|
src/deployment_targets/agent_engine/tests/load_test/load_test.py,sha256=USzS89bQ4qHVoQynDRSRShKzeXf1MJ0MBV4FpV40vrI,4249
|
101
106
|
src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
102
107
|
src/deployment_targets/cloud_run/Dockerfile,sha256=CuhR3MuaRO2R7XrKPgNc5Oi7pv5JpJqgR8Nid0Tnsag,891
|
103
|
-
src/deployment_targets/cloud_run/app/server.py,sha256=
|
104
|
-
src/deployment_targets/cloud_run/deployment/terraform/service.tf,sha256=
|
105
|
-
src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=
|
106
|
-
src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py,sha256=
|
107
|
-
src/deployment_targets/cloud_run/tests/load_test/README.md,sha256=
|
108
|
+
src/deployment_targets/cloud_run/app/server.py,sha256=4e4BuTMOneQKxStQOMwBHPXWSKNhVGpVOtgKn2bhoZE,6630
|
109
|
+
src/deployment_targets/cloud_run/deployment/terraform/service.tf,sha256=TwprbgxUGBbPLQH8vjTtYoC0F2S8105AC_VsNqNrAvs,10342
|
110
|
+
src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=3AUsT5d8YaFtRa1Skrq5l8tlGEIb8Kk94TolykqmQxg,6591
|
111
|
+
src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py,sha256=6gtRbCxlrsnvHdOFq8c_B_xowo49CJxThUeVjtQdTew,9238
|
112
|
+
src/deployment_targets/cloud_run/tests/load_test/README.md,sha256=k-PBN6HE9wgSRFb81sSiXA8h5Li6KYyIUSwDj6yntHU,2740
|
108
113
|
src/deployment_targets/cloud_run/tests/load_test/load_test.py,sha256=eVhqX8GtiDsIuZxMJAF2ivXML0xHDWDbriYsHZjAQZE,4212
|
109
114
|
src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder,sha256=ZbWpSgDo8bT33PstD_73aQSeN_0oo0F104NMUGuZ8lE,14903
|
110
115
|
src/frontends/adk_gemini_fullstack/frontend/components.json,sha256=OUAALKbVpmIHQ16HcK1BgLBbVf_rV7s08PuGqgCFJ-o,423
|
@@ -132,7 +137,7 @@ src/frontends/adk_gemini_fullstack/frontend/src/components/ui/scroll-area.tsx,sh
|
|
132
137
|
src/frontends/adk_gemini_fullstack/frontend/src/components/ui/select.tsx,sha256=l1CSyVqn6zCovoC-r4HmmUFMWEMAUTuOEZqBK5dQP0g,6231
|
133
138
|
src/frontends/adk_gemini_fullstack/frontend/src/components/ui/tabs.tsx,sha256=Epvn4JDzNmP9tw9Zik5yzxTvALO4wfP8U2PjyvToglw,1951
|
134
139
|
src/frontends/adk_gemini_fullstack/frontend/src/components/ui/textarea.tsx,sha256=GS4IJIjRF5CzN78SrQlJzapWlknrV673AghYBFvLx_Y,755
|
135
|
-
src/frontends/live_api_react/frontend/package-lock.json,sha256=
|
140
|
+
src/frontends/live_api_react/frontend/package-lock.json,sha256=_vWIfornMhB4lrRIwUmy4CqKGINCKjeUuYcTw2Sc_IY,734344
|
136
141
|
src/frontends/live_api_react/frontend/package.json,sha256=OBOzzDiDiESPzmbLDlZ6KM1Trit71vXdP692dI-g9Uo,1381
|
137
142
|
src/frontends/live_api_react/frontend/tsconfig.json,sha256=cyqEhf7-Yydz-PX8_cuF8JpsyC363NDTNkrmCk0sKAo,595
|
138
143
|
src/frontends/live_api_react/frontend/public/favicon.ico,sha256=FY9oTN01RzaJ2lZ1rCjNXsEfT1gWZJA3fPx0QMBlMCU,15086
|
@@ -169,40 +174,37 @@ src/frontends/live_api_react/frontend/src/utils/store-logger.ts,sha256=YxS0TjiGn
|
|
169
174
|
src/frontends/live_api_react/frontend/src/utils/utils.ts,sha256=qQIhLzfyCBLecU0ksQCKIbD3cIflb0hxt0SPZGdYFEo,2457
|
170
175
|
src/frontends/live_api_react/frontend/src/utils/worklets/audio-processing.ts,sha256=ULgnXphZUfbHkRhGoPT_670WHjzaXJwWgYU0ISQRSXI,1979
|
171
176
|
src/frontends/live_api_react/frontend/src/utils/worklets/vol-meter.ts,sha256=DEXn9ywn7N_tqKBhQ9eUxvWCWqteyfT-Q0dwjbvjjpY,1780
|
172
|
-
src/frontends/streamlit/frontend/side_bar.py,sha256=
|
177
|
+
src/frontends/streamlit/frontend/side_bar.py,sha256=XKiC8RtJbx5f3d4CKsTvNFKK0X4o6VzTYQCWE4QUNb4,9043
|
173
178
|
src/frontends/streamlit/frontend/streamlit_app.py,sha256=O-mF9-0nSL220mZSohKK6QrdSiaRsUJL1o_XeKdj8zo,9868
|
174
179
|
src/frontends/streamlit/frontend/style/app_markdown.py,sha256=4H9GGlaOIbG_4T4QvHyTMfoeumJze7cZ2VuGIv39wFo,1050
|
175
|
-
src/frontends/streamlit/frontend/utils/chat_utils.py,sha256=
|
176
|
-
src/frontends/streamlit/frontend/utils/local_chat_history.py,sha256=
|
180
|
+
src/frontends/streamlit/frontend/utils/chat_utils.py,sha256=YFN9wuHn4GJWNJQxUkq1uFJ3SqIjNZV2nkTDOPDac4o,2280
|
181
|
+
src/frontends/streamlit/frontend/utils/local_chat_history.py,sha256=1dcF3aPu6hT8f819-ppkVYUg20mnlUNNOnTpJ5yCcXE,4777
|
177
182
|
src/frontends/streamlit/frontend/utils/message_editing.py,sha256=YWoPe2KeWMuL3YVTm0am6MK3kzjEIYVmdkdwTQpmGdQ,2263
|
178
183
|
src/frontends/streamlit/frontend/utils/multimodal_utils.py,sha256=v6YbCkz_YcnEo-9YvRjwBNt0SzU4M39bYxJGmKk69vE,7313
|
179
184
|
src/frontends/streamlit/frontend/utils/stream_handler.py,sha256=-XVRfLH6ck1KP6NS4vrhcvPyZe6z3NLHliEg17s9jjo,12551
|
180
185
|
src/frontends/streamlit/frontend/utils/title_summary.py,sha256=B0cadS_KPW-tsbABauI4J681aqjEtuKFDa25e9R1WKc,3030
|
181
186
|
src/resources/containers/data_processing/Dockerfile,sha256=VoB9d5yZiiWnqRfWrIq0gGNMzZg-eVy733OgP72ZgO0,950
|
182
187
|
src/resources/containers/e2e-tests/Dockerfile,sha256=yA3HxeX0HNpl8B4oEQUICCVZDCXdRn2Igmii4jt-r7k,1895
|
183
|
-
src/resources/docs/adk-cheatsheet.md,sha256=
|
188
|
+
src/resources/docs/adk-cheatsheet.md,sha256=C3xb_dEWWp7iROLRVb0iTBGmJ9uAbreF1j6VgZoS-TA,58739
|
184
189
|
src/resources/idx/idx-template.json,sha256=07OQZCPp45Iqor2O7Tm1e1Gmsdd-AmmUofSvA7y-oRs,793
|
185
190
|
src/resources/idx/idx-template.nix,sha256=sesHGev_PYtVDg0J5tHkg0OO7IR1Bz2iAtl_if3Ar3M,892
|
186
191
|
src/resources/idx/.idx/dev.nix,sha256=XQ4T1xt5I-8SVwnI37v56RFFlxa58Ko-a9G2-oelYAI,1602
|
187
|
-
src/resources/locks/uv-adk_base-agent_engine.lock,sha256=
|
188
|
-
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=
|
189
|
-
src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=
|
190
|
-
src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=
|
191
|
-
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=
|
192
|
-
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=
|
193
|
-
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=
|
194
|
-
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=
|
195
|
-
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=
|
196
|
-
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=
|
197
|
-
src/resources/locks/uv-live_api-cloud_run.lock,sha256=
|
198
|
-
src/resources/setup_cicd/cicd_variables.tf,sha256=PMflYe1TzQi63LORHkmeCktTYzXFplJgxffNH4DtuAQ,1244
|
199
|
-
src/resources/setup_cicd/github.tf,sha256=V2XZ7bKdJ9fzibsjIrI-loHQ1eQbfjNWVPLDPIAUeTA,2807
|
200
|
-
src/resources/setup_cicd/providers.tf,sha256=Km4z6IJt7x7PLaa0kyZbBrO2m3lpuIJZFD5jB7QBfF0,1122
|
192
|
+
src/resources/locks/uv-adk_base-agent_engine.lock,sha256=CEtUg1T6MD5lcFlrjCVc7GH6EqFFhK_zlg9HAXackd0,485260
|
193
|
+
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=bHEgHHev67STvqa8-qiwRMqqXEIsae_yzUwO0PLUhoQ,639696
|
194
|
+
src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=CEtUg1T6MD5lcFlrjCVc7GH6EqFFhK_zlg9HAXackd0,485260
|
195
|
+
src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=bHEgHHev67STvqa8-qiwRMqqXEIsae_yzUwO0PLUhoQ,639696
|
196
|
+
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=mT5kX6pvH3e6IpwAh9PGP1-p0UqeRO8ErjlVZdpAhQw,543152
|
197
|
+
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=5-VNslpOWkZtDUeHIrT8xDt8egWUWY9m1URvbV7by_o,717269
|
198
|
+
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=s60k9WkDVfhrnGEZk822Htf0q6_F0UcUiHNc22h0jYo,800736
|
199
|
+
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=RERjilGiy-u4qfbvWhGF3dM67eV3q_2TgtdCzMi-gxA,1047819
|
200
|
+
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=s8WYziB641WMfPVS-O_DXnOpdcFNRMEIIdF5RM2XUek,683711
|
201
|
+
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=zeCX1ofox1kok8AsNRARfDuDb2kE9Ok9TXyCL1VdUyw,901626
|
202
|
+
src/resources/locks/uv-live_api-cloud_run.lock,sha256=w6Zd77jiEPsWLYZcNscE_jFA_eOzYeEa360zRRGI20M,822206
|
201
203
|
src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
|
202
204
|
src/utils/lock_utils.py,sha256=IFOMUWtb-ypm2Y8w8J5y2oI_-MaPuwPF_JOAAlnNudA,2275
|
203
205
|
src/utils/watch_and_rebuild.py,sha256=vP4yIiA7E_lj5sfQdJUl8TXas6V7msDg8XWUutAC05Q,6679
|
204
|
-
agent_starter_pack-0.
|
205
|
-
agent_starter_pack-0.
|
206
|
-
agent_starter_pack-0.
|
207
|
-
agent_starter_pack-0.
|
208
|
-
agent_starter_pack-0.
|
206
|
+
agent_starter_pack-0.10.0.dist-info/METADATA,sha256=EV90lF4GnBQ0AsEv4iU0KbexfsVzF58rxOd52y7ASa4,11178
|
207
|
+
agent_starter_pack-0.10.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
208
|
+
agent_starter_pack-0.10.0.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
|
209
|
+
agent_starter_pack-0.10.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
210
|
+
agent_starter_pack-0.10.0.dist-info/RECORD,,
|
@@ -18,7 +18,7 @@ settings:
|
|
18
18
|
requires_data_ingestion: false
|
19
19
|
requires_session: true
|
20
20
|
deployment_targets: ["agent_engine", "cloud_run"]
|
21
|
-
extra_dependencies: ["google-adk~=1.
|
21
|
+
extra_dependencies: ["google-adk~=1.8.0"]
|
22
22
|
tags: ["adk"]
|
23
23
|
frontend_type: "adk_gemini_fullstack"
|
24
24
|
commands:
|
agents/agentic_rag/README.md
CHANGED
@@ -19,5 +19,5 @@ The agent implements the following architecture:
|
|
19
19
|
- **Automated Data Ingestion Pipeline:** Automates the process of ingesting data from input sources.
|
20
20
|
- **Custom Embeddings:** Generates embeddings using Vertex AI Embeddings and incorporates them into your data for enhanced semantic search.
|
21
21
|
- **Terraform Deployment:** Ingestion pipeline is instantiated with Terraform alongside the rest of the infrastructure of the starter pack.
|
22
|
-
- **
|
22
|
+
- **CI/CD Integration:** Deployment of ingestion pipelines is added to the CD pipelines of the starter pack.
|
23
23
|
- **Customizable Code:** Easily adapt and customize the code to fit your specific application needs and data sources.
|
@@ -66,6 +66,7 @@ def start_server() -> subprocess.Popen[str]:
|
|
66
66
|
text=True,
|
67
67
|
bufsize=1,
|
68
68
|
env=env,
|
69
|
+
encoding="utf-8",
|
69
70
|
)
|
70
71
|
|
71
72
|
# Start threads to log stdout and stderr in real-time
|
@@ -107,7 +108,12 @@ def server_fixture(request: Any) -> Iterator[subprocess.Popen[str]]:
|
|
107
108
|
def stop_server() -> None:
|
108
109
|
logger.info("Stopping server process")
|
109
110
|
server_process.terminate()
|
110
|
-
|
111
|
+
try:
|
112
|
+
server_process.wait(timeout=5)
|
113
|
+
except subprocess.TimeoutExpired:
|
114
|
+
logger.warning("Server process did not terminate, killing it")
|
115
|
+
server_process.kill()
|
116
|
+
server_process.wait()
|
111
117
|
logger.info("Server process stopped")
|
112
118
|
|
113
119
|
request.addfinalizer(stop_server)
|
llm.txt
CHANGED
@@ -67,9 +67,10 @@ agent-starter-pack create PROJECT_NAME [OPTIONS]
|
|
67
67
|
**Key Options:**
|
68
68
|
* `-a, --agent`: Agent template (e.g., `adk_base`, `agentic_rag`).
|
69
69
|
* `-d, --deployment-target`: Target deployment environment (`cloud_run` or `agent_engine`).
|
70
|
+
* `--cicd-runner`: CI/CD pipeline runner (`google_cloud_build` or `github_actions`).
|
70
71
|
* `-ds, --datastore`: For RAG agents, the datastore (`vertex_ai_search` or `vertex_ai_vector_search`).
|
71
72
|
* `-i, --include-data-ingestion`: Include data ingestion pipeline scaffolding.
|
72
|
-
* `--session-type`: For agents requiring session management on Cloud Run, specifies the storage type (`in_memory
|
73
|
+
* `--session-type`: For agents requiring session management on Cloud Run, specifies the storage type (`in_memory`, `alloydb`, `agent_engine`).
|
73
74
|
* `--region`: GCP region (e.g., `us-central1`).
|
74
75
|
* `--auto-approve`: **Skips all interactive prompts (crucial for automation).**
|
75
76
|
* `--debug`: Enables debug logging during creation.
|
@@ -165,7 +166,7 @@ Before setting up full CI/CD, you can deploy to a personal cloud dev environment
|
|
165
166
|
3. **Deploy Backend:** `make backend` (builds and deploys the agent).
|
166
167
|
|
167
168
|
### 3. Automated Production-Ready Deployment with CI/CD
|
168
|
-
For reliable deployments, the `setup-cicd` command streamlines the entire process. It creates a GitHub repo, connects it to Cloud Build, provisions staging/prod infrastructure, and configures deployment triggers.
|
169
|
+
For reliable deployments, the `setup-cicd` command streamlines the entire process. It creates a GitHub repo, connects it to your chosen CI/CD runner (Google Cloud Build or GitHub Actions), provisions staging/prod infrastructure, and configures deployment triggers.
|
169
170
|
|
170
171
|
**Automated CI/CD Setup Example (Recommended):**
|
171
172
|
```bash
|
src/base_template/Makefile
CHANGED
@@ -4,7 +4,7 @@ install:
|
|
4
4
|
{%- if cookiecutter.settings.get("commands", {}).get("override", {}).get("install") %}
|
5
5
|
{{cookiecutter.settings.get("commands", {}).get("override", {}).get("install")}}
|
6
6
|
{%- else %}
|
7
|
-
uv sync --dev{% if cookiecutter.agent_name != 'live_api' and "adk" not in cookiecutter.tags %} --extra streamlit{%- endif %} --extra jupyter{% if cookiecutter.agent_name == 'live_api' %} &&
|
7
|
+
uv sync --dev{% if cookiecutter.agent_name != 'live_api' and "adk" not in cookiecutter.tags %} --extra streamlit{%- endif %} --extra jupyter{% if cookiecutter.agent_name == 'live_api' %} && (cd frontend && npm install){%- endif %}
|
8
8
|
{%- endif %}
|
9
9
|
|
10
10
|
{%- if cookiecutter.settings.get("commands", {}).get("extra", {}) %}
|
@@ -44,7 +44,7 @@ playground:
|
|
44
44
|
uv run uvicorn app.server:app --host 0.0.0.0 --port 8000 --reload &
|
45
45
|
{%- endif %}
|
46
46
|
{%- if cookiecutter.agent_name == 'live_api' %}
|
47
|
-
PORT=8501 npm
|
47
|
+
(cd frontend && PORT=8501 npm start)
|
48
48
|
{%- else %}
|
49
49
|
{% if cookiecutter.deployment_target == 'agent_engine' %}PYTHONPATH=. {% endif %}uv run streamlit run frontend/streamlit_app.py --browser.serverAddress=localhost --server.enableCORS=false --server.enableXsrfProtection=false
|
50
50
|
{%- endif %}
|
@@ -64,6 +64,7 @@ backend:
|
|
64
64
|
--project $$PROJECT_ID \
|
65
65
|
--region "us-central1" \
|
66
66
|
--no-allow-unauthenticated \
|
67
|
+
--no-cpu-throttling \
|
67
68
|
--labels "created-by=adk" \
|
68
69
|
--set-env-vars \
|
69
70
|
"COMMIT_SHA=$(shell git rev-parse HEAD){%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID={{cookiecutter.project_name}}-datastore,DATA_STORE_REGION=us{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX={{cookiecutter.project_name}}-vector-search,VECTOR_SEARCH_INDEX_ENDPOINT={{cookiecutter.project_name}}-vector-search-endpoint,VECTOR_SEARCH_BUCKET=$$PROJECT_ID-{{cookiecutter.project_name}}-vs{%- endif %}{%- endif %}" \
|
@@ -85,7 +86,7 @@ local-backend:
|
|
85
86
|
|
86
87
|
# Start the frontend UI for development
|
87
88
|
ui:
|
88
|
-
PORT=8501 npm
|
89
|
+
(cd frontend && PORT=8501 npm start)
|
89
90
|
{%- endif %}
|
90
91
|
{%- endif %}
|
91
92
|
|
src/base_template/README.md
CHANGED
@@ -17,6 +17,11 @@ This project is organized as follows:
|
|
17
17
|
│ ├── agent_engine_app.py # Agent Engine application logic
|
18
18
|
{%- endif %}
|
19
19
|
│ └── utils/ # Utility functions and helpers
|
20
|
+
{%- if cookiecutter.cicd_runner == 'google_cloud_build' %}
|
21
|
+
├── .cloudbuild/ # CI/CD pipeline configurations for Google Cloud Build
|
22
|
+
{%- elif cookiecutter.cicd_runner == 'github_actions' %}
|
23
|
+
├── .github/ # CI/CD pipeline configurations for GitHub Actions
|
24
|
+
{%- endif %}
|
20
25
|
├── deployment/ # Infrastructure and deployment scripts
|
21
26
|
├── notebooks/ # Jupyter notebooks for prototyping and evaluation
|
22
27
|
├── tests/ # Unit, integration, and load tests
|
@@ -159,7 +164,7 @@ This template follows a "bring your own agent" approach - you focus on your busi
|
|
159
164
|
1. **Prototype:** Build your Generative AI Agent using the intro notebooks in `notebooks/` for guidance. Use Vertex AI Evaluation to assess performance.
|
160
165
|
2. **Integrate:** Import your agent into the app by editing `app/agent.py`.
|
161
166
|
3. **Test:** Explore your agent functionality using the Streamlit playground with `make playground`. The playground offers features like chat history, user feedback, and various input types, and automatically reloads your agent on code changes.
|
162
|
-
4. **Deploy:** Set up and initiate the CI/CD pipelines, customizing tests as necessary. Refer to the [deployment section](#deployment) for comprehensive instructions. For streamlined infrastructure deployment, simply run `uvx agent-starter-pack setup-cicd`. Check out the [`agent-starter-pack setup-cicd` CLI command](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd.html). Currently
|
167
|
+
4. **Deploy:** Set up and initiate the CI/CD pipelines, customizing tests as necessary. Refer to the [deployment section](#deployment) for comprehensive instructions. For streamlined infrastructure deployment, simply run `uvx agent-starter-pack setup-cicd`. Check out the [`agent-starter-pack setup-cicd` CLI command](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd.html). Currently supports GitHub with both Google Cloud Build and GitHub Actions as CI/CD runners.
|
163
168
|
5. **Monitor:** Track performance and gather insights using Cloud Logging, Tracing, and the Looker Studio dashboard to iterate on your application.
|
164
169
|
|
165
170
|
The project includes a `GEMINI.md` file that provides context for AI tools like Gemini CLI when asking questions about your template.
|
@@ -167,7 +172,7 @@ The project includes a `GEMINI.md` file that provides context for AI tools like
|
|
167
172
|
|
168
173
|
## Deployment
|
169
174
|
|
170
|
-
> **Note:** For a streamlined one-command deployment of the entire CI/CD pipeline and infrastructure using Terraform, you can use the [`agent-starter-pack setup-cicd` CLI command](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd.html). Currently
|
175
|
+
> **Note:** For a streamlined one-command deployment of the entire CI/CD pipeline and infrastructure using Terraform, you can use the [`agent-starter-pack setup-cicd` CLI command](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd.html). Currently supports GitHub with both Google Cloud Build and GitHub Actions as CI/CD runners.
|
171
176
|
|
172
177
|
### Dev Environment
|
173
178
|
|
@@ -1,126 +1,11 @@
|
|
1
|
-
# Deployment
|
1
|
+
# Deployment
|
2
2
|
|
3
|
-
This
|
3
|
+
This directory contains the Terraform configurations for provisioning the necessary Google Cloud infrastructure for your agent.
|
4
4
|
|
5
|
-
The
|
5
|
+
The recommended way to deploy the infrastructure and set up the CI/CD pipeline is by using the `agent-starter-pack setup-cicd` command from the root of your project.
|
6
6
|
|
7
|
-
|
7
|
+
However, for a more hands-on approach, you can always apply the Terraform configurations manually for a do-it-yourself setup.
|
8
8
|
|
9
|
-
|
9
|
+
For detailed information on the deployment process, infrastructure, and CI/CD pipelines, please refer to the official documentation:
|
10
10
|
|
11
|
-
**
|
12
|
-
|
13
|
-
1. CI Pipeline (`deployment/ci/pr_checks.yaml`):
|
14
|
-
|
15
|
-
- Triggered on pull request creation/update
|
16
|
-
- Runs unit and integration tests
|
17
|
-
|
18
|
-
2. CD Pipeline (`deployment/cd/staging.yaml`):
|
19
|
-
|
20
|
-
- Triggered on merge to `main` branch
|
21
|
-
- Builds and pushes application to Artifact Registry
|
22
|
-
- Deploys to staging environment
|
23
|
-
- Performs load testing
|
24
|
-
|
25
|
-
3. Production Deployment (`deployment/cd/deploy-to-prod.yaml`):
|
26
|
-
- Triggered after successful staging deployment
|
27
|
-
- Requires manual approval
|
28
|
-
- Deploys to production environment
|
29
|
-
|
30
|
-
## Setup
|
31
|
-
|
32
|
-
> **Note:** For a streamlined one-command deployment of the entire CI/CD pipeline and infrastructure using Terraform, you can use the [`uvx agent-starter-pack setup-cicd` CLI command](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd.html). Currently only supporting Github.
|
33
|
-
|
34
|
-
**Prerequisites:**
|
35
|
-
|
36
|
-
1. A set of Google Cloud projects:
|
37
|
-
- Staging project
|
38
|
-
- Production project
|
39
|
-
- CI/CD project (can be the same as staging or production)
|
40
|
-
2. Terraform installed on your local machine
|
41
|
-
3. Enable required APIs in the CI/CD project. This will be required for the Terraform deployment:
|
42
|
-
|
43
|
-
```bash
|
44
|
-
gcloud config set project $YOUR_CI_CD_PROJECT_ID
|
45
|
-
gcloud services enable serviceusage.googleapis.com cloudresourcemanager.googleapis.com cloudbuild.googleapis.com secretmanager.googleapis.com
|
46
|
-
```
|
47
|
-
|
48
|
-
## Step-by-Step Guide
|
49
|
-
|
50
|
-
1. **Create a Git Repository using your favorite Git provider (GitHub, GitLab, Bitbucket, etc.)**
|
51
|
-
|
52
|
-
2. **Connect Your Repository to Cloud Build**
|
53
|
-
For detailed instructions, visit: [Cloud Build Repository Setup](https://cloud.google.com/build/docs/repositories#whats_next).<br>
|
54
|
-
|
55
|
-

|
56
|
-
|
57
|
-
3. **Configure Terraform Variables**
|
58
|
-
|
59
|
-
- Edit [`deployment/terraform/vars/env.tfvars`](../terraform/vars/env.tfvars) with your Google Cloud settings.
|
60
|
-
|
61
|
-
| Variable | Description | Required |
|
62
|
-
| ---------------------- | --------------------------------------------------------------- | :------: |
|
63
|
-
| project_name | Project name used as a base for resource naming | Yes |
|
64
|
-
| prod_project_id | **Production** Google Cloud Project ID for resource deployment. | Yes |
|
65
|
-
| staging_project_id | **Staging** Google Cloud Project ID for resource deployment. | Yes |
|
66
|
-
| cicd_runner_project_id | Google Cloud Project ID where CI/CD pipelines will execute. | Yes |
|
67
|
-
| region | Google Cloud region for resource deployment. | Yes |
|
68
|
-
| host_connection_name | Name of the host connection you created in Cloud Build | Yes |
|
69
|
-
| repository_name | Name of the repository you added to Cloud Build | Yes |
|
70
|
-
|
71
|
-
Other optional variables may include: telemetry and feedback log filters, service account roles, and for projects requiring data ingestion: pipeline cron schedule, pipeline roles, and datastore-specific configurations.
|
72
|
-
|
73
|
-
4. **Deploy Infrastructure with Terraform**
|
74
|
-
|
75
|
-
- Open a terminal and navigate to the Terraform directory:
|
76
|
-
|
77
|
-
```bash
|
78
|
-
cd deployment/terraform
|
79
|
-
```
|
80
|
-
|
81
|
-
- Initialize Terraform:
|
82
|
-
|
83
|
-
```bash
|
84
|
-
terraform init
|
85
|
-
```
|
86
|
-
|
87
|
-
- Apply the Terraform configuration:
|
88
|
-
|
89
|
-
```bash
|
90
|
-
terraform apply --var-file vars/env.tfvars
|
91
|
-
```
|
92
|
-
|
93
|
-
- Type 'yes' when prompted to confirm
|
94
|
-
|
95
|
-
After completing these steps, your infrastructure will be set up and ready for deployment!
|
96
|
-
|
97
|
-
## Dev Deployment
|
98
|
-
|
99
|
-
For End-to-end testing of the application, including tracing and feedback sinking to BigQuery, without the need to trigger a CI/CD pipeline.
|
100
|
-
|
101
|
-
First, enable required Google Cloud APIs:
|
102
|
-
|
103
|
-
```bash
|
104
|
-
gcloud config set project <your-dev-project-id>
|
105
|
-
gcloud services enable serviceusage.googleapis.com cloudresourcemanager.googleapis.com
|
106
|
-
```
|
107
|
-
|
108
|
-
After you edited the relative [`env.tfvars` file](../terraform/dev/vars/env.tfvars), follow the following instructions:
|
109
|
-
|
110
|
-
```bash
|
111
|
-
cd deployment/terraform/dev
|
112
|
-
terraform init
|
113
|
-
terraform apply --var-file vars/env.tfvars
|
114
|
-
```
|
115
|
-
|
116
|
-
Then deploy the application using the following command (from the root of the repository):
|
117
|
-
|
118
|
-
```bash
|
119
|
-
make backend
|
120
|
-
```
|
121
|
-
|
122
|
-
### End-to-end Demo video
|
123
|
-
|
124
|
-
<a href="https://storage.googleapis.com/github-repo/generative-ai/sample-apps/e2e-gen-ai-app-starter-pack/template_deployment_demo.mp4">
|
125
|
-
<img src="https://storage.googleapis.com/github-repo/generative-ai/sample-apps/e2e-gen-ai-app-starter-pack/preview_video.png" alt="Watch the video" width="300"/>
|
126
|
-
</a>
|
11
|
+
**[Agent Starter Pack Deployment Guide](https://googlecloudplatform.github.io/agent-starter-pack/guide/deployment.html)**
|