fix: skip auth setup for untriggered runs

This commit is contained in:
Mark Wylde
2026-07-04 14:42:57 +01:00
parent ba45e9da7a
commit 6d6d2bd987
3 changed files with 24 additions and 20 deletions

View File

@@ -37,6 +37,10 @@ inputs:
description: "Instructions for Claude. Can be a direct prompt or custom template." description: "Instructions for Claude. Can be a direct prompt or custom template."
required: false required: false
default: "" default: ""
direct_prompt:
description: "Deprecated alias for prompt. Use prompt instead."
required: false
default: ""
settings: settings:
description: "Claude Code settings as JSON string or path to settings JSON file" description: "Claude Code settings as JSON string or path to settings JSON file"
required: false required: false
@@ -145,6 +149,7 @@ runs:
env: env:
MODE: ${{ inputs.mode }} MODE: ${{ inputs.mode }}
PROMPT: ${{ inputs.prompt }} PROMPT: ${{ inputs.prompt }}
DIRECT_PROMPT: ${{ inputs.direct_prompt }}
TRIGGER_PHRASE: ${{ inputs.trigger_phrase }} TRIGGER_PHRASE: ${{ inputs.trigger_phrase }}
ASSIGNEE_TRIGGER: ${{ inputs.assignee_trigger }} ASSIGNEE_TRIGGER: ${{ inputs.assignee_trigger }}
LABEL_TRIGGER: ${{ inputs.label_trigger }} LABEL_TRIGGER: ${{ inputs.label_trigger }}
@@ -288,7 +293,7 @@ runs:
fi fi
- name: Revoke app token - name: Revoke app token
if: always() && inputs.github_token == '' && steps.prepare.outputs.skipped_due_to_workflow_validation_mismatch != 'true' if: always() && inputs.github_token == '' && steps.prepare.outputs.GITHUB_TOKEN != '' && steps.prepare.outputs.skipped_due_to_workflow_validation_mismatch != 'true'
shell: bash shell: bash
run: | run: |
curl -L \ curl -L \

View File

@@ -24,6 +24,23 @@ async function run() {
// Auto-detect mode based on context // Auto-detect mode based on context
const mode = getMode(context); const mode = getMode(context);
// Check trigger conditions before token setup so skipped events do not need
// OIDC or GitHub App authentication.
const containsTrigger = mode.shouldTrigger(context);
// Debug logging
console.log(`Mode: ${mode.name}`);
console.log(`Context prompt: ${context.inputs?.prompt || "NO PROMPT"}`);
console.log(`Trigger result: ${containsTrigger}`);
// Set output for action.yml to check
core.setOutput("contains_trigger", containsTrigger.toString());
if (!containsTrigger) {
console.log("No trigger found, skipping remaining steps");
return;
}
// Setup GitHub token // Setup GitHub token
const githubToken = await setupGitHubToken(); const githubToken = await setupGitHubToken();
const octokit = createOctokit(githubToken); const octokit = createOctokit(githubToken);
@@ -45,24 +62,6 @@ async function run() {
} }
} }
// Check trigger conditions
const containsTrigger = mode.shouldTrigger(context);
// Debug logging
console.log(`Mode: ${mode.name}`);
console.log(`Context prompt: ${context.inputs?.prompt || "NO PROMPT"}`);
console.log(`Trigger result: ${containsTrigger}`);
// Set output for action.yml to check
core.setOutput("contains_trigger", containsTrigger.toString());
if (!containsTrigger) {
console.log("No trigger found, skipping remaining steps");
// Still set github_token output even when skipping
core.setOutput("github_token", githubToken);
return;
}
// Step 5: Use the new modular prepare function // Step 5: Use the new modular prepare function
const result = await prepare({ const result = await prepare({
context, context,

View File

@@ -137,7 +137,7 @@ export function parseGitHubContext(): GitHubContext {
}, },
actor: context.actor, actor: context.actor,
inputs: { inputs: {
prompt: process.env.PROMPT || "", prompt: process.env.PROMPT || process.env.DIRECT_PROMPT || "",
triggerPhrase: process.env.TRIGGER_PHRASE ?? "@claude", triggerPhrase: process.env.TRIGGER_PHRASE ?? "@claude",
assigneeTrigger: process.env.ASSIGNEE_TRIGGER ?? "", assigneeTrigger: process.env.ASSIGNEE_TRIGGER ?? "",
labelTrigger: process.env.LABEL_TRIGGER ?? "", labelTrigger: process.env.LABEL_TRIGGER ?? "",