Embed this tool on your site
About this tool
GitHub Actions Workflow Generator on UtilityKit writes a starter workflow YAML for three common setups. Node CI runs on push and pull_request to your branch, sets up Node with npm caching, then runs npm ci and npm test --if-present. Python CI does the same with setup-python, pip install -r requirements.txt and pytest -q. Static Deploy publishes the repository root to GitHub Pages on push, with a pages permissions block, a pages concurrency group and separate build and deploy jobs. Set the branch name and, for the CI templates, the Node or Python version; the YAML updates as you type. Actions are referenced by major version tags such as actions/checkout@v4. Copy the result into .github/workflows/ in your repository and extend it from there — for example, add a matrix, a schedule trigger or extra jobs by hand.
Why use it
Valid YAML Structure: Indentation and keys come out correctly, so the first push does not fail on a YAML syntax error.
Version-Tagged Actions: Steps use major version tags such as actions/checkout@v4, actions/setup-node@v4 and actions/setup-python@v5.
Push and Pull-Request Checks: Both CI templates run on pushes to your branch and on pull requests targeting it.
Dependency Caching for Node: The Node template turns on setup-node's built-in npm cache to speed up npm ci.
GitHub Pages Deploy Ready: The Static Deploy template includes the pages and id-token permissions, a concurrency group and the configure-pages, upload-pages-artifact and deploy-pages steps.
No Account Needed: The YAML is generated in your browser; no GitHub login is required.
How to use
- Choose a Template: Node CI, Python CI or Static Deploy.
- Enter the Branch the workflow should run on (main by default).
- For Node CI or Python CI, set the Node Version (default 20) or Python Version (default 3.12).
- Review the Workflow YAML, which updates as you type.
- Click Copy and save the YAML as .github/workflows/<name>.yml, then push it. Reset returns to the Node CI defaults.
When it helps
- When setting up CI for a new Node.js or Python repository and you want a test workflow without reading the entire GitHub Actions documentation.
- When you want pull requests to your main branch to run tests automatically before merging.
- When publishing a static site that lives in the repository root to GitHub Pages.
- When migrating a project from another CI service and need a minimal GitHub Actions file to start from.
- When teaching a team how a GitHub Actions workflow is structured with a short, readable example.
Examples
InputTemplate: Node CI, Branch: main, Node Version: 20
Expected result · Scroll for morename: Node CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: npm
- run: npm ci
- run: npm test --if-present
InputTemplate: Python CI, Branch: main, Python Version: 3.12
Expected result · Scroll for morename: Python CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: python -m pip install --upgrade pip
- run: pip install -r requirements.txt
- run: pytest -q
03Static Deploy to GitHub Pages
InputTemplate: Static Deploy, Branch: main
Expected result · Scroll for morename: Deploy Static Site
on:
push:
branches: [main]
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with:
path: .
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
Tips
- Use `workflow_dispatch` as a second trigger alongside `push` so you can re-run the workflow manually from the GitHub UI without pushing a dummy commit — invaluable for debugging flaky tests.
- Cache your dependency install step with `actions/cache` or the built-in cache option in `actions/setup-node`. A warm cache turns a 90-second `npm ci` into a 5-second restore.
- Set `continue-on-error: true` on linting steps in PRs so lint failures are visible but do not block the more important test results from completing.
- Use environment protection rules in GitHub repository settings to gate deploy jobs behind a manual approval step — this prevents accidental production deploys on every merge.
- Prefix test-and-build workflow names with an emoji status (e.g. `🧪 CI`) to make the checks panel easier to scan at a glance in pull-request status summaries.
Frequently Asked Questions
Where do I put the generated workflow file?⌄
Create the directory `.github/workflows/` in your repository root if it does not exist, then save the file with a descriptive name such as `ci.yml` or `deploy.yml`. GitHub automatically detects and runs workflows in this directory.
Should I pin action versions with SHA hashes or version tags?⌄
GitHub recommends pinning third-party actions to a full commit SHA because tags can be moved. The generator uses readable major tags like @v4; replace them with SHAs if your security policy requires it.
Which templates include a permissions block?⌄
Only Static Deploy, which needs contents: read, pages: write and id-token: write to publish to GitHub Pages. The Node CI and Python CI templates use the repository's default GITHUB_TOKEN permissions; add permissions: contents: read at the top if you want to restrict them.
How do I reference repository secrets in the workflow?⌄
Use ${{ secrets.YOUR_SECRET_NAME }} anywhere in the YAML after adding the secret under Settings → Secrets and variables → Actions. None of the templates reference secrets, so add them yourself when a step needs credentials.
What is a concurrency group and when should I use it?⌄
A concurrency group allows only one run per group at a time; with cancel-in-progress: true a new run cancels the older one. The Static Deploy template uses group: pages so overlapping deploys do not race. Add a concurrency block to the CI templates by hand if you want the same behaviour.
Can I add multiple jobs with dependencies between them?⌄
Yes, by editing the output. Use needs: on a job to make it wait for another. The Static Deploy template already does this: its deploy job has needs: build.
Does the generator support matrix builds?⌄
No. Each CI template runs one runtime version on ubuntu-latest. To test several versions, add strategy: matrix: node-version: [18, 20, 22] to the job and reference ${{ matrix.node-version }} in the setup step.
Will the generated workflow work on private repositories?⌄
Yes, with the same considerations as any Actions workflow on a private repository. Private repositories on GitHub Free have a monthly Actions minutes budget, so keep workflows lean.
Glossary
- Workflow
- A configurable automated process defined in a YAML file under `.github/workflows/`. A workflow contains one or more jobs triggered by repository events.
- Job
- A set of steps that run on the same runner in a workflow. Jobs run in parallel by default; use `needs:` to sequence them.
- Runner
- The virtual machine or container that executes a job. GitHub provides hosted runners (ubuntu-latest, windows-latest, macos-latest) or you can register your own self-hosted runners.
- GITHUB_TOKEN
- An automatically generated short-lived token provided to every workflow run, scoped to the repository. Used to push packages, comment on PRs, and create releases without storing a personal access token.
- Concurrency group
- A named slot that limits simultaneous workflow runs. When a new run starts with the same group key, the in-progress run is cancelled, preventing redundant CI work.
- Matrix strategy
- A workflow feature that fans out a single job across multiple parameter combinations (e.g. OS × runtime version) and runs them in parallel, providing broad compatibility coverage efficiently.
A LITTLE HELP. A LOT DONE.
Good tools.
Great flow.
Your shortcut to the everyday. Create, convert, calculate,
and get back to what you love.
✳
✳
✓ Free to use✓ No sign-up✓ 500+ possibilities