1. Current Workflow: Placeholder Upload
Your existingreports-s3 job runs after unit-testing and code-coverage, downloads artifacts, merges them, and uses a placeholder echo command:
2. Selecting the S3 Sync Action
2.1 Search GitHub Marketplace
In your repository’s GitHub Marketplace, search for S3 and choose jakejarvis/s3-sync-action:
2.2 Action Inputs
Inspect the action’s README for the inputs:| Variable | Description | Default / Required |
|---|---|---|
| AWS_S3_BUCKET | Target S3 bucket name | Required |
| AWS_ACCESS_KEY_ID | AWS IAM access key ID | Required |
| AWS_SECRET_ACCESS_KEY | AWS IAM secret access key | Required |
| AWS_REGION | AWS region where bucket resides | Optional (us-east-1) |
| SOURCE_DIR | Directory to sync | Optional (.) |
| DEST_DIR | Path in bucket for uploads | Optional (root) |
Using the
--delete flag will remove files in the bucket that are not present in your source directory. Double-check your SOURCE_DIR before enabling deletion.3. Updated Workflow: S3 Sync Step
Replace the placeholder with the S3 Sync action. Here’s the completereports-s3 job:
4. Setting Up AWS S3
4.1 Creating the Bucket
In the AWS S3 console, create a bucket namedsolar-system-reports-bucket (or your preferred name) in the desired region:

5. Storing AWS Credentials as GitHub Secrets
Add your AWS keys under Settings > Secrets and variables > Actions:AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
Storing credentials in GitHub Secrets ensures they remain encrypted and aren’t exposed in your workflow logs.

6. Running the Workflow
Commit and push your changes. Thereports-s3 job will queue after unit-testing and code-coverage complete:

6.1 Merge Step Log
6.2 S3 Sync Step Log

7. Why the Extra “build” Step?
Because jakejarvis/s3-sync-action is a Docker-based custom action, GitHub builds the container at runtime. You’ll see this as an extra “build” step in the logs:
8. Verifying in S3
8.1 Inspect the Commit-SHA Folder
After syncing, refresh your bucket to see a folder named after the commit SHA:
8.2 Check Uploaded Files
Open the folder to confirm your XML reports are present:
9. Next Steps & Alternatives
You can apply the same pattern to other cloud storage solutions like Azure Blob Storage. Always store credentials securely as GitHub Secrets:

Links and References
- jakejarvis/s3-sync-action
- GitHub Actions: Storing encrypted secrets
- AWS S3 Documentation
- Azure Blob Storage Introduction