-
Notifications
You must be signed in to change notification settings - Fork 341
[copilot] Compiler: Upload GITHUB_AW_OUTPUT as workflow artifact "aw_output.txt" #126
Copy link
Copy link
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Summary
Update the compiler so that the generated agentic job includes an additional step to upload the GITHUB_AW_OUTPUT file as a workflow artifact named "aw_output.txt".
Motivation
Currently, the agentic output file (GITHUB_AW_OUTPUT) is created and populated during workflow execution, and its contents are set as a workflow output. However, the file itself is not persisted as an artifact, making it harder to debug agentic runs or retrieve the raw output payload for post-processing.
Persisting this file as an artifact will make it easier to:
- Download and inspect the agent's raw output for debugging.
- Enable offline analysis or replay of agentic outputs.
- Provide reproducibility for integration tests or end-to-end evaluations.
Implementation Details
- Update the compiler logic in
pkg/workflow/compiler.go, specifically withingenerateMainJobSteps, so that after the output collection step, an additional workflow step is generated to upload the${{ env.GITHUB_AW_OUTPUT }}file as an artifact namedaw_output.txt. - The upload step should use
actions/upload-artifact@v4. - The step should be robust to the file being absent (e.g., use
if: always()and handle missing file withif-no-files-found: warn). - Ensure this upload happens after the output file is finalized but before the job completes.
Relevant Code
- pkg/workflow/compiler.go:
generateMainJobSteps(main step generation)generateOutputFileSetup(creates the output file)generateOutputCollectionStep(reads and sets the output)
// Example snippet to add:
yaml.WriteString(" - name: Upload agentic output file\n")
yaml.WriteString(" if: always()\n")
yaml.WriteString(" uses: actions/upload-artifact@v4\n")
yaml.WriteString(" with:\n")
yaml.WriteString(" name: aw_output.txt\n")
yaml.WriteString(" path: ${{ env.GITHUB_AW_OUTPUT }}\n")
yaml.WriteString(" if-no-files-found: warn\n")Acceptance Criteria
- All generated agentic jobs upload the GITHUB_AW_OUTPUT file as an artifact named "aw_output.txt".
- The workflow does not fail if the output file is missing.
- Tests in
pkg/workflow/agentic_output_test.goare updated (or new tests added) to verify this artifact upload step is present in the generated lock file.
References
- generateMainJobSteps implementation
- generateOutputFileSetup
- generateOutputCollectionStep
- agentic_output_test.go
Follow repo instructions and always run make agent-finish before pushing or committing changes.
Example relevant code context
File: pkg/workflow/compiler.go
// generateMainJobSteps generates the steps section for the main job
func (c *Compiler) generateMainJobSteps(yaml *strings.Builder, data *WorkflowData) {
// ...
// Existing steps: setup output, engine execution, output collection, etc.
// Add after output collection step:
yaml.WriteString(" - name: Upload agentic output file\n")
yaml.WriteString(" if: always()\n")
yaml.WriteString(" uses: actions/upload-artifact@v4\n")
yaml.WriteString(" with:\n")
yaml.WriteString(" name: aw_output.txt\n")
yaml.WriteString(" path: ${{ env.GITHUB_AW_OUTPUT }}\n")
yaml.WriteString(" if-no-files-found: warn\n")
// ...
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Type
Fields
Give feedbackNo fields configured for issues without a type.