CI/CD pipeline generator for seven providers

Choose your CI provider and get a pipeline that tests the project, builds the Docker image, pushes it to a registry and optionally deploys it.

Generate your files

What you get

Sample output

.gitlab-ci.yml
workflow:
  name: CI
  auto_cancel:
    on_new_commit: interruptible
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH =~ /^(main)$/
    - if: $CI_COMMIT_TAG =~ /^(v.*)$/

stages: [test, build]

variables:
  IMAGE_REPO: "$CI_REGISTRY_IMAGE"

test:
  stage: test
  image: node:24
  interruptible: true
  script:
    - npm ci
    - npm run build

build-image:
  stage: build
  image: docker:27
  services:
    - docker:27-dind
  variables:
    DOCKER_TLS_CERTDIR: "/certs"
  interruptible: true
  before_script:
    - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"
  script:
    - docker build -t "$IMAGE_REPO:$CI_COMMIT_SHA" -t "$IMAGE_REPO:$CI_COMMIT_REF_SLUG" .
    - if [ "$CI_COMMIT_REF_NAME" = "$CI_DEFAULT_BRANCH" ]; then docker tag "$IMAGE_REPO:$CI_COMMIT_SHA" "$IMAGE_REPO:latest"; fi
    - docker push --all-tags "$IMAGE_REPO"
  rules:
    - if: $CI_PIPELINE_SOURCE != "merge_request_event"
.gitlab-ci.yml for a Node.js project. Generated by Dockcrate.

How it works

  1. Pick a stack and the options you need.
  2. Preview every file, and edit or switch off any block.
  3. Copy the files or download them as a zip.

Questions

Which CI providers are supported?

GitHub Actions, GitLab CI, Gitea and Forgejo Actions, Jenkins, Bitbucket Pipelines, Azure DevOps and CircleCI.

Where can the pipeline deploy to?

To a registry only, to a server over SSH, to Kubernetes, Google Cloud Run, AWS ECS, Azure Web App for Containers or Fly. Each target generates the files it needs.

Do I need to install anything?

No. Use this page, or run the CLI if you prefer a terminal. Both use the same generator.

Does it detect my existing pipeline?

No. It generates files for a new project from the options you choose and never reads an existing one.