Skip to main content

GitHub Actions Wizard

GitHub Actions Wizard is a simple tool for generating GitHub Actions workflows for common deployment tasks.

Built primarily for my needs, but you're free to use it, if you find it useful.

It goes beyond simple workflow generation by automatically setting up necessary permissions (such as creating AWS IAM Roles and Policies for S3 or Lambda deployments). The intent is to quickly generate the overall workflow boilerplate, and then customize by editing the generated file.

To use it, run the github-actions-wizard CLI tool in your repository's folder, and answer the interactive prompts. The generated workflow file will be saved in your repository's .github/workflows folder. You can customize the file further, as necessary.

Installation

You can install GitHub Actions Wizard via pip:

pip install github-actions-wizard

This will install the command-line tool as github-actions-wizard.

Usage

Run the wizard from the root of your Git repository:

github-actions-wizard

You'll be guided through a series of prompts to select the deployment target, branch, and other details. The tool will then generate the appropriate workflow YAML file and, for AWS deployments, set up the required IAM roles and policies.


Features

  • Easy workflow generation for deployments
  • Automatic AWS permissions setup for S3 and Lambda deployments
  • Supports multiple deployment targets for setting up pipelines like build -> test -> [deploy0, deploy1, ...]
  • Interactive CLI guides you through configuration
  • Edit generated workflows to fine-tune for your project

Why?

While you can certainly write these workflow files yourself, this tool reduces the friction of setting up deployments each time a new GitHub repository is created. The deployment setup is more than just the workflow yaml file (for e.g. AWS targets need IAM Role and Policy creation).

I needed this for myself because I release a lot of projects. The deployment targets vary per project - some copy files to AWS S3, others publish to PyPI, some release on itch.io, others deploy to AWS Lambda, and so on. It's a waste of time to look up and configure CI/CD manually each time I release a new project.


Workflow Templates

  • Python package - build and publish to PyPI
  • npm package - build and publish to npm
  • Static Hugo website - build and deploy to GitHub Pages
  • Static S3 website - build and deploy to AWS S3
  • Static Cloudflare Pages website - build and deploy to Cloudflare Pages
  • AWS Lambda - build and deploy to AWS Lambda
  • itch.io - build and publish to itch.io
  • Pytest CI - run tests with pytest on push and pull request (test-only)
  • Custom workflow

Custom Workflows

Deployment targets:

  • AWS S3 (static site or zip-and-upload)
  • AWS Lambda (function deployment)
  • Publish to PyPI
  • Publish to npm
  • GitHub Pages
  • Cloudflare Pages
  • Publish to itch.io
  • Add build artifacts to GitHub release

Build types:

  • Python wheel (.whl) and tar.gz package
  • Static site with Hugo
  • Dummy build

Examples

1. Deploy to AWS S3

$ github-actions-wizard

Select a workflow template to start with:
1. Python package - build and publish to PyPI
2. npm package - build and publish to npm
3. Static website - build and deploy to GitHub Pages
4. Static website - build and deploy to AWS S3
5. Static website - build and deploy to Cloudflare Pages
6. AWS Lambda - deploy a Python function to AWS Lambda
7. itch.io - build and publish to itch.io
8. Pytest CI - run tests with pytest on push and pull request (test-only)
9. Custom workflow
Enter option number: 4

Select deployment trigger:
1. On branch push
2. On release creation
Enter option number: 1

Enter branch name (will react to pushes on this branch) [default=main]:
Enter GitHub repo [default=cmdr2/carbon]:
Enter AWS S3 path to deploy to (e.g., my-bucket-name/some/path (or path/to/file.zip)): me.cmdr2.org/carbon

Configuring S3 deploy permissions in IAM...

⚠️ **IMPORTANT:** Please ensure that you set the S3_DEPLOY_ROLE environment variable (in your GitHub repository) to <generated-arn>

✅ Workflow update complete. Workflow written: .github/workflows/gha_workflow.yml. Please customize it as necessary.

After this, pushes to the main branch of this repo will automatically upload to AWS S3.

2. Deploy to AWS Lambda

$ github-actions-wizard

Select a workflow template to start with:
1. Python package - build and publish to PyPI
2. npm package - build and publish to npm
3. Static website - build and deploy to GitHub Pages
4. Static website - build and deploy to AWS S3
5. Static website - build and deploy to Cloudflare Pages
6. AWS Lambda - deploy a Python function to AWS Lambda
7. itch.io - build and publish to itch.io
8. Pytest CI - run tests with pytest on push and pull request (test-only)
9. Custom workflow
Enter option number: 6

Select deployment trigger:
1. On branch push
2. On release creation
Enter option number: 1

Enter branch name (will react to pushes on this branch) [default=main]:
Enter GitHub repo [default=cmdr2/blog-agent]:
Enter the AWS Lambda function name to deploy to (e.g., my-function): blog-agent

Configuring Lambda deploy permissions in IAM...

⚠️ **IMPORTANT:** Please ensure that you set the LAMBDA_DEPLOY_ROLE environment variable (in your GitHub repository) to <generated-arn>

✅ Workflow update complete. Workflow written: .github/workflows/gha_workflow.yml. Please customize it as necessary.

After this, pushes to the main branch of this repo will automatically update the AWS Lambda Function.

3. Deploy to PyPI

$ github-actions-wizard

Select a workflow template to start with:
1. Python package - build and publish to PyPI
2. npm package - build and publish to npm
3. Static website - build and deploy to GitHub Pages
4. Static website - build and deploy to AWS S3
5. Static website - build and deploy to Cloudflare Pages
6. AWS Lambda - deploy a Python function to AWS Lambda
7. itch.io - build and publish to itch.io
8. Pytest CI - run tests with pytest on push and pull request (test-only)
9. Custom workflow
Enter option number: 1

Select deployment trigger:
1. On branch push
2. On release creation
Enter option number: 2

⚠️ **IMPORTANT:** Please ensure that you've added GitHub as a trusted publisher in your PyPI account: https://docs.pypi.org/trusted-publishers/
Note: You can use the workflow file name (gha_workflow.yml) while configuring the trusted publisher.

✅ Workflow update complete. Workflow written: .github/workflows/gha_workflow.yml. Please customize it as necessary.

Customization

After generation, you can edit the workflow YAML file in .github/workflows to add project-specific steps or modify the configuration as needed.

FAQ

Please see this page for frequently asked questions.


License

MIT

Metadata

Release files for github-actions-wizard 1.9.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for github-actions-wizard 1.9.2
File Size Uploaded
github_actions_wizard-1.9.2.tar.gz 18.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for github-actions-wizard 1.9.2
File Interpreter ABI Platform
github_actions_wizard-1.9.2-py3-none-any.whl Python 3 none any Details

Total release size: 40.3 kB

Release files / github_actions_wizard-1.9.2.tar.gz

Download URL github_actions_wizard-1.9.2.tar.gz
Size 18.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f4c1aea3269f9fb0a1dcbe28febba36fc535796a8d0e2fb2cbc6715d277dcf18
BLAKE2b-256 checksum
How to use checksums
03a63d83a70aa100e6a3cb10643cdd0453c9890726af014f73ecc3a06ea2ae02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2025.

Transparency log

Release files / github_actions_wizard-1.9.2-py3-none-any.whl

Download URL github_actions_wizard-1.9.2-py3-none-any.whl
Size 21.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7c2c3911975a8fa859418a789cb54f4c68b0504fb12ab7a967c73c552a957414
BLAKE2b-256 checksum
How to use checksums
a06360144c8a0af1b3bb1ae481587f5e6dc66f9c3d14074d7a6a38e0047d366e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.9.2 This release

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page