Migrating from GitHub Actions

Depllo ships a converter that turns your GitHub Actions workflows into a single .depllo-ci.yml. It maps what it can, and surfaces everything it can't — as TODO comments in the output and lines in a conversion report — so nothing is dropped silently.

Run the converter

The script lives in the repo at scripts/gha-to-depllo.mjs:

# Convert every .github/workflows/*.yml in a repo into ./.depllo-ci.yml
node scripts/gha-to-depllo.mjs .

# Or convert a single workflow, printing to stdout
node scripts/gha-to-depllo.mjs .github/workflows/ci.yml --stdout

# Write to a specific file
node scripts/gha-to-depllo.mjs . -o .depllo-ci.yml

It reads your workflows, emits one merged .depllo-ci.yml, and prints a conversion report to stderr — counts of mapped / omitted / unmapped actions, plus the secret variables you'll need to create in Depllo project settings.

What maps

  • Jobs become Depllo jobs; runs-on is dropped (Depllo picks a Docker runner).
  • run: steps become script: lines.
  • needs: carries over directly.
  • Common expressions translate to predefined variables, e.g. ${{ github.sha }}$CI_COMMIT_SHA, ${{ github.ref_name }}$CI_COMMIT_REF_NAME, ${{ github.repository }}$CI_PROJECT_PATH.
  • secrets.FOO references are collected and reported so you can add them under Settings → Variables.
  • Matrices are expanded into concrete jobs (capped to keep the output sane).
  • Stages are ordered test → build → deploy to avoid stage-barrier deadlocks.

What you'll finish by hand

  • uses: actions (Marketplace actions) have no Depllo equivalent — they're surfaced as TODO comments. Replace them with the underlying shell commands, or a script.
  • services: (databases/caches) are flagged as TODO(services). Depllo's service containers (PostgreSQL/Redis) are in early access — contact us to enable them on your workspace.
  • Complex ${{ }} expressions that don't map are kept verbatim with a TODO so you can port them.

After converting

  1. Review the generated .depllo-ci.yml and resolve every TODO.
  2. Create the reported secrets under Project → Settings → Variables (mark tokens masked).
  3. Commit the file and push — Depllo builds the commit.
  4. Once green, disable the GitHub Actions workflow (or delete it). Many teams keep the old workflow file in place but disabled as a fallback.

See the .depllo-ci.yml reference for the full set of keys you can hand-tune.