Add internal cloud image release workflow - #1566

Merged
msukkari merged 3 commits into
mainfrom
codex/internal-demo
Aug 11, 2026
Merged

Add internal cloud image release workflow#1566
msukkari merged 3 commits into
mainfrom
codex/internal-demo

Conversation

@msukkari

@msukkarimsukkari commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a manually triggered internal cloud image build targeting the isolated internal ECR repository
  • make Sentry wiring explicitly optional for non-production builds while preserving the production default and validation

Verification

  • actionlint .github/workflows/_build-cloud.yml .github/workflows/release-cloud-internal.yml

Note

Cursor Bugbot is generating a summary for commit 1b9f596. Configure here.

Summary by CodeRabbit

  • New Features

    • Added a manually triggered cloud release workflow for isolated internal deployments.
    • Cloud image builds can now run without Sentry configuration when Sentry is disabled.
    • Release builds are tagged with both the current commit and the main branch.
  • Documentation

    • Added an Unreleased changelog entry documenting the new internal cloud release process.

@coderabbitai

coderabbitaiBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 48e9d587-510b-4e14-a4e5-cc184e7af9ac

📥 Commits

Reviewing files that changed from the base of the PR and between 002b174 and b4f3264.

📒 Files selected for processing (1)
  • .github/workflows/releaseCloudInternal.yml

Walkthrough

The reusable cloud build workflow now supports optional Sentry enforcement. A new manually triggered workflow invokes it for internal cloud releases with Sentry disabled and main/SHA Docker tags. The changelog documents the workflow.

Changes

Cloud release workflows

Layer / File(s)Summary
Conditional Sentry build behavior
.github/workflows/_build-cloud.yml
Adds the require_sentry input. AWS configuration remains required. Sentry validation, Docker secret passing, and release reporting now depend on that input.
Manual internal release wiring
.github/workflows/releaseCloudInternal.yml, CHANGELOG.md
Adds a manual internal release workflow with scoped permissions, concurrency settings, reusable cloud-build wiring, disabled Sentry, and main/SHA tags. Documents the workflow in the changelog.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
participant Operator
participant InternalRelease as releaseCloudInternal.yml
participant CloudBuild as _build-cloud.yml
participant Docker
Operator->>InternalRelease: Dispatch internal release
InternalRelease->>CloudBuild: Invoke build with Sentry disabled
CloudBuild->>Docker: Build image with main and SHA tags
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly and concisely describes the added internal cloud image release workflow, which is the primary change.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/internal-demo

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/release-cloud-internal.yml:
- Line 1: Rename the workflow file from release-cloud-internal.yml to
releaseCloudInternal.yml, preserving its existing contents and workflow
behavior.
- Around line 22-30: Remove the unconditional secrets: inherit setting from the
internal build invocation of ./.github/workflows/_build-cloud.yml; rely on the
internal environment’s environment-scoped secrets, since require_sentry is false
and no additional repository- or organization-level secret is required.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5eb0b518-2b97-48fa-b065-8e541501e49c

📥 Commits

Reviewing files that changed from the base of the PR and between 42c9244 and 002b174.

📒 Files selected for processing (3)
  • .github/workflows/_build-cloud.yml
  • .github/workflows/release-cloud-internal.yml
  • CHANGELOG.md

@@ -0,0 +1,30 @@
name: Release Sourcebot (Cloud - Internal Demo)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Rename the workflow file to camelCase.

Rename .github/workflows/release-cloud-internal.yml to .github/workflows/releaseCloudInternal.yml before merge. The current filename violates the repository file naming rule.

As per coding guidelines, files must use camelCase names starting with a lowercase letter.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml at line 1, Rename the workflow
file from release-cloud-internal.yml to releaseCloudInternal.yml, preserving its
existing contents and workflow behavior.

Source: Coding guidelines

Comment on lines +22 to +30
uses: ./.github/workflows/_build-cloud.yml
with:
environment: internal
git_ref: ${{ inputs.git_ref || 'main' }}
require_sentry: false
docker_tags: |
type=raw,value=main
type=sha,format=long
secrets: inherit

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
# Verify that the reusable workflow has no non-Sentry secret dependency.
rg -n -C 3 'secrets\.' .github/workflows/_build-cloud.yml

Repository: sourcebot-dev/sourcebot

Length of output: 1451


🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
printf'%s\n''--- reusable workflow ---'
cat -n .github/workflows/_build-cloud.yml | sed -n '1,180p'printf'%s\n''--- internal caller ---'
cat -n .github/workflows/release-cloud-internal.yml | sed -n '1,100p'printf'%s\n''--- callers and secret declarations ---'
rg -n -C 5 'uses: .*_build-cloud\.yml|require_sentry:|secrets:|workflow_call:|SENTRY_AUTH_TOKEN' .github/workflows

Repository: sourcebot-dev/sourcebot

Length of output: 24669


🌐 Web query:

GitHub Actions reusable workflows secrets inherit environment secrets called workflow job environment workflow_call

💡 Result:

In GitHub Actions, environment secrets in reusable workflows are accessed by defining an environment at the job level within the called (reusable) workflow, while also ensuring the caller workflow provides the necessary secret context via secrets: inherit [1][2]. While official documentation notes that environment secrets cannot be passed directly from a caller workflow using the environment keyword in on.workflow_call [1][3], users have identified that simply defining environment in the reusable workflow is often insufficient for secret resolution [4][5]. The use of secrets: inherit in the caller workflow's job configuration is effectively required to ensure that environment-scoped secrets are correctly resolved and available within the reusable workflow [4][5][2]. Key implementation details include: 1. Reusable Workflow Configuration: The reusable workflow must define the environment at the job level (e.g., environment: ${{ inputs.env_name }}) [6][2]. You may need to pass the environment name as an input to the reusable workflow to keep it dynamic [6][2]. 2. Caller Workflow Configuration: The caller workflow must use secrets: inherit to grant the reusable workflow access to the caller's secret context, which includes environment-specific secrets once the environment is properly scoped [1][4][2]. If secrets: inherit is not used, environment-scoped secrets often resolve to an empty string instead of throwing an error [4][5]. Using secrets: inherit allows the reusable workflow to access the environment secrets associated with the environment defined in its job [2].

Citations:


🌐 Web query:

site:docs.github.com actions reusable workflow jobs environment secrets inherit workflow_call environment secrets

💡 Result:

When calling a reusable workflow in GitHub Actions, you can use the secrets: inherit keyword in your calling workflow to implicitly pass all secrets from the caller to the called workflow [1][2]. However, there are critical limitations regarding environment secrets and how they interact with reusable workflows [1][3]. Key points regarding environment secrets and reusable workflows: 1. Environment secrets cannot be passed from a caller workflow to a reusable workflow [1][3]. This is because the on.workflow_call trigger does not support the environment keyword [1][3]. 2. If your reusable workflow needs to access environment secrets, it must define the environment keyword at the job level within the reusable workflow itself [1][3]. 3. When you define an environment at the job level in a reusable workflow, the job will use the secrets associated with that specified environment, not any secrets passed from the caller workflow [1][2]. 4. The secrets: inherit keyword allows the called workflow to access all secrets available to the caller (such as repository or organization-level secrets) without needing to explicitly map them in the on.workflow_call configuration [1][3]. In summary, because environment cannot be passed through workflow_call, you cannot dynamically inject environment-specific secrets from a caller into a reusable workflow via inherit or mapping. The reusable workflow must explicitly declare the environment it requires to access secrets bound to that environment [1][3].

Citations:


🌐 Web query:

site:docs.github.com "Environment secrets cannot be passed from the caller workflow"

💡 Result:

In GitHub Actions, environment secrets cannot be passed from a caller workflow to a reusable workflow because the on.workflow_call trigger does not support the environment keyword [1][2]. When a reusable workflow is configured to use an environment at the job level, it will automatically use the environment secrets defined for that environment within its own repository, rather than any secrets passed from the caller workflow [1][3]. To use secrets in a reusable workflow, you must explicitly pass them using the secrets keyword in the caller workflow [2][4], or use secrets: inherit to pass all secrets from the caller to the reusable workflow [1][2]. However, these methods apply to repository or organization-level secrets, not environment-specific secrets, which are strictly scoped to the job's execution context and the environment they are associated with [1][5].

Citations:


Remove unconditional secret inheritance for the internal build.

The internal job environment supplies its environment-scoped secrets independently of secrets: inherit. With require_sentry: false, the workflow does not require SENTRY_AUTH_TOKEN. Remove secrets: inherit unless another repository- or organization-level secret is required.

🧰 Tools
🪛 zizmor (1.29.0)

[warning] 22-22: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow

(secrets-inherit)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml around lines 22 - 30, Remove
the unconditional secrets: inherit setting from the internal build invocation of
./.github/workflows/_build-cloud.yml; rely on the internal environment’s
environment-scoped secrets, since require_sentry is false and no additional
repository- or organization-level secret is required.

Source: Linters/SAST tools

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 002b174. Configure here.

Comment thread.github/workflows/release-cloud-internal.yml Outdated
@msukkari
msukkari merged commit 9250432 into mainAug 11, 2026
12 checks passed
@msukkari
msukkari deleted the codex/internal-demo branch August 11, 2026 19:30
@github-actionsgithub-actionsBot mentioned this pull request Aug 11, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@msukkari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add internal cloud image release workflow - #1566

Merged
msukkari merged 3 commits into
mainfrom
codex/internal-demo
Aug 11, 2026
Merged

Add internal cloud image release workflow#1566
msukkari merged 3 commits into
mainfrom
codex/internal-demo

Conversation

@msukkari

@msukkarimsukkari commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a manually triggered internal cloud image build targeting the isolated internal ECR repository
  • make Sentry wiring explicitly optional for non-production builds while preserving the production default and validation

Verification

  • actionlint .github/workflows/_build-cloud.yml .github/workflows/release-cloud-internal.yml

Note

Cursor Bugbot is generating a summary for commit 1b9f596. Configure here.

Summary by CodeRabbit

  • New Features

    • Added a manually triggered cloud release workflow for isolated internal deployments.
    • Cloud image builds can now run without Sentry configuration when Sentry is disabled.
    • Release builds are tagged with both the current commit and the main branch.
  • Documentation

    • Added an Unreleased changelog entry documenting the new internal cloud release process.

@coderabbitai

coderabbitaiBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 48e9d587-510b-4e14-a4e5-cc184e7af9ac

📥 Commits

Reviewing files that changed from the base of the PR and between 002b174 and b4f3264.

📒 Files selected for processing (1)
  • .github/workflows/releaseCloudInternal.yml

Walkthrough

The reusable cloud build workflow now supports optional Sentry enforcement. A new manually triggered workflow invokes it for internal cloud releases with Sentry disabled and main/SHA Docker tags. The changelog documents the workflow.

Changes

Cloud release workflows

Layer / File(s)Summary
Conditional Sentry build behavior
.github/workflows/_build-cloud.yml
Adds the require_sentry input. AWS configuration remains required. Sentry validation, Docker secret passing, and release reporting now depend on that input.
Manual internal release wiring
.github/workflows/releaseCloudInternal.yml, CHANGELOG.md
Adds a manual internal release workflow with scoped permissions, concurrency settings, reusable cloud-build wiring, disabled Sentry, and main/SHA tags. Documents the workflow in the changelog.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
participant Operator
participant InternalRelease as releaseCloudInternal.yml
participant CloudBuild as _build-cloud.yml
participant Docker
Operator->>InternalRelease: Dispatch internal release
InternalRelease->>CloudBuild: Invoke build with Sentry disabled
CloudBuild->>Docker: Build image with main and SHA tags
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly and concisely describes the added internal cloud image release workflow, which is the primary change.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/internal-demo

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/release-cloud-internal.yml:
- Line 1: Rename the workflow file from release-cloud-internal.yml to
releaseCloudInternal.yml, preserving its existing contents and workflow
behavior.
- Around line 22-30: Remove the unconditional secrets: inherit setting from the
internal build invocation of ./.github/workflows/_build-cloud.yml; rely on the
internal environment’s environment-scoped secrets, since require_sentry is false
and no additional repository- or organization-level secret is required.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5eb0b518-2b97-48fa-b065-8e541501e49c

📥 Commits

Reviewing files that changed from the base of the PR and between 42c9244 and 002b174.

📒 Files selected for processing (3)
  • .github/workflows/_build-cloud.yml
  • .github/workflows/release-cloud-internal.yml
  • CHANGELOG.md

@@ -0,0 +1,30 @@
name: Release Sourcebot (Cloud - Internal Demo)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Rename the workflow file to camelCase.

Rename .github/workflows/release-cloud-internal.yml to .github/workflows/releaseCloudInternal.yml before merge. The current filename violates the repository file naming rule.

As per coding guidelines, files must use camelCase names starting with a lowercase letter.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml at line 1, Rename the workflow
file from release-cloud-internal.yml to releaseCloudInternal.yml, preserving its
existing contents and workflow behavior.

Source: Coding guidelines

Comment on lines +22 to +30
uses: ./.github/workflows/_build-cloud.yml
with:
environment: internal
git_ref: ${{ inputs.git_ref || 'main' }}
require_sentry: false
docker_tags: |
type=raw,value=main
type=sha,format=long
secrets: inherit

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
# Verify that the reusable workflow has no non-Sentry secret dependency.
rg -n -C 3 'secrets\.' .github/workflows/_build-cloud.yml

Repository: sourcebot-dev/sourcebot

Length of output: 1451


🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
printf'%s\n''--- reusable workflow ---'
cat -n .github/workflows/_build-cloud.yml | sed -n '1,180p'printf'%s\n''--- internal caller ---'
cat -n .github/workflows/release-cloud-internal.yml | sed -n '1,100p'printf'%s\n''--- callers and secret declarations ---'
rg -n -C 5 'uses: .*_build-cloud\.yml|require_sentry:|secrets:|workflow_call:|SENTRY_AUTH_TOKEN' .github/workflows

Repository: sourcebot-dev/sourcebot

Length of output: 24669


🌐 Web query:

GitHub Actions reusable workflows secrets inherit environment secrets called workflow job environment workflow_call

💡 Result:

In GitHub Actions, environment secrets in reusable workflows are accessed by defining an environment at the job level within the called (reusable) workflow, while also ensuring the caller workflow provides the necessary secret context via secrets: inherit [1][2]. While official documentation notes that environment secrets cannot be passed directly from a caller workflow using the environment keyword in on.workflow_call [1][3], users have identified that simply defining environment in the reusable workflow is often insufficient for secret resolution [4][5]. The use of secrets: inherit in the caller workflow's job configuration is effectively required to ensure that environment-scoped secrets are correctly resolved and available within the reusable workflow [4][5][2]. Key implementation details include: 1. Reusable Workflow Configuration: The reusable workflow must define the environment at the job level (e.g., environment: ${{ inputs.env_name }}) [6][2]. You may need to pass the environment name as an input to the reusable workflow to keep it dynamic [6][2]. 2. Caller Workflow Configuration: The caller workflow must use secrets: inherit to grant the reusable workflow access to the caller's secret context, which includes environment-specific secrets once the environment is properly scoped [1][4][2]. If secrets: inherit is not used, environment-scoped secrets often resolve to an empty string instead of throwing an error [4][5]. Using secrets: inherit allows the reusable workflow to access the environment secrets associated with the environment defined in its job [2].

Citations:


🌐 Web query:

site:docs.github.com actions reusable workflow jobs environment secrets inherit workflow_call environment secrets

💡 Result:

When calling a reusable workflow in GitHub Actions, you can use the secrets: inherit keyword in your calling workflow to implicitly pass all secrets from the caller to the called workflow [1][2]. However, there are critical limitations regarding environment secrets and how they interact with reusable workflows [1][3]. Key points regarding environment secrets and reusable workflows: 1. Environment secrets cannot be passed from a caller workflow to a reusable workflow [1][3]. This is because the on.workflow_call trigger does not support the environment keyword [1][3]. 2. If your reusable workflow needs to access environment secrets, it must define the environment keyword at the job level within the reusable workflow itself [1][3]. 3. When you define an environment at the job level in a reusable workflow, the job will use the secrets associated with that specified environment, not any secrets passed from the caller workflow [1][2]. 4. The secrets: inherit keyword allows the called workflow to access all secrets available to the caller (such as repository or organization-level secrets) without needing to explicitly map them in the on.workflow_call configuration [1][3]. In summary, because environment cannot be passed through workflow_call, you cannot dynamically inject environment-specific secrets from a caller into a reusable workflow via inherit or mapping. The reusable workflow must explicitly declare the environment it requires to access secrets bound to that environment [1][3].

Citations:


🌐 Web query:

site:docs.github.com "Environment secrets cannot be passed from the caller workflow"

💡 Result:

In GitHub Actions, environment secrets cannot be passed from a caller workflow to a reusable workflow because the on.workflow_call trigger does not support the environment keyword [1][2]. When a reusable workflow is configured to use an environment at the job level, it will automatically use the environment secrets defined for that environment within its own repository, rather than any secrets passed from the caller workflow [1][3]. To use secrets in a reusable workflow, you must explicitly pass them using the secrets keyword in the caller workflow [2][4], or use secrets: inherit to pass all secrets from the caller to the reusable workflow [1][2]. However, these methods apply to repository or organization-level secrets, not environment-specific secrets, which are strictly scoped to the job's execution context and the environment they are associated with [1][5].

Citations:


Remove unconditional secret inheritance for the internal build.

The internal job environment supplies its environment-scoped secrets independently of secrets: inherit. With require_sentry: false, the workflow does not require SENTRY_AUTH_TOKEN. Remove secrets: inherit unless another repository- or organization-level secret is required.

🧰 Tools
🪛 zizmor (1.29.0)

[warning] 22-22: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow

(secrets-inherit)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml around lines 22 - 30, Remove
the unconditional secrets: inherit setting from the internal build invocation of
./.github/workflows/_build-cloud.yml; rely on the internal environment’s
environment-scoped secrets, since require_sentry is false and no additional
repository- or organization-level secret is required.

Source: Linters/SAST tools

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 002b174. Configure here.

Comment thread.github/workflows/release-cloud-internal.yml Outdated
@msukkari
msukkari merged commit 9250432 into mainAug 11, 2026
12 checks passed
@msukkari
msukkari deleted the codex/internal-demo branch August 11, 2026 19:30
@github-actionsgithub-actionsBot mentioned this pull request Aug 11, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@msukkari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add internal cloud image release workflow - #1566

Merged
msukkari merged 3 commits into
mainfrom
codex/internal-demo
Aug 11, 2026
Merged

Add internal cloud image release workflow#1566
msukkari merged 3 commits into
mainfrom
codex/internal-demo

Conversation

@msukkari

@msukkarimsukkari commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a manually triggered internal cloud image build targeting the isolated internal ECR repository
  • make Sentry wiring explicitly optional for non-production builds while preserving the production default and validation

Verification

  • actionlint .github/workflows/_build-cloud.yml .github/workflows/release-cloud-internal.yml

Note

Cursor Bugbot is generating a summary for commit 1b9f596. Configure here.

Summary by CodeRabbit

  • New Features

    • Added a manually triggered cloud release workflow for isolated internal deployments.
    • Cloud image builds can now run without Sentry configuration when Sentry is disabled.
    • Release builds are tagged with both the current commit and the main branch.
  • Documentation

    • Added an Unreleased changelog entry documenting the new internal cloud release process.

@coderabbitai

coderabbitaiBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 48e9d587-510b-4e14-a4e5-cc184e7af9ac

📥 Commits

Reviewing files that changed from the base of the PR and between 002b174 and b4f3264.

📒 Files selected for processing (1)
  • .github/workflows/releaseCloudInternal.yml

Walkthrough

The reusable cloud build workflow now supports optional Sentry enforcement. A new manually triggered workflow invokes it for internal cloud releases with Sentry disabled and main/SHA Docker tags. The changelog documents the workflow.

Changes

Cloud release workflows

Layer / File(s)Summary
Conditional Sentry build behavior
.github/workflows/_build-cloud.yml
Adds the require_sentry input. AWS configuration remains required. Sentry validation, Docker secret passing, and release reporting now depend on that input.
Manual internal release wiring
.github/workflows/releaseCloudInternal.yml, CHANGELOG.md
Adds a manual internal release workflow with scoped permissions, concurrency settings, reusable cloud-build wiring, disabled Sentry, and main/SHA tags. Documents the workflow in the changelog.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
participant Operator
participant InternalRelease as releaseCloudInternal.yml
participant CloudBuild as _build-cloud.yml
participant Docker
Operator->>InternalRelease: Dispatch internal release
InternalRelease->>CloudBuild: Invoke build with Sentry disabled
CloudBuild->>Docker: Build image with main and SHA tags
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly and concisely describes the added internal cloud image release workflow, which is the primary change.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/internal-demo

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/release-cloud-internal.yml:
- Line 1: Rename the workflow file from release-cloud-internal.yml to
releaseCloudInternal.yml, preserving its existing contents and workflow
behavior.
- Around line 22-30: Remove the unconditional secrets: inherit setting from the
internal build invocation of ./.github/workflows/_build-cloud.yml; rely on the
internal environment’s environment-scoped secrets, since require_sentry is false
and no additional repository- or organization-level secret is required.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5eb0b518-2b97-48fa-b065-8e541501e49c

📥 Commits

Reviewing files that changed from the base of the PR and between 42c9244 and 002b174.

📒 Files selected for processing (3)
  • .github/workflows/_build-cloud.yml
  • .github/workflows/release-cloud-internal.yml
  • CHANGELOG.md

@@ -0,0 +1,30 @@
name: Release Sourcebot (Cloud - Internal Demo)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Rename the workflow file to camelCase.

Rename .github/workflows/release-cloud-internal.yml to .github/workflows/releaseCloudInternal.yml before merge. The current filename violates the repository file naming rule.

As per coding guidelines, files must use camelCase names starting with a lowercase letter.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml at line 1, Rename the workflow
file from release-cloud-internal.yml to releaseCloudInternal.yml, preserving its
existing contents and workflow behavior.

Source: Coding guidelines

Comment on lines +22 to +30
uses: ./.github/workflows/_build-cloud.yml
with:
environment: internal
git_ref: ${{ inputs.git_ref || 'main' }}
require_sentry: false
docker_tags: |
type=raw,value=main
type=sha,format=long
secrets: inherit

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
# Verify that the reusable workflow has no non-Sentry secret dependency.
rg -n -C 3 'secrets\.' .github/workflows/_build-cloud.yml

Repository: sourcebot-dev/sourcebot

Length of output: 1451


🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
printf'%s\n''--- reusable workflow ---'
cat -n .github/workflows/_build-cloud.yml | sed -n '1,180p'printf'%s\n''--- internal caller ---'
cat -n .github/workflows/release-cloud-internal.yml | sed -n '1,100p'printf'%s\n''--- callers and secret declarations ---'
rg -n -C 5 'uses: .*_build-cloud\.yml|require_sentry:|secrets:|workflow_call:|SENTRY_AUTH_TOKEN' .github/workflows

Repository: sourcebot-dev/sourcebot

Length of output: 24669


🌐 Web query:

GitHub Actions reusable workflows secrets inherit environment secrets called workflow job environment workflow_call

💡 Result:

In GitHub Actions, environment secrets in reusable workflows are accessed by defining an environment at the job level within the called (reusable) workflow, while also ensuring the caller workflow provides the necessary secret context via secrets: inherit [1][2]. While official documentation notes that environment secrets cannot be passed directly from a caller workflow using the environment keyword in on.workflow_call [1][3], users have identified that simply defining environment in the reusable workflow is often insufficient for secret resolution [4][5]. The use of secrets: inherit in the caller workflow's job configuration is effectively required to ensure that environment-scoped secrets are correctly resolved and available within the reusable workflow [4][5][2]. Key implementation details include: 1. Reusable Workflow Configuration: The reusable workflow must define the environment at the job level (e.g., environment: ${{ inputs.env_name }}) [6][2]. You may need to pass the environment name as an input to the reusable workflow to keep it dynamic [6][2]. 2. Caller Workflow Configuration: The caller workflow must use secrets: inherit to grant the reusable workflow access to the caller's secret context, which includes environment-specific secrets once the environment is properly scoped [1][4][2]. If secrets: inherit is not used, environment-scoped secrets often resolve to an empty string instead of throwing an error [4][5]. Using secrets: inherit allows the reusable workflow to access the environment secrets associated with the environment defined in its job [2].

Citations:


🌐 Web query:

site:docs.github.com actions reusable workflow jobs environment secrets inherit workflow_call environment secrets

💡 Result:

When calling a reusable workflow in GitHub Actions, you can use the secrets: inherit keyword in your calling workflow to implicitly pass all secrets from the caller to the called workflow [1][2]. However, there are critical limitations regarding environment secrets and how they interact with reusable workflows [1][3]. Key points regarding environment secrets and reusable workflows: 1. Environment secrets cannot be passed from a caller workflow to a reusable workflow [1][3]. This is because the on.workflow_call trigger does not support the environment keyword [1][3]. 2. If your reusable workflow needs to access environment secrets, it must define the environment keyword at the job level within the reusable workflow itself [1][3]. 3. When you define an environment at the job level in a reusable workflow, the job will use the secrets associated with that specified environment, not any secrets passed from the caller workflow [1][2]. 4. The secrets: inherit keyword allows the called workflow to access all secrets available to the caller (such as repository or organization-level secrets) without needing to explicitly map them in the on.workflow_call configuration [1][3]. In summary, because environment cannot be passed through workflow_call, you cannot dynamically inject environment-specific secrets from a caller into a reusable workflow via inherit or mapping. The reusable workflow must explicitly declare the environment it requires to access secrets bound to that environment [1][3].

Citations:


🌐 Web query:

site:docs.github.com "Environment secrets cannot be passed from the caller workflow"

💡 Result:

In GitHub Actions, environment secrets cannot be passed from a caller workflow to a reusable workflow because the on.workflow_call trigger does not support the environment keyword [1][2]. When a reusable workflow is configured to use an environment at the job level, it will automatically use the environment secrets defined for that environment within its own repository, rather than any secrets passed from the caller workflow [1][3]. To use secrets in a reusable workflow, you must explicitly pass them using the secrets keyword in the caller workflow [2][4], or use secrets: inherit to pass all secrets from the caller to the reusable workflow [1][2]. However, these methods apply to repository or organization-level secrets, not environment-specific secrets, which are strictly scoped to the job's execution context and the environment they are associated with [1][5].

Citations:


Remove unconditional secret inheritance for the internal build.

The internal job environment supplies its environment-scoped secrets independently of secrets: inherit. With require_sentry: false, the workflow does not require SENTRY_AUTH_TOKEN. Remove secrets: inherit unless another repository- or organization-level secret is required.

🧰 Tools
🪛 zizmor (1.29.0)

[warning] 22-22: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow

(secrets-inherit)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml around lines 22 - 30, Remove
the unconditional secrets: inherit setting from the internal build invocation of
./.github/workflows/_build-cloud.yml; rely on the internal environment’s
environment-scoped secrets, since require_sentry is false and no additional
repository- or organization-level secret is required.

Source: Linters/SAST tools

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 002b174. Configure here.

Comment thread.github/workflows/release-cloud-internal.yml Outdated
@msukkari
msukkari merged commit 9250432 into mainAug 11, 2026
12 checks passed
@msukkari
msukkari deleted the codex/internal-demo branch August 11, 2026 19:30
@github-actionsgithub-actionsBot mentioned this pull request Aug 11, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@msukkari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add internal cloud image release workflow - #1566

Merged
msukkari merged 3 commits into
mainfrom
codex/internal-demo
Aug 11, 2026
Merged

Add internal cloud image release workflow#1566
msukkari merged 3 commits into
mainfrom
codex/internal-demo

Conversation

@msukkari

@msukkarimsukkari commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a manually triggered internal cloud image build targeting the isolated internal ECR repository
  • make Sentry wiring explicitly optional for non-production builds while preserving the production default and validation

Verification

  • actionlint .github/workflows/_build-cloud.yml .github/workflows/release-cloud-internal.yml

Note

Cursor Bugbot is generating a summary for commit 1b9f596. Configure here.

Summary by CodeRabbit

  • New Features

    • Added a manually triggered cloud release workflow for isolated internal deployments.
    • Cloud image builds can now run without Sentry configuration when Sentry is disabled.
    • Release builds are tagged with both the current commit and the main branch.
  • Documentation

    • Added an Unreleased changelog entry documenting the new internal cloud release process.

@coderabbitai

coderabbitaiBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 48e9d587-510b-4e14-a4e5-cc184e7af9ac

📥 Commits

Reviewing files that changed from the base of the PR and between 002b174 and b4f3264.

📒 Files selected for processing (1)
  • .github/workflows/releaseCloudInternal.yml

Walkthrough

The reusable cloud build workflow now supports optional Sentry enforcement. A new manually triggered workflow invokes it for internal cloud releases with Sentry disabled and main/SHA Docker tags. The changelog documents the workflow.

Changes

Cloud release workflows

Layer / File(s)Summary
Conditional Sentry build behavior
.github/workflows/_build-cloud.yml
Adds the require_sentry input. AWS configuration remains required. Sentry validation, Docker secret passing, and release reporting now depend on that input.
Manual internal release wiring
.github/workflows/releaseCloudInternal.yml, CHANGELOG.md
Adds a manual internal release workflow with scoped permissions, concurrency settings, reusable cloud-build wiring, disabled Sentry, and main/SHA tags. Documents the workflow in the changelog.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
participant Operator
participant InternalRelease as releaseCloudInternal.yml
participant CloudBuild as _build-cloud.yml
participant Docker
Operator->>InternalRelease: Dispatch internal release
InternalRelease->>CloudBuild: Invoke build with Sentry disabled
CloudBuild->>Docker: Build image with main and SHA tags
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly and concisely describes the added internal cloud image release workflow, which is the primary change.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/internal-demo

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/release-cloud-internal.yml:
- Line 1: Rename the workflow file from release-cloud-internal.yml to
releaseCloudInternal.yml, preserving its existing contents and workflow
behavior.
- Around line 22-30: Remove the unconditional secrets: inherit setting from the
internal build invocation of ./.github/workflows/_build-cloud.yml; rely on the
internal environment’s environment-scoped secrets, since require_sentry is false
and no additional repository- or organization-level secret is required.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5eb0b518-2b97-48fa-b065-8e541501e49c

📥 Commits

Reviewing files that changed from the base of the PR and between 42c9244 and 002b174.

📒 Files selected for processing (3)
  • .github/workflows/_build-cloud.yml
  • .github/workflows/release-cloud-internal.yml
  • CHANGELOG.md

@@ -0,0 +1,30 @@
name: Release Sourcebot (Cloud - Internal Demo)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Rename the workflow file to camelCase.

Rename .github/workflows/release-cloud-internal.yml to .github/workflows/releaseCloudInternal.yml before merge. The current filename violates the repository file naming rule.

As per coding guidelines, files must use camelCase names starting with a lowercase letter.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml at line 1, Rename the workflow
file from release-cloud-internal.yml to releaseCloudInternal.yml, preserving its
existing contents and workflow behavior.

Source: Coding guidelines

Comment on lines +22 to +30
uses: ./.github/workflows/_build-cloud.yml
with:
environment: internal
git_ref: ${{ inputs.git_ref || 'main' }}
require_sentry: false
docker_tags: |
type=raw,value=main
type=sha,format=long
secrets: inherit

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
# Verify that the reusable workflow has no non-Sentry secret dependency.
rg -n -C 3 'secrets\.' .github/workflows/_build-cloud.yml

Repository: sourcebot-dev/sourcebot

Length of output: 1451


🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
printf'%s\n''--- reusable workflow ---'
cat -n .github/workflows/_build-cloud.yml | sed -n '1,180p'printf'%s\n''--- internal caller ---'
cat -n .github/workflows/release-cloud-internal.yml | sed -n '1,100p'printf'%s\n''--- callers and secret declarations ---'
rg -n -C 5 'uses: .*_build-cloud\.yml|require_sentry:|secrets:|workflow_call:|SENTRY_AUTH_TOKEN' .github/workflows

Repository: sourcebot-dev/sourcebot

Length of output: 24669


🌐 Web query:

GitHub Actions reusable workflows secrets inherit environment secrets called workflow job environment workflow_call

💡 Result:

In GitHub Actions, environment secrets in reusable workflows are accessed by defining an environment at the job level within the called (reusable) workflow, while also ensuring the caller workflow provides the necessary secret context via secrets: inherit [1][2]. While official documentation notes that environment secrets cannot be passed directly from a caller workflow using the environment keyword in on.workflow_call [1][3], users have identified that simply defining environment in the reusable workflow is often insufficient for secret resolution [4][5]. The use of secrets: inherit in the caller workflow's job configuration is effectively required to ensure that environment-scoped secrets are correctly resolved and available within the reusable workflow [4][5][2]. Key implementation details include: 1. Reusable Workflow Configuration: The reusable workflow must define the environment at the job level (e.g., environment: ${{ inputs.env_name }}) [6][2]. You may need to pass the environment name as an input to the reusable workflow to keep it dynamic [6][2]. 2. Caller Workflow Configuration: The caller workflow must use secrets: inherit to grant the reusable workflow access to the caller's secret context, which includes environment-specific secrets once the environment is properly scoped [1][4][2]. If secrets: inherit is not used, environment-scoped secrets often resolve to an empty string instead of throwing an error [4][5]. Using secrets: inherit allows the reusable workflow to access the environment secrets associated with the environment defined in its job [2].

Citations:


🌐 Web query:

site:docs.github.com actions reusable workflow jobs environment secrets inherit workflow_call environment secrets

💡 Result:

When calling a reusable workflow in GitHub Actions, you can use the secrets: inherit keyword in your calling workflow to implicitly pass all secrets from the caller to the called workflow [1][2]. However, there are critical limitations regarding environment secrets and how they interact with reusable workflows [1][3]. Key points regarding environment secrets and reusable workflows: 1. Environment secrets cannot be passed from a caller workflow to a reusable workflow [1][3]. This is because the on.workflow_call trigger does not support the environment keyword [1][3]. 2. If your reusable workflow needs to access environment secrets, it must define the environment keyword at the job level within the reusable workflow itself [1][3]. 3. When you define an environment at the job level in a reusable workflow, the job will use the secrets associated with that specified environment, not any secrets passed from the caller workflow [1][2]. 4. The secrets: inherit keyword allows the called workflow to access all secrets available to the caller (such as repository or organization-level secrets) without needing to explicitly map them in the on.workflow_call configuration [1][3]. In summary, because environment cannot be passed through workflow_call, you cannot dynamically inject environment-specific secrets from a caller into a reusable workflow via inherit or mapping. The reusable workflow must explicitly declare the environment it requires to access secrets bound to that environment [1][3].

Citations:


🌐 Web query:

site:docs.github.com "Environment secrets cannot be passed from the caller workflow"

💡 Result:

In GitHub Actions, environment secrets cannot be passed from a caller workflow to a reusable workflow because the on.workflow_call trigger does not support the environment keyword [1][2]. When a reusable workflow is configured to use an environment at the job level, it will automatically use the environment secrets defined for that environment within its own repository, rather than any secrets passed from the caller workflow [1][3]. To use secrets in a reusable workflow, you must explicitly pass them using the secrets keyword in the caller workflow [2][4], or use secrets: inherit to pass all secrets from the caller to the reusable workflow [1][2]. However, these methods apply to repository or organization-level secrets, not environment-specific secrets, which are strictly scoped to the job's execution context and the environment they are associated with [1][5].

Citations:


Remove unconditional secret inheritance for the internal build.

The internal job environment supplies its environment-scoped secrets independently of secrets: inherit. With require_sentry: false, the workflow does not require SENTRY_AUTH_TOKEN. Remove secrets: inherit unless another repository- or organization-level secret is required.

🧰 Tools
🪛 zizmor (1.29.0)

[warning] 22-22: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow

(secrets-inherit)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml around lines 22 - 30, Remove
the unconditional secrets: inherit setting from the internal build invocation of
./.github/workflows/_build-cloud.yml; rely on the internal environment’s
environment-scoped secrets, since require_sentry is false and no additional
repository- or organization-level secret is required.

Source: Linters/SAST tools

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 002b174. Configure here.

Comment thread.github/workflows/release-cloud-internal.yml Outdated
@msukkari
msukkari merged commit 9250432 into mainAug 11, 2026
12 checks passed
@msukkari
msukkari deleted the codex/internal-demo branch August 11, 2026 19:30
@github-actionsgithub-actionsBot mentioned this pull request Aug 11, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@msukkari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add internal cloud image release workflow - #1566

Merged
msukkari merged 3 commits into
mainfrom
codex/internal-demo
Aug 11, 2026
Merged

Add internal cloud image release workflow#1566
msukkari merged 3 commits into
mainfrom
codex/internal-demo

Conversation

@msukkari

@msukkarimsukkari commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a manually triggered internal cloud image build targeting the isolated internal ECR repository
  • make Sentry wiring explicitly optional for non-production builds while preserving the production default and validation

Verification

  • actionlint .github/workflows/_build-cloud.yml .github/workflows/release-cloud-internal.yml

Note

Cursor Bugbot is generating a summary for commit 1b9f596. Configure here.

Summary by CodeRabbit

  • New Features

    • Added a manually triggered cloud release workflow for isolated internal deployments.
    • Cloud image builds can now run without Sentry configuration when Sentry is disabled.
    • Release builds are tagged with both the current commit and the main branch.
  • Documentation

    • Added an Unreleased changelog entry documenting the new internal cloud release process.

@coderabbitai

coderabbitaiBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 48e9d587-510b-4e14-a4e5-cc184e7af9ac

📥 Commits

Reviewing files that changed from the base of the PR and between 002b174 and b4f3264.

📒 Files selected for processing (1)
  • .github/workflows/releaseCloudInternal.yml

Walkthrough

The reusable cloud build workflow now supports optional Sentry enforcement. A new manually triggered workflow invokes it for internal cloud releases with Sentry disabled and main/SHA Docker tags. The changelog documents the workflow.

Changes

Cloud release workflows

Layer / File(s)Summary
Conditional Sentry build behavior
.github/workflows/_build-cloud.yml
Adds the require_sentry input. AWS configuration remains required. Sentry validation, Docker secret passing, and release reporting now depend on that input.
Manual internal release wiring
.github/workflows/releaseCloudInternal.yml, CHANGELOG.md
Adds a manual internal release workflow with scoped permissions, concurrency settings, reusable cloud-build wiring, disabled Sentry, and main/SHA tags. Documents the workflow in the changelog.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
participant Operator
participant InternalRelease as releaseCloudInternal.yml
participant CloudBuild as _build-cloud.yml
participant Docker
Operator->>InternalRelease: Dispatch internal release
InternalRelease->>CloudBuild: Invoke build with Sentry disabled
CloudBuild->>Docker: Build image with main and SHA tags
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly and concisely describes the added internal cloud image release workflow, which is the primary change.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/internal-demo

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/release-cloud-internal.yml:
- Line 1: Rename the workflow file from release-cloud-internal.yml to
releaseCloudInternal.yml, preserving its existing contents and workflow
behavior.
- Around line 22-30: Remove the unconditional secrets: inherit setting from the
internal build invocation of ./.github/workflows/_build-cloud.yml; rely on the
internal environment’s environment-scoped secrets, since require_sentry is false
and no additional repository- or organization-level secret is required.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5eb0b518-2b97-48fa-b065-8e541501e49c

📥 Commits

Reviewing files that changed from the base of the PR and between 42c9244 and 002b174.

📒 Files selected for processing (3)
  • .github/workflows/_build-cloud.yml
  • .github/workflows/release-cloud-internal.yml
  • CHANGELOG.md

@@ -0,0 +1,30 @@
name: Release Sourcebot (Cloud - Internal Demo)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Rename the workflow file to camelCase.

Rename .github/workflows/release-cloud-internal.yml to .github/workflows/releaseCloudInternal.yml before merge. The current filename violates the repository file naming rule.

As per coding guidelines, files must use camelCase names starting with a lowercase letter.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml at line 1, Rename the workflow
file from release-cloud-internal.yml to releaseCloudInternal.yml, preserving its
existing contents and workflow behavior.

Source: Coding guidelines

Comment on lines +22 to +30
uses: ./.github/workflows/_build-cloud.yml
with:
environment: internal
git_ref: ${{ inputs.git_ref || 'main' }}
require_sentry: false
docker_tags: |
type=raw,value=main
type=sha,format=long
secrets: inherit

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
# Verify that the reusable workflow has no non-Sentry secret dependency.
rg -n -C 3 'secrets\.' .github/workflows/_build-cloud.yml

Repository: sourcebot-dev/sourcebot

Length of output: 1451


🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
printf'%s\n''--- reusable workflow ---'
cat -n .github/workflows/_build-cloud.yml | sed -n '1,180p'printf'%s\n''--- internal caller ---'
cat -n .github/workflows/release-cloud-internal.yml | sed -n '1,100p'printf'%s\n''--- callers and secret declarations ---'
rg -n -C 5 'uses: .*_build-cloud\.yml|require_sentry:|secrets:|workflow_call:|SENTRY_AUTH_TOKEN' .github/workflows

Repository: sourcebot-dev/sourcebot

Length of output: 24669


🌐 Web query:

GitHub Actions reusable workflows secrets inherit environment secrets called workflow job environment workflow_call

💡 Result:

In GitHub Actions, environment secrets in reusable workflows are accessed by defining an environment at the job level within the called (reusable) workflow, while also ensuring the caller workflow provides the necessary secret context via secrets: inherit [1][2]. While official documentation notes that environment secrets cannot be passed directly from a caller workflow using the environment keyword in on.workflow_call [1][3], users have identified that simply defining environment in the reusable workflow is often insufficient for secret resolution [4][5]. The use of secrets: inherit in the caller workflow's job configuration is effectively required to ensure that environment-scoped secrets are correctly resolved and available within the reusable workflow [4][5][2]. Key implementation details include: 1. Reusable Workflow Configuration: The reusable workflow must define the environment at the job level (e.g., environment: ${{ inputs.env_name }}) [6][2]. You may need to pass the environment name as an input to the reusable workflow to keep it dynamic [6][2]. 2. Caller Workflow Configuration: The caller workflow must use secrets: inherit to grant the reusable workflow access to the caller's secret context, which includes environment-specific secrets once the environment is properly scoped [1][4][2]. If secrets: inherit is not used, environment-scoped secrets often resolve to an empty string instead of throwing an error [4][5]. Using secrets: inherit allows the reusable workflow to access the environment secrets associated with the environment defined in its job [2].

Citations:


🌐 Web query:

site:docs.github.com actions reusable workflow jobs environment secrets inherit workflow_call environment secrets

💡 Result:

When calling a reusable workflow in GitHub Actions, you can use the secrets: inherit keyword in your calling workflow to implicitly pass all secrets from the caller to the called workflow [1][2]. However, there are critical limitations regarding environment secrets and how they interact with reusable workflows [1][3]. Key points regarding environment secrets and reusable workflows: 1. Environment secrets cannot be passed from a caller workflow to a reusable workflow [1][3]. This is because the on.workflow_call trigger does not support the environment keyword [1][3]. 2. If your reusable workflow needs to access environment secrets, it must define the environment keyword at the job level within the reusable workflow itself [1][3]. 3. When you define an environment at the job level in a reusable workflow, the job will use the secrets associated with that specified environment, not any secrets passed from the caller workflow [1][2]. 4. The secrets: inherit keyword allows the called workflow to access all secrets available to the caller (such as repository or organization-level secrets) without needing to explicitly map them in the on.workflow_call configuration [1][3]. In summary, because environment cannot be passed through workflow_call, you cannot dynamically inject environment-specific secrets from a caller into a reusable workflow via inherit or mapping. The reusable workflow must explicitly declare the environment it requires to access secrets bound to that environment [1][3].

Citations:


🌐 Web query:

site:docs.github.com "Environment secrets cannot be passed from the caller workflow"

💡 Result:

In GitHub Actions, environment secrets cannot be passed from a caller workflow to a reusable workflow because the on.workflow_call trigger does not support the environment keyword [1][2]. When a reusable workflow is configured to use an environment at the job level, it will automatically use the environment secrets defined for that environment within its own repository, rather than any secrets passed from the caller workflow [1][3]. To use secrets in a reusable workflow, you must explicitly pass them using the secrets keyword in the caller workflow [2][4], or use secrets: inherit to pass all secrets from the caller to the reusable workflow [1][2]. However, these methods apply to repository or organization-level secrets, not environment-specific secrets, which are strictly scoped to the job's execution context and the environment they are associated with [1][5].

Citations:


Remove unconditional secret inheritance for the internal build.

The internal job environment supplies its environment-scoped secrets independently of secrets: inherit. With require_sentry: false, the workflow does not require SENTRY_AUTH_TOKEN. Remove secrets: inherit unless another repository- or organization-level secret is required.

🧰 Tools
🪛 zizmor (1.29.0)

[warning] 22-22: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow

(secrets-inherit)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml around lines 22 - 30, Remove
the unconditional secrets: inherit setting from the internal build invocation of
./.github/workflows/_build-cloud.yml; rely on the internal environment’s
environment-scoped secrets, since require_sentry is false and no additional
repository- or organization-level secret is required.

Source: Linters/SAST tools

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 002b174. Configure here.

Comment thread.github/workflows/release-cloud-internal.yml Outdated
@msukkari
msukkari merged commit 9250432 into mainAug 11, 2026
12 checks passed
@msukkari
msukkari deleted the codex/internal-demo branch August 11, 2026 19:30
@github-actionsgithub-actionsBot mentioned this pull request Aug 11, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@msukkari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add internal cloud image release workflow - #1566

Merged
msukkari merged 3 commits into
mainfrom
codex/internal-demo
Aug 11, 2026
Merged

Add internal cloud image release workflow#1566
msukkari merged 3 commits into
mainfrom
codex/internal-demo

Conversation

@msukkari

@msukkarimsukkari commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a manually triggered internal cloud image build targeting the isolated internal ECR repository
  • make Sentry wiring explicitly optional for non-production builds while preserving the production default and validation

Verification

  • actionlint .github/workflows/_build-cloud.yml .github/workflows/release-cloud-internal.yml

Note

Cursor Bugbot is generating a summary for commit 1b9f596. Configure here.

Summary by CodeRabbit

  • New Features

    • Added a manually triggered cloud release workflow for isolated internal deployments.
    • Cloud image builds can now run without Sentry configuration when Sentry is disabled.
    • Release builds are tagged with both the current commit and the main branch.
  • Documentation

    • Added an Unreleased changelog entry documenting the new internal cloud release process.

@coderabbitai

coderabbitaiBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 48e9d587-510b-4e14-a4e5-cc184e7af9ac

📥 Commits

Reviewing files that changed from the base of the PR and between 002b174 and b4f3264.

📒 Files selected for processing (1)
  • .github/workflows/releaseCloudInternal.yml

Walkthrough

The reusable cloud build workflow now supports optional Sentry enforcement. A new manually triggered workflow invokes it for internal cloud releases with Sentry disabled and main/SHA Docker tags. The changelog documents the workflow.

Changes

Cloud release workflows

Layer / File(s)Summary
Conditional Sentry build behavior
.github/workflows/_build-cloud.yml
Adds the require_sentry input. AWS configuration remains required. Sentry validation, Docker secret passing, and release reporting now depend on that input.
Manual internal release wiring
.github/workflows/releaseCloudInternal.yml, CHANGELOG.md
Adds a manual internal release workflow with scoped permissions, concurrency settings, reusable cloud-build wiring, disabled Sentry, and main/SHA tags. Documents the workflow in the changelog.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
participant Operator
participant InternalRelease as releaseCloudInternal.yml
participant CloudBuild as _build-cloud.yml
participant Docker
Operator->>InternalRelease: Dispatch internal release
InternalRelease->>CloudBuild: Invoke build with Sentry disabled
CloudBuild->>Docker: Build image with main and SHA tags
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly and concisely describes the added internal cloud image release workflow, which is the primary change.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/internal-demo

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/release-cloud-internal.yml:
- Line 1: Rename the workflow file from release-cloud-internal.yml to
releaseCloudInternal.yml, preserving its existing contents and workflow
behavior.
- Around line 22-30: Remove the unconditional secrets: inherit setting from the
internal build invocation of ./.github/workflows/_build-cloud.yml; rely on the
internal environment’s environment-scoped secrets, since require_sentry is false
and no additional repository- or organization-level secret is required.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5eb0b518-2b97-48fa-b065-8e541501e49c

📥 Commits

Reviewing files that changed from the base of the PR and between 42c9244 and 002b174.

📒 Files selected for processing (3)
  • .github/workflows/_build-cloud.yml
  • .github/workflows/release-cloud-internal.yml
  • CHANGELOG.md

@@ -0,0 +1,30 @@
name: Release Sourcebot (Cloud - Internal Demo)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Rename the workflow file to camelCase.

Rename .github/workflows/release-cloud-internal.yml to .github/workflows/releaseCloudInternal.yml before merge. The current filename violates the repository file naming rule.

As per coding guidelines, files must use camelCase names starting with a lowercase letter.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml at line 1, Rename the workflow
file from release-cloud-internal.yml to releaseCloudInternal.yml, preserving its
existing contents and workflow behavior.

Source: Coding guidelines

Comment on lines +22 to +30
uses: ./.github/workflows/_build-cloud.yml
with:
environment: internal
git_ref: ${{ inputs.git_ref || 'main' }}
require_sentry: false
docker_tags: |
type=raw,value=main
type=sha,format=long
secrets: inherit

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
# Verify that the reusable workflow has no non-Sentry secret dependency.
rg -n -C 3 'secrets\.' .github/workflows/_build-cloud.yml

Repository: sourcebot-dev/sourcebot

Length of output: 1451


🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
printf'%s\n''--- reusable workflow ---'
cat -n .github/workflows/_build-cloud.yml | sed -n '1,180p'printf'%s\n''--- internal caller ---'
cat -n .github/workflows/release-cloud-internal.yml | sed -n '1,100p'printf'%s\n''--- callers and secret declarations ---'
rg -n -C 5 'uses: .*_build-cloud\.yml|require_sentry:|secrets:|workflow_call:|SENTRY_AUTH_TOKEN' .github/workflows

Repository: sourcebot-dev/sourcebot

Length of output: 24669


🌐 Web query:

GitHub Actions reusable workflows secrets inherit environment secrets called workflow job environment workflow_call

💡 Result:

In GitHub Actions, environment secrets in reusable workflows are accessed by defining an environment at the job level within the called (reusable) workflow, while also ensuring the caller workflow provides the necessary secret context via secrets: inherit [1][2]. While official documentation notes that environment secrets cannot be passed directly from a caller workflow using the environment keyword in on.workflow_call [1][3], users have identified that simply defining environment in the reusable workflow is often insufficient for secret resolution [4][5]. The use of secrets: inherit in the caller workflow's job configuration is effectively required to ensure that environment-scoped secrets are correctly resolved and available within the reusable workflow [4][5][2]. Key implementation details include: 1. Reusable Workflow Configuration: The reusable workflow must define the environment at the job level (e.g., environment: ${{ inputs.env_name }}) [6][2]. You may need to pass the environment name as an input to the reusable workflow to keep it dynamic [6][2]. 2. Caller Workflow Configuration: The caller workflow must use secrets: inherit to grant the reusable workflow access to the caller's secret context, which includes environment-specific secrets once the environment is properly scoped [1][4][2]. If secrets: inherit is not used, environment-scoped secrets often resolve to an empty string instead of throwing an error [4][5]. Using secrets: inherit allows the reusable workflow to access the environment secrets associated with the environment defined in its job [2].

Citations:


🌐 Web query:

site:docs.github.com actions reusable workflow jobs environment secrets inherit workflow_call environment secrets

💡 Result:

When calling a reusable workflow in GitHub Actions, you can use the secrets: inherit keyword in your calling workflow to implicitly pass all secrets from the caller to the called workflow [1][2]. However, there are critical limitations regarding environment secrets and how they interact with reusable workflows [1][3]. Key points regarding environment secrets and reusable workflows: 1. Environment secrets cannot be passed from a caller workflow to a reusable workflow [1][3]. This is because the on.workflow_call trigger does not support the environment keyword [1][3]. 2. If your reusable workflow needs to access environment secrets, it must define the environment keyword at the job level within the reusable workflow itself [1][3]. 3. When you define an environment at the job level in a reusable workflow, the job will use the secrets associated with that specified environment, not any secrets passed from the caller workflow [1][2]. 4. The secrets: inherit keyword allows the called workflow to access all secrets available to the caller (such as repository or organization-level secrets) without needing to explicitly map them in the on.workflow_call configuration [1][3]. In summary, because environment cannot be passed through workflow_call, you cannot dynamically inject environment-specific secrets from a caller into a reusable workflow via inherit or mapping. The reusable workflow must explicitly declare the environment it requires to access secrets bound to that environment [1][3].

Citations:


🌐 Web query:

site:docs.github.com "Environment secrets cannot be passed from the caller workflow"

💡 Result:

In GitHub Actions, environment secrets cannot be passed from a caller workflow to a reusable workflow because the on.workflow_call trigger does not support the environment keyword [1][2]. When a reusable workflow is configured to use an environment at the job level, it will automatically use the environment secrets defined for that environment within its own repository, rather than any secrets passed from the caller workflow [1][3]. To use secrets in a reusable workflow, you must explicitly pass them using the secrets keyword in the caller workflow [2][4], or use secrets: inherit to pass all secrets from the caller to the reusable workflow [1][2]. However, these methods apply to repository or organization-level secrets, not environment-specific secrets, which are strictly scoped to the job's execution context and the environment they are associated with [1][5].

Citations:


Remove unconditional secret inheritance for the internal build.

The internal job environment supplies its environment-scoped secrets independently of secrets: inherit. With require_sentry: false, the workflow does not require SENTRY_AUTH_TOKEN. Remove secrets: inherit unless another repository- or organization-level secret is required.

🧰 Tools
🪛 zizmor (1.29.0)

[warning] 22-22: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow

(secrets-inherit)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml around lines 22 - 30, Remove
the unconditional secrets: inherit setting from the internal build invocation of
./.github/workflows/_build-cloud.yml; rely on the internal environment’s
environment-scoped secrets, since require_sentry is false and no additional
repository- or organization-level secret is required.

Source: Linters/SAST tools

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 002b174. Configure here.

Comment thread.github/workflows/release-cloud-internal.yml Outdated
@msukkari
msukkari merged commit 9250432 into mainAug 11, 2026
12 checks passed
@msukkari
msukkari deleted the codex/internal-demo branch August 11, 2026 19:30
@github-actionsgithub-actionsBot mentioned this pull request Aug 11, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@msukkari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add internal cloud image release workflow - #1566

Merged
msukkari merged 3 commits into
mainfrom
codex/internal-demo
Aug 11, 2026
Merged

Add internal cloud image release workflow#1566
msukkari merged 3 commits into
mainfrom
codex/internal-demo

Conversation

@msukkari

@msukkarimsukkari commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a manually triggered internal cloud image build targeting the isolated internal ECR repository
  • make Sentry wiring explicitly optional for non-production builds while preserving the production default and validation

Verification

  • actionlint .github/workflows/_build-cloud.yml .github/workflows/release-cloud-internal.yml

Note

Cursor Bugbot is generating a summary for commit 1b9f596. Configure here.

Summary by CodeRabbit

  • New Features

    • Added a manually triggered cloud release workflow for isolated internal deployments.
    • Cloud image builds can now run without Sentry configuration when Sentry is disabled.
    • Release builds are tagged with both the current commit and the main branch.
  • Documentation

    • Added an Unreleased changelog entry documenting the new internal cloud release process.

@coderabbitai

coderabbitaiBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 48e9d587-510b-4e14-a4e5-cc184e7af9ac

📥 Commits

Reviewing files that changed from the base of the PR and between 002b174 and b4f3264.

📒 Files selected for processing (1)
  • .github/workflows/releaseCloudInternal.yml

Walkthrough

The reusable cloud build workflow now supports optional Sentry enforcement. A new manually triggered workflow invokes it for internal cloud releases with Sentry disabled and main/SHA Docker tags. The changelog documents the workflow.

Changes

Cloud release workflows

Layer / File(s)Summary
Conditional Sentry build behavior
.github/workflows/_build-cloud.yml
Adds the require_sentry input. AWS configuration remains required. Sentry validation, Docker secret passing, and release reporting now depend on that input.
Manual internal release wiring
.github/workflows/releaseCloudInternal.yml, CHANGELOG.md
Adds a manual internal release workflow with scoped permissions, concurrency settings, reusable cloud-build wiring, disabled Sentry, and main/SHA tags. Documents the workflow in the changelog.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
participant Operator
participant InternalRelease as releaseCloudInternal.yml
participant CloudBuild as _build-cloud.yml
participant Docker
Operator->>InternalRelease: Dispatch internal release
InternalRelease->>CloudBuild: Invoke build with Sentry disabled
CloudBuild->>Docker: Build image with main and SHA tags
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly and concisely describes the added internal cloud image release workflow, which is the primary change.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/internal-demo

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/release-cloud-internal.yml:
- Line 1: Rename the workflow file from release-cloud-internal.yml to
releaseCloudInternal.yml, preserving its existing contents and workflow
behavior.
- Around line 22-30: Remove the unconditional secrets: inherit setting from the
internal build invocation of ./.github/workflows/_build-cloud.yml; rely on the
internal environment’s environment-scoped secrets, since require_sentry is false
and no additional repository- or organization-level secret is required.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5eb0b518-2b97-48fa-b065-8e541501e49c

📥 Commits

Reviewing files that changed from the base of the PR and between 42c9244 and 002b174.

📒 Files selected for processing (3)
  • .github/workflows/_build-cloud.yml
  • .github/workflows/release-cloud-internal.yml
  • CHANGELOG.md

@@ -0,0 +1,30 @@
name: Release Sourcebot (Cloud - Internal Demo)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Rename the workflow file to camelCase.

Rename .github/workflows/release-cloud-internal.yml to .github/workflows/releaseCloudInternal.yml before merge. The current filename violates the repository file naming rule.

As per coding guidelines, files must use camelCase names starting with a lowercase letter.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml at line 1, Rename the workflow
file from release-cloud-internal.yml to releaseCloudInternal.yml, preserving its
existing contents and workflow behavior.

Source: Coding guidelines

Comment on lines +22 to +30
uses: ./.github/workflows/_build-cloud.yml
with:
environment: internal
git_ref: ${{ inputs.git_ref || 'main' }}
require_sentry: false
docker_tags: |
type=raw,value=main
type=sha,format=long
secrets: inherit

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
# Verify that the reusable workflow has no non-Sentry secret dependency.
rg -n -C 3 'secrets\.' .github/workflows/_build-cloud.yml

Repository: sourcebot-dev/sourcebot

Length of output: 1451


🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
printf'%s\n''--- reusable workflow ---'
cat -n .github/workflows/_build-cloud.yml | sed -n '1,180p'printf'%s\n''--- internal caller ---'
cat -n .github/workflows/release-cloud-internal.yml | sed -n '1,100p'printf'%s\n''--- callers and secret declarations ---'
rg -n -C 5 'uses: .*_build-cloud\.yml|require_sentry:|secrets:|workflow_call:|SENTRY_AUTH_TOKEN' .github/workflows

Repository: sourcebot-dev/sourcebot

Length of output: 24669


🌐 Web query:

GitHub Actions reusable workflows secrets inherit environment secrets called workflow job environment workflow_call

💡 Result:

In GitHub Actions, environment secrets in reusable workflows are accessed by defining an environment at the job level within the called (reusable) workflow, while also ensuring the caller workflow provides the necessary secret context via secrets: inherit [1][2]. While official documentation notes that environment secrets cannot be passed directly from a caller workflow using the environment keyword in on.workflow_call [1][3], users have identified that simply defining environment in the reusable workflow is often insufficient for secret resolution [4][5]. The use of secrets: inherit in the caller workflow's job configuration is effectively required to ensure that environment-scoped secrets are correctly resolved and available within the reusable workflow [4][5][2]. Key implementation details include: 1. Reusable Workflow Configuration: The reusable workflow must define the environment at the job level (e.g., environment: ${{ inputs.env_name }}) [6][2]. You may need to pass the environment name as an input to the reusable workflow to keep it dynamic [6][2]. 2. Caller Workflow Configuration: The caller workflow must use secrets: inherit to grant the reusable workflow access to the caller's secret context, which includes environment-specific secrets once the environment is properly scoped [1][4][2]. If secrets: inherit is not used, environment-scoped secrets often resolve to an empty string instead of throwing an error [4][5]. Using secrets: inherit allows the reusable workflow to access the environment secrets associated with the environment defined in its job [2].

Citations:


🌐 Web query:

site:docs.github.com actions reusable workflow jobs environment secrets inherit workflow_call environment secrets

💡 Result:

When calling a reusable workflow in GitHub Actions, you can use the secrets: inherit keyword in your calling workflow to implicitly pass all secrets from the caller to the called workflow [1][2]. However, there are critical limitations regarding environment secrets and how they interact with reusable workflows [1][3]. Key points regarding environment secrets and reusable workflows: 1. Environment secrets cannot be passed from a caller workflow to a reusable workflow [1][3]. This is because the on.workflow_call trigger does not support the environment keyword [1][3]. 2. If your reusable workflow needs to access environment secrets, it must define the environment keyword at the job level within the reusable workflow itself [1][3]. 3. When you define an environment at the job level in a reusable workflow, the job will use the secrets associated with that specified environment, not any secrets passed from the caller workflow [1][2]. 4. The secrets: inherit keyword allows the called workflow to access all secrets available to the caller (such as repository or organization-level secrets) without needing to explicitly map them in the on.workflow_call configuration [1][3]. In summary, because environment cannot be passed through workflow_call, you cannot dynamically inject environment-specific secrets from a caller into a reusable workflow via inherit or mapping. The reusable workflow must explicitly declare the environment it requires to access secrets bound to that environment [1][3].

Citations:


🌐 Web query:

site:docs.github.com "Environment secrets cannot be passed from the caller workflow"

💡 Result:

In GitHub Actions, environment secrets cannot be passed from a caller workflow to a reusable workflow because the on.workflow_call trigger does not support the environment keyword [1][2]. When a reusable workflow is configured to use an environment at the job level, it will automatically use the environment secrets defined for that environment within its own repository, rather than any secrets passed from the caller workflow [1][3]. To use secrets in a reusable workflow, you must explicitly pass them using the secrets keyword in the caller workflow [2][4], or use secrets: inherit to pass all secrets from the caller to the reusable workflow [1][2]. However, these methods apply to repository or organization-level secrets, not environment-specific secrets, which are strictly scoped to the job's execution context and the environment they are associated with [1][5].

Citations:


Remove unconditional secret inheritance for the internal build.

The internal job environment supplies its environment-scoped secrets independently of secrets: inherit. With require_sentry: false, the workflow does not require SENTRY_AUTH_TOKEN. Remove secrets: inherit unless another repository- or organization-level secret is required.

🧰 Tools
🪛 zizmor (1.29.0)

[warning] 22-22: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow

(secrets-inherit)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml around lines 22 - 30, Remove
the unconditional secrets: inherit setting from the internal build invocation of
./.github/workflows/_build-cloud.yml; rely on the internal environment’s
environment-scoped secrets, since require_sentry is false and no additional
repository- or organization-level secret is required.

Source: Linters/SAST tools

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 002b174. Configure here.

Comment thread.github/workflows/release-cloud-internal.yml Outdated
@msukkari
msukkari merged commit 9250432 into mainAug 11, 2026
12 checks passed
@msukkari
msukkari deleted the codex/internal-demo branch August 11, 2026 19:30
@github-actionsgithub-actionsBot mentioned this pull request Aug 11, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@msukkari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add internal cloud image release workflow - #1566

Merged
msukkari merged 3 commits into
mainfrom
codex/internal-demo
Aug 11, 2026
Merged

Add internal cloud image release workflow#1566
msukkari merged 3 commits into
mainfrom
codex/internal-demo

Conversation

@msukkari

@msukkarimsukkari commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a manually triggered internal cloud image build targeting the isolated internal ECR repository
  • make Sentry wiring explicitly optional for non-production builds while preserving the production default and validation

Verification

  • actionlint .github/workflows/_build-cloud.yml .github/workflows/release-cloud-internal.yml

Note

Cursor Bugbot is generating a summary for commit 1b9f596. Configure here.

Summary by CodeRabbit

  • New Features

    • Added a manually triggered cloud release workflow for isolated internal deployments.
    • Cloud image builds can now run without Sentry configuration when Sentry is disabled.
    • Release builds are tagged with both the current commit and the main branch.
  • Documentation

    • Added an Unreleased changelog entry documenting the new internal cloud release process.

@coderabbitai

coderabbitaiBot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 48e9d587-510b-4e14-a4e5-cc184e7af9ac

📥 Commits

Reviewing files that changed from the base of the PR and between 002b174 and b4f3264.

📒 Files selected for processing (1)
  • .github/workflows/releaseCloudInternal.yml

Walkthrough

The reusable cloud build workflow now supports optional Sentry enforcement. A new manually triggered workflow invokes it for internal cloud releases with Sentry disabled and main/SHA Docker tags. The changelog documents the workflow.

Changes

Cloud release workflows

Layer / File(s)Summary
Conditional Sentry build behavior
.github/workflows/_build-cloud.yml
Adds the require_sentry input. AWS configuration remains required. Sentry validation, Docker secret passing, and release reporting now depend on that input.
Manual internal release wiring
.github/workflows/releaseCloudInternal.yml, CHANGELOG.md
Adds a manual internal release workflow with scoped permissions, concurrency settings, reusable cloud-build wiring, disabled Sentry, and main/SHA tags. Documents the workflow in the changelog.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
participant Operator
participant InternalRelease as releaseCloudInternal.yml
participant CloudBuild as _build-cloud.yml
participant Docker
Operator->>InternalRelease: Dispatch internal release
InternalRelease->>CloudBuild: Invoke build with Sentry disabled
CloudBuild->>Docker: Build image with main and SHA tags
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly and concisely describes the added internal cloud image release workflow, which is the primary change.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/internal-demo

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/release-cloud-internal.yml:
- Line 1: Rename the workflow file from release-cloud-internal.yml to
releaseCloudInternal.yml, preserving its existing contents and workflow
behavior.
- Around line 22-30: Remove the unconditional secrets: inherit setting from the
internal build invocation of ./.github/workflows/_build-cloud.yml; rely on the
internal environment’s environment-scoped secrets, since require_sentry is false
and no additional repository- or organization-level secret is required.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5eb0b518-2b97-48fa-b065-8e541501e49c

📥 Commits

Reviewing files that changed from the base of the PR and between 42c9244 and 002b174.

📒 Files selected for processing (3)
  • .github/workflows/_build-cloud.yml
  • .github/workflows/release-cloud-internal.yml
  • CHANGELOG.md

@@ -0,0 +1,30 @@
name: Release Sourcebot (Cloud - Internal Demo)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Rename the workflow file to camelCase.

Rename .github/workflows/release-cloud-internal.yml to .github/workflows/releaseCloudInternal.yml before merge. The current filename violates the repository file naming rule.

As per coding guidelines, files must use camelCase names starting with a lowercase letter.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml at line 1, Rename the workflow
file from release-cloud-internal.yml to releaseCloudInternal.yml, preserving its
existing contents and workflow behavior.

Source: Coding guidelines

Comment on lines +22 to +30
uses: ./.github/workflows/_build-cloud.yml
with:
environment: internal
git_ref: ${{ inputs.git_ref || 'main' }}
require_sentry: false
docker_tags: |
type=raw,value=main
type=sha,format=long
secrets: inherit

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
# Verify that the reusable workflow has no non-Sentry secret dependency.
rg -n -C 3 'secrets\.' .github/workflows/_build-cloud.yml

Repository: sourcebot-dev/sourcebot

Length of output: 1451


🏁 Script executed:

#!/usr/bin/env bashset -euo pipefail
printf'%s\n''--- reusable workflow ---'
cat -n .github/workflows/_build-cloud.yml | sed -n '1,180p'printf'%s\n''--- internal caller ---'
cat -n .github/workflows/release-cloud-internal.yml | sed -n '1,100p'printf'%s\n''--- callers and secret declarations ---'
rg -n -C 5 'uses: .*_build-cloud\.yml|require_sentry:|secrets:|workflow_call:|SENTRY_AUTH_TOKEN' .github/workflows

Repository: sourcebot-dev/sourcebot

Length of output: 24669


🌐 Web query:

GitHub Actions reusable workflows secrets inherit environment secrets called workflow job environment workflow_call

💡 Result:

In GitHub Actions, environment secrets in reusable workflows are accessed by defining an environment at the job level within the called (reusable) workflow, while also ensuring the caller workflow provides the necessary secret context via secrets: inherit [1][2]. While official documentation notes that environment secrets cannot be passed directly from a caller workflow using the environment keyword in on.workflow_call [1][3], users have identified that simply defining environment in the reusable workflow is often insufficient for secret resolution [4][5]. The use of secrets: inherit in the caller workflow's job configuration is effectively required to ensure that environment-scoped secrets are correctly resolved and available within the reusable workflow [4][5][2]. Key implementation details include: 1. Reusable Workflow Configuration: The reusable workflow must define the environment at the job level (e.g., environment: ${{ inputs.env_name }}) [6][2]. You may need to pass the environment name as an input to the reusable workflow to keep it dynamic [6][2]. 2. Caller Workflow Configuration: The caller workflow must use secrets: inherit to grant the reusable workflow access to the caller's secret context, which includes environment-specific secrets once the environment is properly scoped [1][4][2]. If secrets: inherit is not used, environment-scoped secrets often resolve to an empty string instead of throwing an error [4][5]. Using secrets: inherit allows the reusable workflow to access the environment secrets associated with the environment defined in its job [2].

Citations:


🌐 Web query:

site:docs.github.com actions reusable workflow jobs environment secrets inherit workflow_call environment secrets

💡 Result:

When calling a reusable workflow in GitHub Actions, you can use the secrets: inherit keyword in your calling workflow to implicitly pass all secrets from the caller to the called workflow [1][2]. However, there are critical limitations regarding environment secrets and how they interact with reusable workflows [1][3]. Key points regarding environment secrets and reusable workflows: 1. Environment secrets cannot be passed from a caller workflow to a reusable workflow [1][3]. This is because the on.workflow_call trigger does not support the environment keyword [1][3]. 2. If your reusable workflow needs to access environment secrets, it must define the environment keyword at the job level within the reusable workflow itself [1][3]. 3. When you define an environment at the job level in a reusable workflow, the job will use the secrets associated with that specified environment, not any secrets passed from the caller workflow [1][2]. 4. The secrets: inherit keyword allows the called workflow to access all secrets available to the caller (such as repository or organization-level secrets) without needing to explicitly map them in the on.workflow_call configuration [1][3]. In summary, because environment cannot be passed through workflow_call, you cannot dynamically inject environment-specific secrets from a caller into a reusable workflow via inherit or mapping. The reusable workflow must explicitly declare the environment it requires to access secrets bound to that environment [1][3].

Citations:


🌐 Web query:

site:docs.github.com "Environment secrets cannot be passed from the caller workflow"

💡 Result:

In GitHub Actions, environment secrets cannot be passed from a caller workflow to a reusable workflow because the on.workflow_call trigger does not support the environment keyword [1][2]. When a reusable workflow is configured to use an environment at the job level, it will automatically use the environment secrets defined for that environment within its own repository, rather than any secrets passed from the caller workflow [1][3]. To use secrets in a reusable workflow, you must explicitly pass them using the secrets keyword in the caller workflow [2][4], or use secrets: inherit to pass all secrets from the caller to the reusable workflow [1][2]. However, these methods apply to repository or organization-level secrets, not environment-specific secrets, which are strictly scoped to the job's execution context and the environment they are associated with [1][5].

Citations:


Remove unconditional secret inheritance for the internal build.

The internal job environment supplies its environment-scoped secrets independently of secrets: inherit. With require_sentry: false, the workflow does not require SENTRY_AUTH_TOKEN. Remove secrets: inherit unless another repository- or organization-level secret is required.

🧰 Tools
🪛 zizmor (1.29.0)

[warning] 22-22: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow

(secrets-inherit)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-cloud-internal.yml around lines 22 - 30, Remove
the unconditional secrets: inherit setting from the internal build invocation of
./.github/workflows/_build-cloud.yml; rely on the internal environment’s
environment-scoped secrets, since require_sentry is false and no additional
repository- or organization-level secret is required.

Source: Linters/SAST tools

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 002b174. Configure here.

Comment thread.github/workflows/release-cloud-internal.yml Outdated
@msukkari
msukkari merged commit 9250432 into mainAug 11, 2026
12 checks passed
@msukkari
msukkari deleted the codex/internal-demo branch August 11, 2026 19:30
@github-actionsgithub-actionsBot mentioned this pull request Aug 11, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@msukkari