Workflow Automation
Automate complex App Store Connect workflows with multi-step sequences
Define and execute multi-step automation workflows that combine multiple CLI commands and shell scripts.
Overview
Workflows allow you to:
Chain multiple asc commands together
Run shell scripts and commands
Pass data between steps
Handle errors with hooks
Execute conditional steps
Compose reusable sub-workflows
Workflows intentionally execute arbitrary shell commands. Only run workflow files you trust, especially when using --file. Treat .asc/workflow.json like code: review it before running.
Quick Start
Create a Workflow File
Create .asc/workflow.json in your project:
Run a Workflow
List Available Workflows
Validate Workflow File
Workflow Structure
Basic Workflow
Environment Variables
Global Environment (env at root):
Available to all workflows
Merged with system environment
Workflow Environment (env in workflow):
Scoped to specific workflow
Overrides global variables
Runtime Parameters :
Passed via command line: KEY:VALUE
Override workflow environment
Precedence (highest to lowest):
Runtime parameters
Workflow env
Global env
System environment
Hooks
before_all : Runs before any workflow
after_all : Runs after successful workflow
error : Runs when workflow fails
Step Types
Command Steps
Execute shell commands:
Conditional Steps
Run only if a variable is set:
Skipped if BUILD_ID is empty or unset.
Sub-Workflow Steps
Call another workflow:
The called workflow receives EXTRA_VAR in addition to its own environment.
Complete Workflow Examples
Beta Distribution Workflow
Run with:
App Store Submission Workflow
Run with:
Complete Release Workflow
Run with:
CI/CD Integration
GitHub Actions
GitLab CI
Advanced Features
Dry Run Mode
Preview workflow execution without running commands:
Shows:
Steps that would be executed
Environment variables
Command interpolation
Workflow order
Private Workflows
Mark workflows as private (only callable from other workflows):
List including private workflows:
Custom Workflow File
Use a different workflow file:
Pretty JSON Output
Best Practices
Use descriptive names : Name workflows and steps clearly
Add descriptions : Document what each workflow does
Validate before running : Always run asc workflow validate after editing
Use environment variables : Parameterize workflows for reusability
Handle errors : Define error hooks to clean up on failure
Test with dry-run : Use --dry-run to preview execution
Keep workflows focused : Break complex workflows into composable sub-workflows
Version control workflows : Store .asc/workflow.json in git
Document required parameters : Note required KEY:VALUE parameters in descriptions
Use private workflows : Extract common logic into private sub-workflows
Security Considerations
Only run workflows from trusted sources
Review workflow files before execution
Avoid hardcoding secrets—use environment variables
In CI/CD, use encrypted secrets for credentials
Don’t run untrusted workflows on PRs with access to secrets
Safe Practices
Troubleshooting
Validation Errors
Problem : asc workflow validate reports errors.
Solution : Check for:
Circular workflow dependencies
Missing workflow definitions
Invalid JSON syntax
Unknown step types
”Workflow not found”
Problem : Workflow name doesn’t exist in file.
Solution : List available workflows:
Variable Not Interpolated
Problem : $VARIABLE appears literally in output.
Solution : Ensure the variable is:
Defined in env (global or workflow)
Passed as runtime parameter: VARIABLE:value
Available in system environment
Step Fails Silently
Problem : Step executes but produces no output.
Solution :
Check step output is written to stderr (workflow stdout is JSON-only)
Enable verbose mode (if available)
Add explicit echo statements
Workflow Hangs
Problem : Workflow stops and doesn’t complete.
Solution :
Check for interactive commands (not supported)
Verify commands don’t wait for user input
Add timeout to long-running commands