Developer

GitHub Actions Workflow Generator

Generate starter CI/deploy workflow YAML for common project types.

Loading interactive tool…

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

  1. Choose a Template: Node CI, Python CI or Static Deploy.
  2. Enter the Branch the workflow should run on (main by default).
  3. For Node CI or Python CI, set the Node Version (default 20) or Python Version (default 3.12).
  4. Review the Workflow YAML, which updates as you type.
  5. 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

Node CI (defaults)

Input
Template: Node CI, Branch: main, Node Version: 20
Expected result · Scroll for more
name: 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

Python CI

Input
Template: Python CI, Branch: main, Python Version: 3.12
Expected result · Scroll for more
name: 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

Static Deploy to GitHub Pages

Input
Template: Static Deploy, Branch: main
Expected result · Scroll for more
name: 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.

Explore the category

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