Skip to content

Conversation

aaronsteers
Copy link
Contributor

@aaronsteers aaronsteers commented Aug 17, 2025

feat: Migrate workflows to use resolve-vars-action@v0

Summary

This PR migrates PyAirbyte CI workflows to use the new aaronsteers/resolve-vars-action@v0 action, eliminating manual variable resolution patterns and reducing code duplication across slash command workflows.

Key Changes:

  • fix-pr-command.yml & poetry-lock-command.yml: Replace manual gh api calls + jq parsing with resolve-vars-action
  • test-pr-command.yml: Replace manual GitHub Actions run URL construction and remove get-pr action dependency
  • welcome-message.yml: Replace direct GitHub context fork detection with resolve-vars-action output
  • Standardized variable names: All workflows now use consistent pr-source-*, pr-target-*, and resolved-* prefixes

The resolve-vars-action automatically detects pr and comment-id inputs from workflow_dispatch events and provides standardized outputs, eliminating ~20 lines of repetitive variable extraction code per workflow.

Review & Testing Checklist for Human

⚠️ Medium Risk - Critical CI Infrastructure Changes

  • Variable name mappings are correct: Verify steps.pr-info.outputs.reposteps.vars.outputs.pr-source-repo-name-full and steps.pr-info.outputs.branchsteps.vars.outputs.pr-source-git-branch work correctly
  • Fork detection still works: Test that welcome messages display correctly for both internal PRs and fork PRs (should use different templates)
  • Slash command workflows function: Test /fix-pr, /test-pr, and /poetry-lock commands on a test PR to ensure they work end-to-end
  • Generated URLs are valid: Check that steps.vars.outputs.run-url produces correct GitHub Actions run URLs in comment links
  • Workflow dispatch auto-detection: Verify that pr and comment-id inputs are automatically detected and resolved by the action

Recommended Test Plan:

  1. Create a test PR from a fork
  2. Run each slash command (/fix-pr, /test-pr, /poetry-lock)
  3. Verify comment links work and point to correct workflow runs
  4. Check that welcome message uses the community template for fork PRs
  5. Test workflow dispatch manually with pr and comment-id inputs

Diagram

%%{ init : { "theme" : "default" }}%%
graph TB
    subgraph "PyAirbyte Workflows"
        A["fix-pr-command.yml"]:::major-edit
        B["poetry-lock-command.yml"]:::major-edit  
        C["test-pr-command.yml"]:::major-edit
        D["welcome-message.yml"]:::major-edit
        E["slash_command_dispatch.yml"]:::context
    end
    
    F["aaronsteers/resolve-vars-action@v0"]:::context
    
    A -->|"replaces gh api calls"| F
    B -->|"replaces gh api calls"| F
    C -->|"replaces manual URL construction"| F
    D -->|"replaces fork detection"| F
    E -->|"triggers workflows with pr/comment-id"| A
    E --> B
    E --> C
    
    subgraph Legend
        L1["Major Edit"]:::major-edit
        L2["Minor Edit"]:::minor-edit
        L3["Context/No Edit"]:::context
    end
    
    classDef major-edit fill:#90EE90
    classDef minor-edit fill:#87CEEB  
    classDef context fill:#FFFFFF
Loading

Notes

  • The resolve-vars-action@v0 was just created and merged in a previous session, so this is its first real-world usage
  • All existing functionality should be preserved - this is purely a refactoring to reduce code duplication
  • The action automatically handles workflow_dispatch input detection, so no changes to slash_command_dispatch.yml were needed
  • Fork detection logic changed from github.event.pull_request.head.repo.fork == true to steps.vars.outputs.pr-source-is-fork == 'true' (note the string comparison)

Session Info:

Summary by CodeRabbit

  • Refactor

    • Centralized workflow variable resolution across PR-related workflows, replacing ad-hoc PR metadata steps with a unified resolver for consistency.
  • Chores

    • CI actions (pushes, comments, links, and template selection) now use standardized resolved outputs.
    • Streamlined no-op/success messaging and improved fork detection for welcome messaging.
    • Enabled logging of resolved variables for better CI traceability.

Important

Auto-merge enabled.

This PR is set to merge automatically when all requirements are met.

Note

Auto-merge may have been disabled. Please check the PR status to confirm.

- Replace manual gh api calls for PR info extraction
- Replace hardcoded GitHub Actions run URL construction
- Simplify fork detection logic in welcome message
- Consolidate variable resolution across command workflows
- Use standardized variable names from resolve-vars-action

Updated workflows:
- fix-pr-command.yml: Replace manual PR info extraction with resolve-vars-action
- poetry-lock-command.yml: Replace manual PR info extraction with resolve-vars-action
- test-pr-command.yml: Replace manual URL construction and simplify PR info handling
- welcome-message.yml: Replace fork detection logic with resolve-vars-action

Co-Authored-By: AJ Steers <[email protected]>
@Copilot Copilot AI review requested due to automatic review settings August 17, 2025 21:08
Copy link
Contributor

Original prompt from AJ Steers
Received message in Slack channel #dev-ci:

@Devin - Create a PR to the aaronsteers/resolve-vars-action repo. We want to automatically (without requiring custom user input) resolve all/most of the variables we normally have to coalesce from different trigger types like pull request, pull request target, workflow dispatch, etc.. E.g. pr-number, issue-number, head-ref, base-ref, head-repo, base-repo, etc. Plan is to migrate our workflows (eventually) to use this action and make everything cleaner with less code.

Copy link
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

Copy link

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

Testing This PyAirbyte Version

You can test this version of PyAirbyte using the following:

# Run PyAirbyte CLI from this branch:
uvx --from 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1755464645-resolve-vars-action-migration' pyairbyte --help

# Install PyAirbyte from this branch for development:
pip install 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1755464645-resolve-vars-action-migration'

Helpful Resources

PR Slash Commands

Airbyte Maintainers can execute the following slash commands on your PR:

  • /fix-pr - Fixes most formatting and linting issues
  • /poetry-lock - Updates poetry.lock file
  • /test-pr - Runs tests with the updated PyAirbyte

Community Support

Questions? Join the #pyairbyte channel in our Slack workspace.

📝 Edit this welcome message.

Copy link
Contributor

@Copilot Copilot AI left a comment

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 migrates PyAirbyte CI workflows to use a new resolve-vars-action@v0 for standardized variable resolution, eliminating manual GitHub API calls and reducing code duplication across slash command workflows.

  • Replaces manual gh api calls and jq parsing with the resolve-vars-action in multiple workflows
  • Standardizes variable naming conventions with consistent pr-source-*, pr-target-*, and resolved-* prefixes
  • Removes dependency on cloudposse-github-actions/get-pr action in favor of the new resolve-vars-action

Reviewed Changes

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

File Description
.github/workflows/welcome-message.yml Replaces direct GitHub context fork detection with resolve-vars-action outputs
.github/workflows/test-pr-command.yml Removes get-pr action dependency and manual URL construction, using resolve-vars-action instead
.github/workflows/poetry-lock-command.yml Replaces manual GitHub API calls for PR info with resolve-vars-action
.github/workflows/fix-pr-command.yml Replaces manual GitHub API calls for PR info with resolve-vars-action

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

The action was renamed from resolve-vars-action to resolve-ci-vars-action
and republished under the new name.

Co-Authored-By: AJ Steers <[email protected]>
Copy link
Contributor

coderabbitai bot commented Aug 17, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

📝 Walkthrough

Walkthrough

Replaces ad-hoc PR metadata retrieval across multiple GitHub Actions workflows with a centralized Resolve workflow variables step (aaronsteers/resolve-ci-vars-action@v0). Removes prior Get PR info steps, exposes standardized outputs (pr-source-*, pr-number, pr-title, run-url), and rewires downstream pushes, comments, and template inputs to use those outputs.

Changes

Cohort / File(s) Summary of changes
Migrate to resolve-ci-vars action
.github/workflows/fix-pr-command.yml, .../poetry-lock-command.yml, .../test-pr-command.yml, .../welcome-message.yml
Add "Resolve workflow variables" step (id: vars) using aaronsteers/resolve-ci-vars-action@v0 with log_outputs: true; remove prior PR-info steps; centralize PR/run metadata via steps.vars.outputs (pr-source-*, pr-number, pr-title, run-url).
Push/remote and comment URL rewiring
.github/workflows/fix-pr-command.yml, .../poetry-lock-command.yml
Update git remote and push targets to https://github.com/${{ steps.vars.outputs.pr-source-repo-name-full }}.git and HEAD:${{ steps.vars.outputs.pr-source-git-branch }}; update comment bodies/links to use steps.vars.outputs.run-url.
Poetry lock gating and comment logic
.github/workflows/poetry-lock-command.yml
Simplify no-op gating to depend only on steps.git-diff.outputs.changes; remove secondary diff dependency; adjust success-comment gating and body to use centralized steps.vars.outputs.
Expose job outputs in test workflow
.github/workflows/test-pr-command.yml
start-workflow job outputs rewritten to source from steps.vars.outputs: source-repo, source-branch, commit-sha, pr-number, pr-title, job-run-url; removed cloudposse get-pr step and manual run-url construction.
Welcome message template inputs
.github/workflows/welcome-message.yml
Render template inputs and fork detection now use steps.vars.outputs (e.g., pr-source-is-fork, pr-source-repo-name-full, pr-source-git-branch) instead of github.event.pull_request.head.*.

Sequence Diagram(s)

sequenceDiagram
  participant GH as GitHub
  participant WF as Workflow Job
  participant VARS as resolve-ci-vars Action
  participant GIT as Git Remote
  participant PR as Pull Request / Comment

  GH->>WF: PR-triggered workflow start
  WF->>VARS: Run Resolve workflow variables (aaronsteers/resolve-ci-vars-action)
  VARS-->>WF: Outputs (pr-source-*, pr-number, pr-title, run-url)
  WF->>GIT: Add remote & push to source repo/branch (using pr-source-*)
  WF->>PR: Post comment with run-url and status
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between a01bca4 and 0cb204c.

📒 Files selected for processing (1)
  • .github/workflows/poetry-lock-command.yml (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/poetry-lock-command.yml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: Pytest (All, Python 3.11, Ubuntu)
  • GitHub Check: Pytest (All, Python 3.11, Windows)
  • GitHub Check: Pytest (All, Python 3.10, Ubuntu)
  • GitHub Check: Pytest (All, Python 3.10, Windows)
  • GitHub Check: Pytest (Fast)
  • GitHub Check: Pytest (No Creds)
✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch devin/1755464645-resolve-vars-action-migration

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

‼️ IMPORTANT
Auto-reply has been disabled for this repository in the CodeRabbit settings. The CodeRabbit bot will not respond to your replies unless it is explicitly tagged.

  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

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

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai or @coderabbitai title anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Remove log_outputs: true from resolve-ci-vars-action usage
as it's not needed for the action to function correctly.

Co-Authored-By: AJ Steers <[email protected]>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
.github/workflows/welcome-message.yml (1)

41-41: Coerce fork flag to a boolean for robust template selection

Action outputs are strings; comparing to 'true' works but is brittle. Casting with fromJSON avoids surprises (e.g., accidental capitalization or truthy strings). Would you switch to boolean coercion for clarity and reliability, wdyt?

-          template: ${{ steps.vars.outputs.pr-source-is-fork == 'true' && '.github/pr-welcome-community.md' || '.github/pr-welcome-internal.md' }}
+          template: ${{ fromJSON(steps.vars.outputs.pr-source-is-fork) && '.github/pr-welcome-community.md' || '.github/pr-welcome-internal.md' }}
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 07e843e and 978dd78.

📒 Files selected for processing (4)
  • .github/workflows/fix-pr-command.yml (2 hunks)
  • .github/workflows/poetry-lock-command.yml (3 hunks)
  • .github/workflows/test-pr-command.yml (2 hunks)
  • .github/workflows/welcome-message.yml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: Pytest (All, Python 3.11, Windows)
  • GitHub Check: Pytest (All, Python 3.10, Windows)
  • GitHub Check: Pytest (All, Python 3.11, Ubuntu)
  • GitHub Check: Pytest (All, Python 3.10, Ubuntu)
  • GitHub Check: Pytest (Fast)
  • GitHub Check: Pytest (No Creds)
🔇 Additional comments (7)
.github/workflows/welcome-message.yml (2)

32-35: Good call centralizing PR metadata via resolve-ci-vars-action

Adopting the resolver step keeps this workflow lean and consistent with the others. LGTM, and the chosen outputs line up with the intended consumers, wdyt?


43-44: Template vars look accurate with new resolver outputs

repo_name and branch_name now correctly reference pr-source-* outputs. Nice alignment with the new naming scheme, wdyt?

.github/workflows/fix-pr-command.yml (1)

50-55: Nice: resolver step simplifies the workflow and exposes run-url

Switching from ad-hoc gh/jq to resolve-ci-vars-action is a solid cleanup. Logging outputs here is helpful while we’re validating the first rollout, wdyt?

.github/workflows/test-pr-command.yml (2)

32-37: Resolver adoption looks correct and trims boilerplate

Good swap to resolve-ci-vars-action with log_outputs enabled for traceability during rollout. This keeps the run URL and PR metadata standardized, wdyt?


51-56: Outputs mapping aligns with downstream usage

source-repo/branch/SHA/number/title/run-url point at the correct resolver outputs and match how they’re consumed later for checks and comments. Looks good, wdyt?

.github/workflows/poetry-lock-command.yml (2)

58-62: Consistent adoption of resolve-ci-vars-action

Nice alignment with the other workflows and helpful to log outputs while validating. This removes the custom URL building and PR parsing nicely, wdyt?


126-126: No-op gating on a single diff looks correct for this workflow

There isn’t a second “unsafe” diff pass here, so relying solely on git-diff is the right simplification and resolves the earlier multi-diff gating concern, wdyt?

Copy link

PyTest Results (Fast Tests Only, No Creds)

301 tests  ±0   301 ✅ ±0   4m 14s ⏱️ -4s
  1 suites ±0     0 💤 ±0 
  1 files   ±0     0 ❌ ±0 

Results for commit a01bca4. ± Comparison against base commit 07e843e.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🔭 Outside diff range comments (2)
.github/workflows/test-pr-command.yml (1)

88-93: Checkout of fork PRs may fail without specifying the source repository.

actions/checkout@v4 with only ref: defaults to the base repo (airbytehq/PyAirbyte). For forked PRs, that SHA won't exist in the base repo. Could we point checkout to the PR source repo/branch using the resolved vars, wdyt?

-    - name: Checkout PR
-      uses: actions/checkout@v4
-      with:
-        token: ${{ secrets.GITHUB_TOKEN }}
-        ref: ${{ needs.start-workflow.outputs.commit-sha }}
+    - name: Checkout PR
+      uses: actions/checkout@v4
+      with:
+        # Public forks generally don't need auth to fetch, but keeping token reduces rate-limit issues.
+        token: ${{ secrets.GITHUB_TOKEN }}
+        repository: ${{ needs.start-workflow.outputs.source-repo }}
+        ref: ${{ needs.start-workflow.outputs.source-branch }}
.github/workflows/poetry-lock-command.yml (1)

92-95: Use GITHUB_OUTPUT instead of deprecated ::set-output.

::set-output is deprecated. Shall we switch to writing to $GITHUB_OUTPUT to avoid breakage and warnings, wdyt?

-      run: |
-        git diff --quiet && echo "No changes to commit" || echo "::set-output name=changes::true"
+      run: |
+        if git diff --quiet; then
+          echo "No changes to commit"
+        else
+          echo "changes=true" >> "$GITHUB_OUTPUT"
+        fi
♻️ Duplicate comments (1)
.github/workflows/poetry-lock-command.yml (1)

107-112: Push to contributor fork is unauthenticated and non-idempotent.

As-is, git push to https://github.com/.git will fail on forks without auth, and remote add may fail on reruns. Could we make it idempotent and embed a token (you already use GH_PAT_APPROVINGTON_OCTAVIA earlier), wdyt?

-    - name: Push changes to '(${{ steps.vars.outputs.pr-source-repo-name-full }})'
+    - name: Push changes to '(${{ steps.vars.outputs.pr-source-repo-name-full }})'
       if: steps.git-diff.outputs.changes == 'true'
       run: |
-        git remote add contributor https://github.com/${{ steps.vars.outputs.pr-source-repo-name-full }}.git
-        git push contributor HEAD:${{ steps.vars.outputs.pr-source-git-branch }}
+        git remote remove contributor || true
+        git remote add contributor https://x-access-token:${{ secrets.GH_PAT_APPROVINGTON_OCTAVIA }}@github.com/${{ steps.vars.outputs.pr-source-repo-name-full }}.git
+        git push contributor HEAD:${{ steps.vars.outputs.pr-source-git-branch }}
🧹 Nitpick comments (2)
.github/workflows/test-pr-command.yml (1)

32-35: Adopt consistent action name and consider enabling debug logging (optional).

You're using aaronsteers/resolve-ci-vars-action@v0, while the PR title/summary mentions resolve-vars-action@v0. Could you confirm the intended action name across workflows and standardize for consistency? Also, do you want to enable debug logs (log_outputs: true) here for parity and easier first-run troubleshooting, wdyt?

-    - name: Resolve workflow variables
-      id: vars
-      uses: aaronsteers/resolve-ci-vars-action@v0
+    - name: Resolve workflow variables
+      id: vars
+      uses: aaronsteers/resolve-ci-vars-action@v0
+      with:
+        log_outputs: true
.github/workflows/poetry-lock-command.yml (1)

58-61: Confirm action naming and (optionally) enable debug logs for first rollout.

This uses aaronsteers/resolve-ci-vars-action@v0, while the PR summary mentions resolve-vars-action@v0. Could you standardize the name across workflows to avoid confusion? Also, would you like to enable log_outputs: true for initial observability, then turn it off later, wdyt?

-    - name: Resolve workflow variables
-      id: vars
-      uses: aaronsteers/resolve-ci-vars-action@v0
+    - name: Resolve workflow variables
+      id: vars
+      uses: aaronsteers/resolve-ci-vars-action@v0
+      with:
+        log_outputs: true
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 978dd78 and a01bca4.

📒 Files selected for processing (3)
  • .github/workflows/fix-pr-command.yml (2 hunks)
  • .github/workflows/poetry-lock-command.yml (3 hunks)
  • .github/workflows/test-pr-command.yml (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/fix-pr-command.yml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: Pytest (All, Python 3.10, Windows)
  • GitHub Check: Pytest (All, Python 3.11, Windows)
  • GitHub Check: Pytest (All, Python 3.10, Ubuntu)
  • GitHub Check: Pytest (All, Python 3.11, Ubuntu)
  • GitHub Check: Pytest (Fast)
  • GitHub Check: Pytest (No Creds)
🔇 Additional comments (2)
.github/workflows/test-pr-command.yml (2)

63-71: Normalize OS labels to avoid runner label mismatch.

runs-on composes "${{ matrix.os }}-latest". Using "Ubuntu" and "Windows" will produce "Ubuntu-latest"/"Windows-latest", which may not match runner labels. Shall we lower-case them to ensure "ubuntu-latest"/"windows-latest", wdyt?

-        os: [
-          Ubuntu,
-          Windows,
-        ]
+        os: [
+          ubuntu,
+          windows,
+        ]

49-54: Nice move to standardized outputs.

Switching to pr-source-* and run-url outputs tightens consistency and removes boilerplate. Looks good.

@aaronsteers aaronsteers enabled auto-merge (squash) August 17, 2025 21:29
@aaronsteers aaronsteers disabled auto-merge August 17, 2025 21:30
@aaronsteers aaronsteers merged commit cef893e into main Aug 17, 2025
22 checks passed
@aaronsteers aaronsteers deleted the devin/1755464645-resolve-vars-action-migration branch August 17, 2025 21:30
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.

1 participant