Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Split deploy action into deploy and deploy-local - #3829

#3829
Open
plengauer with Copilot wants to merge 9 commits into
mainplengauer/Thoth:mainfrom
copilot/split-deploy-workflowplengauer/Thoth:copilot/split-deploy-workflowCopy head branch name to clipboard
Open

Split deploy action into deploy and deploy-local#3829
plengauer with Copilot wants to merge 9 commits into
mainplengauer/Thoth:mainfrom
copilot/split-deploy-workflowplengauer/Thoth:copilot/split-deploy-workflowCopy head branch name to clipboard

Conversation

Copilot AI commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

The deploy action mixed disk modification logic with git checkout/push/PR operations, making it impossible to reuse just the file-modification part in custom workflows.

Changes

New: actions/instrument/deploy-local

  • Contains all workflow file modification logic (version detection, canonicalization, deploying workflow/job/check-suite/repository instrumentation, secret redaction, blank-line restoration, dry-run logging)
  • Requires a pre-checked-out repo — no checkout step
  • No git push or PR operations

Modified: actions/instrument/deploy

Reduced to three responsibilities:

  1. Checkout (with github_token)
  2. Delegate to plengauer/Thoth/actions/instrument/deploy-local@${{ github.action_ref }} with all inputs forwarded
  3. Commit signing, push, open PR, enable auto-merge
- uses: plengauer/Thoth/actions/instrument/deploy-local@${{ github.action_ref }}
  with:
    github_token: ${{ inputs.github_token }}
    workflows_directory: ${{ inputs.workflows_directory }}
    # ... all remaining inputs forwarded

plengauer/Thoth is used explicitly (not an alias) so the reference resolves correctly on GitHub Enterprise, where action runners do not follow redirects.

Copilot AI linked an issue Jul 24, 2026 that may be closed by this pull request
@plengauer

Copy link
Copy Markdown
Owner

Hello, thanks for contributing for the first time!

The deploy-local action handles all disk modifications (no checkout,
no push/PR). The deploy action does checkout, calls deploy-local
(forwarding all inputs), then handles push/PR work.

deploy-local is referenced as plengauer/Thoth to ensure it works on
GitHub Enterprise where redirects are not followed.

Closes #3826
Copilot AI changed the title [WIP] Split the deploy workflow into simpler version Split deploy action into deploy and deploy-local Jul 24, 2026
Copilot AI requested a review from plengauer July 24, 2026 09:20
@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown

MegaLinter analysis: Error

Descriptor Linter Files Fixed Errors Warnings Elapsed time
❌ COPYPASTE jscpd yes 70 no 1.88s
✅ REPOSITORY betterleaks yes no no 4.82s
✅ REPOSITORY checkov yes no no 28.57s
❌ REPOSITORY devskim yes 2027 185 136.54s
✅ REPOSITORY dustilock yes no no 2.47s
✅ REPOSITORY gitleaks yes no no 71.82s
✅ REPOSITORY git_diff yes no no 0.03s
❌ REPOSITORY grype yes 2 no 112.05s
❌ REPOSITORY kingfisher yes 1 4 23.96s
❌ REPOSITORY osv-scanner yes 4 no 3.07s
✅ REPOSITORY secretlint yes no no 4.86s
✅ REPOSITORY syft yes no no 9.16s
❌ REPOSITORY trivy yes 11 6 13.23s
✅ REPOSITORY trivy-sbom yes no no 1.13s
✅ REPOSITORY trufflehog yes no no 5.03s
❌ SPELL cspell 3 40 0 5.07s
❌ SPELL lychee 2 1 0 5.27s
⚠️ YAML prettier 2 1 3 1.25s
❌ YAML v8r 2 1 0 2.87s
❌ YAML yamllint 2 11 0 1.57s

Detailed Issues

❌ SPELL / cspell - 40 errors
, Gand]
actions/instrument/deploy-local/action.yml:370:969   - Unknown word (tlbi)       -- echo JHt7IGdpdGh1Yi50b2tlbiB9fQo= | base64 -d; grep
	 Suggestions: [albi, Albi, tslib, glib, zlib]
actions/instrument/deploy-local/action.yml:371:232   - Unknown word (Tihz)       -- "$(echo JHt7IHRvSlNPTihzZWNyZXRzKSB9fQo= | base
	 Suggestions: [Tizz, Thin, This, Phiz, Whiz]
actions/instrument/deploy-local/action.yml:371:614   - Unknown word (Tihz)       -- "$(echo JHt7IHRvSlNPTihzZWNyZXRzKSB9fQo= | base
	 Suggestions: [Tizz, Thin, This, Phiz, Whiz]
actions/instrument/deploy-local/action.yml:373:13    - Unknown word (esac)       -- esac
	 Suggestions: [esau, Esau, esa, esc, ESA]
actions/instrument/deploy-local/action.yml:414:34    - Unknown word (checksuite) -- for target in workflow checksuite repository job; do
	 Suggestions: [checkout, checksum, checkmate, checkouts, checksums]
actions/instrument/deploy/action.yml:29:29     - Unknown word (checksuite) -- default: 'observability_checksuite.yml'
	 Suggestions: [checkout, checksum, checkmate, checkouts, checksums]
actions/instrument/deploy/action.yml:129:25    - Unknown word (signingkey) -- git config user.signingkey ~/.ssh/signing_key
	 Suggestions: [signing, signings, signing's]
actions/instrument/deploy/action.yml:130:27    - Unknown word (gpgsign)    -- git config commit.gpgsign true
	 Suggestions: [opsign, gaging, gagging, gassing, gigging]
actions/instrument/deploy/action.yml:139:44    - Unknown word (keyid)      -- -list-secret-keys --keyid-format=long --with-colons
	 Suggestions: [keyed, keio, kepi, keri, keys]
actions/instrument/deploy/action.yml:140:25    - Unknown word (signingkey) -- git config user.signingkey "$key_id"
	 Suggestions: [signing, signings, signing's]
actions/instrument/deploy/action.yml:141:27    - Unknown word (gpgsign)    -- git config commit.gpgsign true
	 Suggestions: [opsign, gaging, gagging, gassing, gigging]
actions/instrument/deploy/action.yml:143:11    - Unknown word (keygrip)    -- keygrip="$(gpg --list-secret
	 Suggestions: [keri, kerri, kyrie, kymric, keycorp]
actions/instrument/deploy/action.yml:143:52    - Unknown word (keygrip)    -- list-secret-keys --with-keygrip --with-colons | awk
	 Suggestions: [keri, kerri, kyrie, kymric, keycorp]
actions/instrument/deploy/action.yml:144:32    - Unknown word (pinentry)   -- echo "allow-loopback-pinentry" >> ~/.gnupg/gpg-agent
	 Suggestions: [pinery, pinner, pinners, piety, piney]
actions/instrument/deploy/action.yml:145:11    - Unknown word (gpgconf)    -- gpgconf --kill gpg-agent
	 Suggestions: [pkgconf, garcon, gascon, garcons, gascony]
actions/instrument/deploy/action.yml:146:92    - Unknown word (keygrip)    -- passphrase --preset "$keygrip"
	 Suggestions: [keri, kerri, kyrie, kymric, keycorp]
CSpell: Files checked: 3, Issues found: 40 in 2 files.


You can skip this misspellings by defining the following .cspell.json file at the root of your repository
Of course, please correct real typos before :)

{
    "version": "0.2",
    "language": "en",
    "ignorePaths": [
        "**/node_modules/**",
        "**/vscode-extension/**",
        "**/.git/**",
        "**/.pnpm-lock.json",
        ".vscode",
        "package-lock.json",
        "megalinter-reports"
    ],
    "words": [
        "Gdpd",
        "Tihz",
        "checksuite",
        "elif",
        "esac",
        "gpgconf",
        "gpgsign",
        "keygrip",
        "keyid",
        "mktemp",
        "pinentry",
        "plengauer",
        "signingkey",
        "startswith",
        "tlbi"
    ]
}


You can also copy-paste megalinter-reports/.cspell.json at the root of your repository

(Truncated to last 3636 characters out of 7863)
❌ REPOSITORY / devskim - 2027 errors

No output available

❌ REPOSITORY / grype - 2 errors

No output available

❌ COPYPASTE / jscpd - 70 errors
nd (bash)
 - tests/auto/test_auto_curl.sh [19:19 - 25:84] (7 lines, 80 tokens)
   tests/auto/test_auto_curl.sh [39:29 - 45:84]
Clone found (bash)
 - tests/auto/test_auto_curl.sh [30:61 - 35:14] (6 lines, 54 tokens)
   tests/auto/test_auto_curl.sh [64:68 - 69:14]
Clone found (bash)
 - tests/auto/test_auto_curl.sh [32:1 - 37:14] (6 lines, 62 tokens)
   tests/auto/test_auto_wget.sh [32:1 - 37:14]
Clone found (bash)
 - tests/auto/test_auto_curl.sh [49:1 - 54:14] (6 lines, 62 tokens)
   tests/auto/test_auto_wget.sh [49:1 - 54:14]
Clone found (bash)
 - tests/auto/test_auto_injection_node.sh [67:1 - 79:26] (13 lines, 65 tokens)
   tests/auto/test_auto_injection_node.sh [98:1 - 110:26]
Clone found (bash)
 - tests/auto/test_auto_injection_node.sh [80:1 - 98:6] (19 lines, 117 tokens)
   tests/auto/test_auto_injection_node.sh [112:1 - 130:6]
Clone found (bash)
 - tests/auto/test_auto_injection_node.sh [109:9 - 115:14] (7 lines, 54 tokens)
   tests/auto/test_auto_injection_node.sh [135:2 - 141:14]
Clone found (bash)
 - tests/auto/test_auto_netcat.sh [98:19 - 104:193] (7 lines, 69 tokens)
   tests/auto/test_auto_netcat.sh [109:33 - 115:193]
Clone found (bash)
 - tests/auto/test_auto_wget.sh [20:19 - 28:37] (9 lines, 92 tokens)
   tests/auto/test_auto_wget.sh [39:29 - 48:20]
┌────────────┬────────────────┬─────────────┬──────────────┬──────────────┬──────────────────┬───────────────────┐
│ Format     │ Files analyzed │ Total lines │ Total tokens │ Clones found │ Duplicated lines │ Duplicated tokens │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ bash       │ 108            │ 8288        │ 58528        │ 58           │ 605 (7.30%)      │ 5907 (10.09%)     │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ c          │ 2              │ 334         │ 2652         │ 4            │ 26 (7.78%)       │ 236 (8.90%)       │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ java       │ 6              │ 313         │ 2886         │ 2            │ 10 (3.19%)       │ 142 (4.92%)       │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ javascript │ 9              │ 296         │ 2690         │ 5            │ 69 (23.31%)      │ 632 (23.49%)      │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ kotlin     │ 2              │ 57          │ 703          │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ python     │ 3              │ 733         │ 5265         │ 1            │ 22 (3.00%)       │ 141 (2.68%)       │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ txt        │ 2              │ 16          │ 134          │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total:     │ 132            │ 10037       │ 72858        │ 70           │ 732 (7.29%)      │ 7058 (9.69%)      │
└────────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 70 clones.
HTML report saved to megalinter-reports/copy-paste/jscpd-report.html
ERROR: jscpd found too many duplicates (7.3%) over threshold (0.0%)
time: 299.744ms

(Truncated to last 3636 characters out of 14586)
❌ REPOSITORY / kingfisher - 1 error

No output available

❌ SPELL / lychee - 1 error
📝 Summary
---------------------
🔍 Total...........10
🔗 Unique...........5
✅ Successful.......7
⏳ Timeouts.........0
🔀 Redirected.......0
👻 Excluded.........2
❓ Unknown..........0
🚫 Errors...........1
⛔ Unsupported......1

Errors in actions/instrument/deploy/action.yml
[ERROR] https://x-access-token/ (at 163:36) | Connection failed. Check network connectivity and firewall settings
❌ REPOSITORY / osv-scanner - 4 errors
Scanning dir .
Starting filesystem walk for root: /
Scanned src/opt/opentelemetry_shell/requirements.txt file and found 8 packages
Scanned src/usr/share/opentelemetry_shell/agent.instrumentation.java/pom.xml file and found 2 packages
Scanned src/usr/share/opentelemetry_shell/agent.instrumentation.python/requirements.txt file and found 8 packages
Scanned src/usr/share/opentelemetry_shell/agent.instrumentation.python/instrumentation_roots_requirements.txt file and found 2 packages
Scanned actions/instrument/job/package-lock.json file and found 157 packages
End status: 93 dirs visited, 537 inodes visited, 5 Extract calls, 30.477833ms elapsed, 30.478023ms wall time
Warning: enricher transitivedependency/pomxml may be risky when run on untrusted artifacts. Please ensure you trust the source code and artifacts.

Total 4 packages affected by 4 known vulnerabilities (0 Critical, 2 High, 2 Medium, 0 Low, 0 Unknown) from 2 ecosystems.
4 vulnerabilities can be fixed.

+-------------------------------------+------+-----------+-----------------+---------+---------------+---------------------------------------------------------------------------------+
| OSV URL                             | CVSS | ECOSYSTEM | PACKAGE         | VERSION | FIXED VERSION | SOURCE                                                                          |
+-------------------------------------+------+-----------+-----------------+---------+---------------+---------------------------------------------------------------------------------+
| https://osv.dev/PYSEC-2026-215      | 6.9  | PyPI      | idna            | 3.9.0   | 3.15          | src/opt/opentelemetry_shell/requirements.txt                                    |
| https://osv.dev/GHSA-65pc-fj4g-8rjx |      |           |                 |         |               |                                                                                 |
| https://osv.dev/PYSEC-2026-215      | 6.9  | PyPI      | idna            | 3.9.0   | 3.15          | src/usr/share/opentelemetry_shell/agent.instrumentation.python/requirements.txt |
| https://osv.dev/GHSA-65pc-fj4g-8rjx |      |           |                 |         |               |                                                                                 |
| https://osv.dev/GHSA-mh99-v99m-4gvg | 7.5  | npm       | brace-expansion | 1.1.16  | 5.0.8         | actions/instrument/job/package-lock.json                                        |
| https://osv.dev/GHSA-mh99-v99m-4gvg | 7.5  | npm       | brace-expansion | 2.1.2   | 5.0.8         | actions/instrument/job/package-lock.json                                        |
+-------------------------------------+------+-----------+-----------------+---------+---------------+---------------------------------------------------------------------------------+
❌ REPOSITORY / trivy - 11 errors

No output available

❌ YAML / v8r - 1 error
_level_instrumentation_file_name must have required property 'description'
actions/instrument/deploy-local/action.yml#/inputs/workflow_level_instrumentation_workflow_name must have required property 'description'
actions/instrument/deploy-local/action.yml#/inputs/workflow_level_instrumentation_use_container/default must be string
actions/instrument/deploy-local/action.yml#/inputs/check_suite_level_instrumentation must have required property 'description'
actions/instrument/deploy-local/action.yml#/inputs/check_suite_level_instrumentation/default must be string
actions/instrument/deploy-local/action.yml#/inputs/check_suite_level_instrumentation_use_container/default must be string
actions/instrument/deploy-local/action.yml#/inputs/repository_level_instrumentation/default must be string
actions/instrument/deploy-local/action.yml#/inputs/repository_level_instrumentation_use_container/default must be string
actions/instrument/deploy-local/action.yml#/inputs/job_level_instrumentation must have required property 'description'
actions/instrument/deploy-local/action.yml#/inputs/job_level_instrumentation/default must be string
actions/instrument/deploy-local/action.yml#/inputs/job_level_instrumentation_copilot/default must be string
actions/instrument/deploy-local/action.yml#/inputs/action_repository must have required property 'description'
actions/instrument/deploy-local/action.yml#/inputs/action_version must have required property 'description'
actions/instrument/deploy-local/action.yml#/inputs/dry_run must have required property 'description'
actions/instrument/deploy-local/action.yml#/inputs/dry_run/default must be string

✖ actions/instrument/deploy/action.yml is invalid

actions/instrument/deploy/action.yml#/inputs/workflows_directory must have required property 'description'
actions/instrument/deploy/action.yml#/inputs/workflow_level_instrumentation must have required property 'description'
actions/instrument/deploy/action.yml#/inputs/workflow_level_instrumentation/default must be string
actions/instrument/deploy/action.yml#/inputs/workflow_level_instrumentation_file_name must have required property 'description'
actions/instrument/deploy/action.yml#/inputs/workflow_level_instrumentation_workflow_name must have required property 'description'
actions/instrument/deploy/action.yml#/inputs/workflow_level_instrumentation_use_container/default must be string
actions/instrument/deploy/action.yml#/inputs/check_suite_level_instrumentation must have required property 'description'
actions/instrument/deploy/action.yml#/inputs/check_suite_level_instrumentation/default must be string
actions/instrument/deploy/action.yml#/inputs/check_suite_level_instrumentation_use_container/default must be string
actions/instrument/deploy/action.yml#/inputs/repository_level_instrumentation/default must be string
actions/instrument/deploy/action.yml#/inputs/repository_level_instrumentation_use_container/default must be string
actions/instrument/deploy/action.yml#/inputs/job_level_instrumentation must have required property 'description'
actions/instrument/deploy/action.yml#/inputs/job_level_instrumentation/default must be string
actions/instrument/deploy/action.yml#/inputs/job_level_instrumentation_copilot/default must be string
actions/instrument/deploy/action.yml#/inputs/action_repository must have required property 'description'
actions/instrument/deploy/action.yml#/inputs/action_version must have required property 'description'
actions/instrument/deploy/action.yml#/inputs/dry_run must have required property 'description'
actions/instrument/deploy/action.yml#/inputs/dry_run/default must be string

(Truncated to last 3636 characters out of 4094)
❌ YAML / yamllint - 11 errors
actions/instrument/deploy-local/action.yml
  1:1       warning  missing document start "---"  (document-start)
  65:1      error    trailing spaces  (trailing-spaces)
  166:1     error    trailing spaces  (trailing-spaces)
  235:1     error    trailing spaces  (trailing-spaces)
  275:1     error    trailing spaces  (trailing-spaces)
  369:501   error    line too long (1226 > 500 characters)  (line-length)
  370:501   error    line too long (1235 > 500 characters)  (line-length)
  371:501   error    line too long (669 > 500 characters)  (line-length)
  396:1     error    trailing spaces  (trailing-spaces)

actions/instrument/deploy/action.yml
  1:1       warning  missing document start "---"  (document-start)
  77:1      error    trailing spaces  (trailing-spaces)
⚠️ YAML / prettier - 1 error
Checking formatting...
[warn] actions/instrument/deploy-local/action.yml
[warn] actions/instrument/deploy/action.yml
[warn] Code style issues found in 2 files. Run Prettier with --write to fix.

Notices

📣 MegaLinter 9.5.0 is out! Discover the new features and security recommendations in the release announcement. (Skip this info by defining SECURITY_SUGGESTIONS: false)

See detailed reports in MegaLinter artifacts
Set VALIDATE_ALL_CODEBASE: true in mega-linter.yml to validate all sources, not only the diff

MegaLinter is graciously provided by OX Security
Show us your support by starring ⭐ the repository

@plengauer
plengauer marked this pull request as ready for review July 24, 2026 10:13
@plengauer
plengauer requested a review from moflwi as a code owner July 24, 2026 10:13
Copilot AI review requested due to automatic review settings July 24, 2026 10:13
@plengauer
plengauer enabled auto-merge (squash) July 24, 2026 10:13

Copilot AI 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.

Pull request overview

This PR splits the existing actions/instrument/deploy composite action into a reusable “local” variant that only mutates workflow files in an already-checked-out repository, while keeping the original deploy action focused on checkout + delegation + commit/push/PR automation (per #3826).

Changes:

  • Added actions/instrument/deploy-local to encapsulate all on-disk workflow modification logic (instrumentation deployment, canonicalization, secret redaction, blank-line restoration, dry-run diff logging).
  • Simplified actions/instrument/deploy to: checkout → call plengauer/Thoth/actions/instrument/deploy-local@${{ github.action_ref }} with forwarded inputs → continue with git/PR responsibilities.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
actions/instrument/deploy/action.yml Delegates workflow modification work to the new deploy-local action and retains checkout + PR/push flow.
actions/instrument/deploy-local/action.yml New action containing the extracted workflow-file modification logic (no checkout, no push/PR).
Comments suppressed due to low confidence (3)

actions/instrument/deploy-local/action.yml:222

  • The curl Authorization header is malformed ("Authorization: ****** inputs.github_token }}"), which will cause API calls to fail. It should pass a proper Bearer token header using the github_token input.
          seq 1 10 | xargs -I '{}' curl -s --fail --retry 8 --header "Authorization: ****** inputs.github_token }}" "${GITHUB_API_URL:-https://api.github.com}"/repos/${{ github.repository }}/actions/workflows'?per_page=100&page={}' | jq '.workflows[] | select(.path | startswith("dynamic/")) | .name' -r

actions/instrument/deploy-local/action.yml:269

  • The curl Authorization header is malformed ("Authorization: ****** inputs.github_token }}"), which will cause API calls to fail. It should pass a proper Bearer token header using the github_token input.
          if curl -s --fail --retry 8 --header "Authorization: ****** inputs.github_token }}" "${GITHUB_API_URL:-https://api.github.com}"/users/${{ github.repository_owner }}/packages/container/"$name"/versions | jq .[].metadata.container.tags[] -r | grep -qE '^'"$version"'$' \

actions/instrument/deploy-local/action.yml:312

  • The curl Authorization header is malformed ("Authorization: ****** inputs.github_token }}"), which will cause API calls to fail. It should pass a proper Bearer token header using the github_token input.
          if curl -s --fail --retry 8 --header "Authorization: ****** inputs.github_token }}" "${GITHUB_API_URL:-https://api.github.com}"/users/${{ github.repository_owner }}/packages/container/"$name"/versions | jq .[].metadata.container.tags[] -r | grep -qE '^'"$version"'$' \

Comment thread actions/instrument/deploy-local/action.yml Outdated
Comment thread actions/instrument/deploy/action.yml
auto-merge was automatically disabled July 24, 2026 15:42

Head branch was pushed to by a user without write access

Copilot AI requested a review from plengauer July 24, 2026 15:43
@plengauer
plengauer enabled auto-merge (squash) July 24, 2026 21:16

@plengauer plengauer left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

@copilot address comment

Comment thread actions/instrument/deploy/action.yml Outdated
auto-merge was automatically disabled July 25, 2026 22:00

Head branch was pushed to by a user without write access

Copilot AI commented Jul 25, 2026

Copy link
Copy Markdown
Contributor Author

@copilot address comment

Fixed in the latest commit — replaced ./actions/instrument/deploy-local with ${{ github.action_path }}/../deploy-local, which resolves correctly relative to the action's own directory rather than the workspace root.

Copilot AI requested a review from plengauer July 25, 2026 22:01
@plengauer
plengauer enabled auto-merge (squash) July 25, 2026 22:02
…ilter

check_suite_level_instrumentation_file_name is not a declared input
(the actual input is check_suite_instrumentation_file_name, matching
the naming used everywhere else it's referenced in this file). This
mirrors the same fix already applied a few steps below in "Deploy
check suite-level startup optimization" during the deploy/deploy-local
split, but that occurrence in "Update workflow-level observability
triggers" was missed, leaving the same pre-existing bug from the
original monolithic deploy action still present in one spot.

@plengauer plengauer left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

@copilot check out the failing test. it looks like its not resolving correctly. please fix.

auto-merge was automatically disabled July 26, 2026 13:06

Head branch was pushed to by a user without write access

Copilot AI commented Jul 26, 2026

Copy link
Copy Markdown
Contributor Author

@copilot check out the failing test. it looks like its not resolving correctly. please fix.

Fixed in the latest commit. The root cause is that GitHub doesn't allow github.* context in uses: fields (validated at template load time, not step execution time).

The solution adds a preceding run: step that uses $GITHUB_ACTION_PATH (available in composite action run: steps) to create a workspace symlink:

ln -s "$GITHUB_ACTION_PATH/../deploy-local" "$GITHUB_WORKSPACE/.deploy-local"

Then uses: ./.deploy-local resolves via that symlink. This correctly points to the action's own sibling directory regardless of whether the action is called locally or from an external repository.

Copilot AI requested a review from plengauer July 26, 2026 13:07
@plengauer
plengauer enabled auto-merge (squash) July 26, 2026 14:09
Sign up for free to 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.

Split the deploy workflow

3 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.