Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

CI/CD Pipeline Generator & Converter

One pipeline in six CI formats, with conversion, schema checks and a minutes estimate.

Free preview, no sign-upIncluded in your pass Pro tool Pro pass: ₹179 / $5.99 for 30 days On this device: nothing is sent
+3 +1 more details No uploadWorks offline once opened Developer

Free preview: the first lines of each generated or converted file (up to 20), every check count with the first problems, and the first rows of the minutes estimate. Locked until you unlock it: download and copy.

Pro pass ₹179 for 30 days or ₹79 for 1 week, one‑time. Pro pass $5.99 for 30 days or $2.99 for 1 week, one‑time. How to unlock

Try before you buy.

  • Free preview: the first lines of each generated or converted file (up to 20), every check count with the first problems, and the first rows of the minutes estimate.
  • Locked until you unlock it: download and copy.
  • Unlock: Pro pass, ₹179 for 30 days or ₹79 for 1 week, a one-time payment that never renews. Unlock: Pro pass, $5.99 for 30 days or $2.99 for 1 week, a one-time payment that never renews.

Ways to unlock shows how to get the full result.

See passes (opens in a new tab)

Printing this result is locked in the free preview.

Project

Names the workflow and its file: CI becomes ci.yml.

Comma separated. Build and deploy use the last one.

Run the tests on

Windows and macOS runners exist on GitHub Actions and Azure Pipelines; the other formats run Linux containers.

For a monorepo, such as packages/web.

Only the SourceHut manifest lists it.

Jobs
Jobs
Triggers
When the pipeline runs

Comma separated; * and ** match like git globs (release/**). Empty: every branch.

Container image

Without a tag; the files tag it by branch, version tag and commit.

For example linux/amd64, linux/arm64.

Deploy

Comma separated. The values go into each service’s secret settings, never into the file; the setup notes say where.

GitHub-compatible host

Gitea and Forgejo run the same workflow syntax from their own folder; for Forgejo each action names its full repository URL.

Next steps Done. What next?

Start over

A Pro pass unlocks the full result. See passes

All developer tools

About the CI/CD Pipeline Generator & Converter

Describe your project once — the stack (Node.js with npm, pnpm or Yarn; Python with pip, Poetry or uv; Java with Maven or Gradle; Go; Rust; .NET; PHP; Ruby; a Docker image; a static site), the jobs (lint, a test matrix over versions and operating systems, build with its artifacts, a container image, a deploy step), the triggers (pushes and pull requests with branch filters, tags, manual runs, a schedule) and the names of the secrets the deploy reads — and get the same pipeline as a GitHub Actions workflow (which Gitea and Forgejo Actions also run), .gitlab-ci.yml, bitbucket-pipelines.yml, azure-pipelines.yml, a SourceHut build manifest and Woodpecker CI workflows, each block with a comment that says what it does.

The files start secure: the GitHub token can only read the repository, third-party actions are pinned to the full commit SHA of their latest release (the version in a comment), checkout leaves no credentials behind, pull requests never run with your secrets, and secrets reach only the step that uses them. Convert turns a file you already have into another format where the ideas match — stages, needs, matrices, caches, artifacts, rules — and lists every construct that has no equivalent. Validate checks a file against the JSON Schema its format publishes, and GitHub Actions files also with the GitHub Actions Linter’s checks. Cost estimates the CI minutes a month on each service against its included minutes.

Everything runs in your browser; no file is uploaded. Without a pass the result is a free preview: the first lines of each file, every check count with the first problems, and the first rows of the estimate. The full files, the ZIP, copying and the full reports unlock with a Pro pass.

How to use it

  1. Choose the stack and its package manager, list the versions to test (the last one builds and deploys), and tick the jobs you want.
  2. Set the triggers: the branches whose pushes and pull requests run the pipeline, version tags, manual runs and a schedule (a cron expression, shown in plain words).
  3. For a container image, name it and pick the registry; for a deploy, give the command, the environment and the secret names it reads.
  4. Read each format’s file in its tab, with the settings it needs outside the file (secrets, schedules, branch policies) and what that format cannot express. With a pass, or once this result is unlocked, copy or download each file, or the ZIP with all of them at their paths; the free preview shows the first lines.
  5. To move an existing pipeline, open Convert, paste the file (the format is detected) and pick the target; Validate checks any file, yours or generated.

Examples

A pinned action
Input
actions/checkout, latest release
Result
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

A tag can be moved by the action’s owner or by anyone who takes over the repository; a full commit SHA cannot. Dependabot and Renovate update pinned SHAs and their comments.

One matrix, six formats
Input
Test on Node.js 22 and 24
Result
GitHub: strategy.matrix · GitLab: parallel:matrix · Azure: strategy.matrix legs · Bitbucket: two parallel steps · Woodpecker: matrix · SourceHut: one run (listed as not expressible)
A branch glob in GitLab rules
Input
pushes to release/**
Result
if: $CI_COMMIT_BRANCH =~ /^release\/.*$/

GitLab rules compare with regular expressions, and end one at the first unescaped slash, so every / is escaped.

What each file does by default

  • GitHub Actions: permissions: contents: read at the top, packages: write only for the image job, actions pinned to commit SHAs, persist-credentials: false on checkout, a concurrency group that cancels superseded runs except on the deploy branch, pull requests on pull_request (never pull_request_target).
  • GitLab CI: workflow:rules that run merge request pipelines without a duplicate branch pipeline, caches inside the project folder keyed by the lock file, jobs that start as soon as what they need is done, and deployments that are never interrupted.
  • Bitbucket Pipelines: each job defined once with a YAML anchor and reused by every section; a matrix becomes parallel steps.
  • Azure Pipelines: the toolchain from Microsoft’s tool tasks, Cache@2 keyed by the lock file, a deployment job for the environment, and secret variables mapped into the one step that reads them.
  • SourceHut: Alpine packages, the deploy guarded by GIT_REF, and command logging turned off before a secret is read (builds run with set -x).
  • Woodpecker CI: one workflow per job, ordered with depends_on, secrets with from_secret.

In every format the container image is built on every run and pushed only on pushes to the deploy branch (without a deploy job, to the branches whose pushes start the pipeline) and on version tags when tags start it; pull requests and other branches only build it. A converted file keeps a step’s own variables (exported in front of its commands where a job is one script), and lists the expressions and runner variables of the old format that its scripts still use.

Gitea and Forgejo

Choose Gitea or Forgejo under GitHub-compatible host to write the workflow to .gitea/workflows/ or .forgejo/workflows/. Gitea fetches an action named without a server from github.com while its DEFAULT_ACTIONS_URL setting keeps its default (Gitea’s configuration reference). Forgejo resolves a short uses: against its own actions host, and Forgejo’s reference strongly recommends fully qualified URLs, so for Forgejo each action is written as https://github.com/owner/repo@<sha>. Runner labels in runs-on must match the labels your runners declare.

Where the minutes come from

The estimate uses each service’s published rules, and the included minutes are fields you can change: GitHub Actions billing (2,000 minutes a month on GitHub’s no-cost plans; standard GitHub-hosted runners cost nothing for public repositories) and runner pricing (each job rounded up to a whole minute); GitLab compute minutes (400 a month on GitLab’s no-cost tier, job time × the runner’s cost factor: small Linux 1, medium 2, large 3; 0.5 for public projects in the GitLab for Open Source program); Bitbucket pricing (50 build minutes on the no-cost plan, counted by runner size: a 5-minute step on a 2× runner counts as 10 minutes); Azure parallel jobs (for private projects one Microsoft-hosted job at a time, up to 60 minutes each and 1,800 minutes a month, for an organization with billing set up). SourceHut and Woodpecker have no monthly minutes: SourceHut asks for a paid account to submit builds (its billing FAQ), and Woodpecker runs on your own machines.

Schemas the files are checked against

GitHub workflows: the JSON Schema Store’s github-workflow schema and the GitHub Actions Linter’s checks. GitLab: the schema GitLab publishes for .gitlab-ci.yml. Azure Pipelines: Microsoft’s schema from its VS Code extension. Woodpecker: Woodpecker’s own schema. Bitbucket and SourceHut files are checked against rules written from Atlassian’s configuration reference and the build manifest reference.

The bundled GitLab, Azure Pipelines and Woodpecker schemas are copies with their descriptions removed (every validation rule unchanged), used under their licences: GitLab’s schema © GitLab Inc. under the MIT licence, Microsoft’s © Microsoft Corporation under the MIT licence, and Woodpecker’s © the Woodpecker Authors under the Apache License 2.0.

Limitations

  • Only these six formats: Jenkinsfiles, CircleCI and Travis CI files are not read or written.
  • Conversion covers what the formats share. Reusable workflows, includes and templates are not followed (convert each file on its own), and anything else that does not convert is listed with its line.
  • GitLab, Bitbucket and Woodpecker keep schedules in their settings, not in the file; the setup notes say where to add them.
  • The commands are sensible defaults for each stack; change them to your project’s own scripts.
  • The minutes estimate is only as good as the job times and run counts you give it, and the services can change their plans.

Privacy

On this device: nothing is sent

Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.

Frequently asked questions

What do I get without a pass?

Without a pass, CI/CD Pipeline Generator & Converter shows the first lines of each generated or converted file (up to 20), every check count with the first problems, and the first rows of the minutes estimate. Until you unlock it, the result can’t be downloaded or copied. A Pro, Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.

Why are actions pinned to a long hexadecimal string?

That is the full commit SHA of the action’s release. GitHub’s secure-use reference calls it the only way to use an action as an immutable release: a tag such as v7 can be moved to other code. The version stays in a comment, and Dependabot or Renovate can keep both up to date.

Why does it never use pull_request_target?

pull_request_target runs with the repository’s secrets and a token that can write; checking out and building a pull request there runs a stranger’s code with both. pull_request runs a fork’s code without secrets and with a read-only token, which is what tests need.

Can the same repository hold all six files?

Yes. Each format reads its own path (.github/workflows/, .gitlab-ci.yml, bitbucket-pipelines.yml, azure-pipelines.yml, .build.yml, .woodpecker/), so the ZIP keeps them at those places; commit only the ones for the services you use.

What happens to a step that has no equivalent?

It is listed with its line and the reason, and the converted file has a reminder where it was (for example a third-party GitHub action in a GitLab job), so nothing disappears silently.

Is my workflow uploaded?

No. Generating, converting, validating and estimating all happen in your browser.

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.