From 12631caa4168eb33c036fd1b6bdeadcbd7a2109a Mon Sep 17 00:00:00 2001 From: Matt Brockman Date: Wed, 4 Mar 2026 19:53:38 -0800 Subject: [PATCH 1/5] build prod template has a workflow dispatch --- .github/workflows/build_prod_template.yml | 31 +++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/build_prod_template.yml diff --git a/.github/workflows/build_prod_template.yml b/.github/workflows/build_prod_template.yml new file mode 100644 index 00000000..007ebce9 --- /dev/null +++ b/.github/workflows/build_prod_template.yml @@ -0,0 +1,31 @@ +name: Build Prod Template + +on: + workflow_dispatch + +permissions: + contents: read + +jobs: + build-template: + name: Build E2B template + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - uses: actions/setup-python@v6 + with: + python-version: '3.13' + + - name: Install development dependencies + working-directory: ./template + run: pip install -r requirements-dev.txt + + - name: Build E2B template + id: build-template + working-directory: ./template + run: | + python build_prod.py + env: + E2B_API_KEY: ${{ secrets.E2B_PROD_API_KEY }} + E2B_DOMAIN: ${{ vars.E2B_DOMAIN }} From 524ffc8ef55de66aa51992ac3ca7f20bce3a76f8 Mon Sep 17 00:00:00 2001 From: Matt Brockman Date: Wed, 4 Mar 2026 19:58:49 -0800 Subject: [PATCH 2/5] fix trigger --- .github/workflows/build_prod_template.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_prod_template.yml b/.github/workflows/build_prod_template.yml index 007ebce9..0cb9f35e 100644 --- a/.github/workflows/build_prod_template.yml +++ b/.github/workflows/build_prod_template.yml @@ -1,7 +1,7 @@ name: Build Prod Template on: - workflow_dispatch + workflow_dispatch: permissions: contents: read From 5bd183f2b270abc12e53426eb7536dd83fad252e Mon Sep 17 00:00:00 2001 From: Matt Brockman Date: Wed, 4 Mar 2026 20:02:55 -0800 Subject: [PATCH 3/5] template has skip_cache option --- .github/workflows/build_prod_template.yml | 7 +++++++ template/build_prod.py | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/.github/workflows/build_prod_template.yml b/.github/workflows/build_prod_template.yml index 0cb9f35e..08f7a2a9 100644 --- a/.github/workflows/build_prod_template.yml +++ b/.github/workflows/build_prod_template.yml @@ -2,6 +2,12 @@ name: Build Prod Template on: workflow_dispatch: + inputs: + skip_cache: + description: Skip build cache + required: false + type: boolean + default: false permissions: contents: read @@ -29,3 +35,4 @@ jobs: env: E2B_API_KEY: ${{ secrets.E2B_PROD_API_KEY }} E2B_DOMAIN: ${{ vars.E2B_DOMAIN }} + SKIP_CACHE: ${{ inputs.skip_cache }} diff --git a/template/build_prod.py b/template/build_prod.py index 5274d8c4..1615ebff 100644 --- a/template/build_prod.py +++ b/template/build_prod.py @@ -1,13 +1,18 @@ +import os + from dotenv import load_dotenv from e2b import Template, default_build_logger from template import make_template load_dotenv() +skip_cache = os.getenv("SKIP_CACHE", "false").lower() == "true" + Template.build( make_template(), alias="code-interpreter-v1", cpu_count=2, memory_mb=2048, + skip_cache=skip_cache, on_build_logs=default_build_logger(), ) From 5f9554e1a762496ea59a27c786a1ecbd2049e090 Mon Sep 17 00:00:00 2001 From: Matt Brockman Date: Wed, 4 Mar 2026 20:05:03 -0800 Subject: [PATCH 4/5] fix: cursor wants concurrency protection --- .github/workflows/build_prod_template.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build_prod_template.yml b/.github/workflows/build_prod_template.yml index 08f7a2a9..3472f462 100644 --- a/.github/workflows/build_prod_template.yml +++ b/.github/workflows/build_prod_template.yml @@ -9,6 +9,10 @@ on: type: boolean default: false +concurrency: + group: Release-${{ github.ref }} + cancel-in-progress: false + permissions: contents: read From 5ab28433d09bb57b728aa9d4a8628c5810b9fe91 Mon Sep 17 00:00:00 2001 From: Matt Brockman Date: Wed, 4 Mar 2026 20:29:50 -0800 Subject: [PATCH 5/5] outdated template id deletion --- .github/workflows/build_test_template.yml | 10 +++++----- template/build_ci.py | 10 +++++++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_test_template.yml b/.github/workflows/build_test_template.yml index 3f39bc41..182426f9 100644 --- a/.github/workflows/build_test_template.yml +++ b/.github/workflows/build_test_template.yml @@ -22,7 +22,7 @@ jobs: name: Build E2B Template runs-on: ubuntu-latest outputs: - template_id: ${{ steps.generate-template-id.outputs.template_id }} + template_id: ${{ steps.build-template.outputs.template_id }} steps: - name: Checkout repository uses: actions/checkout@v4 @@ -42,12 +42,12 @@ jobs: working-directory: ./template run: pip install -r requirements-dev.txt - - name: Generate Template ID + - name: Generate Template Name id: generate-template-id run: | E2B_TESTS_TEMPLATE=e2b-code-interpreter-ci-$(uuidgen) - echo "Generated Template ID: $E2B_TESTS_TEMPLATE" - echo "template_id=$E2B_TESTS_TEMPLATE" >> $GITHUB_OUTPUT + echo "Generated Template Name: $E2B_TESTS_TEMPLATE" + echo "template_name=$E2B_TESTS_TEMPLATE" >> $GITHUB_OUTPUT - name: Build E2B template id: build-template @@ -57,4 +57,4 @@ jobs: env: E2B_API_KEY: ${{ secrets.E2B_API_KEY }} E2B_DOMAIN: ${{ inputs.E2B_DOMAIN }} - E2B_TESTS_TEMPLATE: ${{ steps.generate-template-id.outputs.template_id }} + E2B_TESTS_TEMPLATE: ${{ steps.generate-template-id.outputs.template_name }} diff --git a/template/build_ci.py b/template/build_ci.py index 1c89b472..13c0c311 100644 --- a/template/build_ci.py +++ b/template/build_ci.py @@ -2,10 +2,18 @@ from e2b import Template, default_build_logger from template import make_template -Template.build( +build_info = Template.build( make_template(), alias=os.environ["E2B_TESTS_TEMPLATE"], cpu_count=2, memory_mb=2048, on_build_logs=default_build_logger(), ) + +template_id = build_info.template_id +print(f"Built template ID: {template_id}") + +github_output = os.getenv("GITHUB_OUTPUT") +if github_output: + with open(github_output, "a", encoding="utf-8") as fh: + fh.write(f"template_id={template_id}\n")