Conversion rules reference

The converter ships with a curated database of transformation rules: how each well-known component (GitHub Action, CircleCI orb command, Bitbucket pipe, GitLab include) translates to every other platform. There are 52 entries; this page lets you browse them.

For components not in this database, the converter falls back to a stub-with-warning so you can fill in the equivalent commands by hand. Every fallback shows up in the audit panel as a manual-review item.

Checkout

  • actions/checkout

    From: GitHub Actions

    check_circleLossless

    Check out the repository onto the runner.

    GitLab CI

    # GitLab CI checks out the repository automatically.
    # fetch-depth → set GIT_DEPTH variable; lfs → set GIT_LFS_SKIP_SMUDGE=0

    CircleCI

    uses: checkout

    Bitbucket Pipelines

    # Bitbucket Pipelines clones the repository automatically.
    # fetch-depth → use clone.depth in pipelines.yml

    Caveats: fetch-depth, submodules, and lfs need explicit configuration on each target platform.

    Source docs open_in_new
  • checkout

    From: CircleCI

    check_circleLossless

    CircleCI built-in checkout.

    GitHub Actions

    uses: actions/checkout@v4

    GitLab CI

    # GitLab CI checks out automatically.

    Bitbucket Pipelines

    # Bitbucket Pipelines clones automatically.
    Source docs open_in_new

Language setup

  • actions/setup-node

    From: GitHub Actions

    ruleApproximated

    Install a specific Node.js version and set up package caching.

    GitLab CI

    # Install Node.js using nvm
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

    CircleCI

    uses: node/install

    Bitbucket Pipelines

    apt-get update && apt-get install -y curl
    export NODE_VERSION={{node-version}}
    curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION%%.*}.x | bash -
    apt-get install -y nodejs

    Caveats: The `cache` parameter is best replaced by the target platform's native caching primitive — see the audit notes.

    Source docs open_in_new
  • actions/setup-python

    From: GitHub Actions

    ruleApproximated

    Install a specific Python version.

    GitLab CI

    # Install Python {{python-version}}
    sudo apt-get update -qq
    sudo apt-get install -y python{{python-version}} python{{python-version}}-venv
    python{{python-version}} -m venv .venv

    CircleCI

    uses: python/install-packages

    Bitbucket Pipelines

    apt-get update && apt-get install -y python{{python-version}} python{{python-version}}-venv
    python{{python-version}} -m venv .venv
    source .venv/bin/activate
    Source docs open_in_new
  • actions/setup-go

    From: GitHub Actions

    ruleApproximated

    Install a specific Go version.

    GitLab CI

    # Install Go {{go-version}}
    GO_VERSION={{go-version}}
    curl -fsSL https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz | tar -C /usr/local -xz
    export PATH=$PATH:/usr/local/go/bin

    CircleCI

    uses: go/install

    Bitbucket Pipelines

    GO_VERSION={{go-version}}
    curl -fsSL https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz | tar -C /usr/local -xz
    export PATH=$PATH:/usr/local/go/bin
    Source docs open_in_new
  • actions/setup-java

    From: GitHub Actions

    ruleApproximated

    Install a specific Java/JDK version.

    GitLab CI

    apt-get update && apt-get install -y openjdk-{{java-version}}-jdk

    CircleCI

    uses: java/install-java

    Bitbucket Pipelines

    apt-get update && apt-get install -y openjdk-{{java-version}}-jdk
    Source docs open_in_new
  • actions/setup-dotnet

    From: GitHub Actions

    ruleApproximated

    Install a specific .NET SDK version.

    GitLab CI

    # Install .NET SDK {{dotnet-version}}
    curl -fsSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version {{dotnet-version}}
    export PATH=$HOME/.dotnet:$PATH

    CircleCI

    curl -fsSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version {{dotnet-version}}
    export PATH=$HOME/.dotnet:$PATH

    Bitbucket Pipelines

    curl -fsSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version {{dotnet-version}}
    export PATH=$HOME/.dotnet:$PATH
    Source docs open_in_new
  • actions/setup-ruby

    From: GitHub Actions

    ruleApproximated

    Install a specific Ruby version.

    GitLab CI

    apt-get update && apt-get install -y ruby{{ruby-version}}

    CircleCI

    uses: ruby/install

    Bitbucket Pipelines

    apt-get update && apt-get install -y ruby{{ruby-version}}
    Source docs open_in_new
  • ruby/setup-ruby

    From: GitHub Actions

    ruleApproximated

    Install Ruby with bundler caching.

    GitLab CI

    apt-get update && apt-get install -y ruby{{ruby-version}}
    gem install bundler
    bundle install

    CircleCI

    uses: ruby/install

    Bitbucket Pipelines

    apt-get update && apt-get install -y ruby{{ruby-version}}
    gem install bundler
    bundle install
    Source docs open_in_new
  • actions/setup-php

    From: GitHub Actions

    ruleApproximated

    Install a specific PHP version.

    GitLab CI

    apt-get update && apt-get install -y php{{php-version}} php{{php-version}}-cli

    CircleCI

    apt-get update && apt-get install -y php{{php-version}} php{{php-version}}-cli

    Bitbucket Pipelines

    apt-get update && apt-get install -y php{{php-version}} php{{php-version}}-cli
    Source docs open_in_new
  • shivammathur/setup-php

    From: GitHub Actions

    ruleApproximated

    Install PHP with extensions.

    GitLab CI

    apt-get update && apt-get install -y php{{php-version}} php{{php-version}}-cli {{extensions}}

    CircleCI

    apt-get update && apt-get install -y php{{php-version}}

    Bitbucket Pipelines

    apt-get update && apt-get install -y php{{php-version}}
    Source docs open_in_new
  • actions/setup-cmake

    From: GitHub Actions

    ruleApproximated

    Install a specific CMake version.

    GitLab CI

    apt-get update && apt-get install -y cmake

    CircleCI

    apt-get update && apt-get install -y cmake

    Bitbucket Pipelines

    apt-get update && apt-get install -y cmake
    Source docs open_in_new
  • pnpm/action-setup

    From: GitHub Actions

    check_circleLossless

    Install pnpm.

    GitLab CI

    npm install -g pnpm@{{version}}

    CircleCI

    npm install -g pnpm@{{version}}

    Bitbucket Pipelines

    npm install -g pnpm@{{version}}
    Source docs open_in_new
  • oven-sh/setup-bun

    From: GitHub Actions

    check_circleLossless

    Install Bun.

    GitLab CI

    curl -fsSL https://bun.sh/install | bash
    export PATH=$HOME/.bun/bin:$PATH

    CircleCI

    curl -fsSL https://bun.sh/install | bash
    export PATH=$HOME/.bun/bin:$PATH

    Bitbucket Pipelines

    curl -fsSL https://bun.sh/install | bash
    export PATH=$HOME/.bun/bin:$PATH
    Source docs open_in_new
  • circleci/node

    From: CircleCI

    ruleApproximated

    CircleCI Node orb commands (install, install-packages).

    GitHub Actions

    uses: actions/setup-node@v4

    GitLab CI

    # Install Node.js using nvm
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

    Bitbucket Pipelines

    curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
    apt-get install -y nodejs
    Source docs open_in_new
  • circleci/python

    From: CircleCI

    ruleApproximated

    CircleCI Python orb commands.

    GitHub Actions

    uses: actions/setup-python@v5

    GitLab CI

    # Install Python 3.11
    sudo apt-get update -qq
    sudo apt-get install -y python3.11 python3.11-venv
    python3.11 -m venv .venv

    Bitbucket Pipelines

    apt-get update && apt-get install -y python3 python3-pip
    Source docs open_in_new

Caching

  • actions/cache

    From: GitHub Actions

    warningLossy / best-effort

    Cache files between runs (npm, gradle, etc.).

    GitLab CI

    # Caching is configured at the job level via the `cache:` key.
    # This step is a no-op — see the generated cache: block on this job.

    CircleCI

    uses: restore_cache

    Bitbucket Pipelines

    # Bitbucket caches are declared via the top-level `definitions.caches` block.
    # Reference the cache name in the step's `caches:` list.

    Caveats: Each platform handles caching differently — review the generated structured cache configuration on the target.

    Source docs open_in_new
  • save_cache

    From: CircleCI

    warningLossy / best-effort

    CircleCI built-in cache save.

    GitHub Actions

    uses: actions/cache@v4

    GitLab CI

    # Caching declared at the job level (cache: block).

    Bitbucket Pipelines

    # Caching declared via definitions.caches.
    Source docs open_in_new
  • restore_cache

    From: CircleCI

    warningLossy / best-effort

    CircleCI built-in cache restore.

    GitHub Actions

    uses: actions/cache@v4

    GitLab CI

    # Caching declared at the job level (cache: block).

    Bitbucket Pipelines

    # Caching declared via definitions.caches.
    Source docs open_in_new

Artifacts

  • actions/upload-artifact

    From: GitHub Actions

    check_circleLossless

    Upload build artifacts for downstream jobs and humans.

    GitLab CI

    # GitLab artifacts are declared via the job-level `artifacts:` block.
    # Generated automatically from this step.

    CircleCI

    uses: store_artifacts

    Bitbucket Pipelines

    # Bitbucket artifacts are declared via the step-level `artifacts:` list.
    Source docs open_in_new
  • actions/download-artifact

    From: GitHub Actions

    check_circleLossless

    Download a previously uploaded artifact.

    GitLab CI

    # In GitLab, artifacts from `needs:` jobs are downloaded automatically into the workspace.
    # Add `needs: [<producer-job>]` to this job if it isn't already there.

    CircleCI

    uses: attach_workspace

    Bitbucket Pipelines

    # Bitbucket artifacts from previous steps are restored automatically into the working directory.
    Source docs open_in_new
  • persist_to_workspace

    From: CircleCI

    warningLossy / best-effort

    CircleCI workspace persist (intra-workflow data sharing).

    GitHub Actions

    uses: actions/upload-artifact@v4

    GitLab CI

    # Replace with artifacts: paths: [...] on this job, then needs: on the consumer.

    Bitbucket Pipelines

    # Replace with artifacts: [...] in this step.
    Source docs open_in_new
  • attach_workspace

    From: CircleCI

    warningLossy / best-effort

    CircleCI workspace attach.

    GitHub Actions

    uses: actions/download-artifact@v4

    GitLab CI

    # Add `needs: [<producer-job>]`; artifacts download automatically.

    Bitbucket Pipelines

    # Bitbucket restores prior step artifacts automatically.
    Source docs open_in_new
  • store_artifacts

    From: CircleCI

    check_circleLossless

    CircleCI store_artifacts.

    GitHub Actions

    uses: actions/upload-artifact@v4

    GitLab CI

    # Declared via job-level artifacts: block.

    Bitbucket Pipelines

    # Declared via step-level artifacts: list.
    Source docs open_in_new

Docker

  • docker/setup-buildx-action

    From: GitHub Actions

    check_circleLossless

    Set up Docker Buildx for multi-arch builds.

    GitLab CI

    docker buildx create --use --name builder

    CircleCI

    docker buildx create --use --name builder

    Bitbucket Pipelines

    docker buildx create --use --name builder
    Source docs open_in_new
  • docker/setup-qemu-action

    From: GitHub Actions

    check_circleLossless

    Set up QEMU for cross-arch emulation.

    GitLab CI

    docker run --privileged --rm tonistiigi/binfmt --install all

    CircleCI

    docker run --privileged --rm tonistiigi/binfmt --install all

    Bitbucket Pipelines

    docker run --privileged --rm tonistiigi/binfmt --install all
    Source docs open_in_new
  • docker/login-action

    From: GitHub Actions

    check_circleLossless

    Log in to a Docker registry.

    GitLab CI

    echo "{{password}}" | docker login {{registry}} -u "{{username}}" --password-stdin

    CircleCI

    echo "{{password}}" | docker login {{registry}} -u "{{username}}" --password-stdin

    Bitbucket Pipelines

    echo "{{password}}" | docker login {{registry}} -u "{{username}}" --password-stdin

    Caveats: Username/password reference secrets — recreate the secrets on the target platform.

    Source docs open_in_new
  • docker/build-push-action

    From: GitHub Actions

    warningLossy / best-effort

    Build and push a Docker image.

    GitLab CI

    docker buildx build \
      --file {{file}} \
      --tag {{tags}} \
      --platform {{platforms}} \

    CircleCI

    docker buildx build \
      --file {{file}} \
      --tag {{tags}} \
      --push \

    Bitbucket Pipelines

    docker buildx build \
      --file {{file}} \
      --tag {{tags}} \
      --push \

    Caveats: cache-from / cache-to layer caching may not be available on every runner.

    Source docs open_in_new
  • docker/metadata-action

    From: GitHub Actions

    visibilityManual review

    Compute image tags and labels from git context.

    GitLab CI

    # Replace ${TAGS} below with hand-built tags derived from $CI_COMMIT_REF_NAME / $CI_COMMIT_SHA

    CircleCI

    # Replace ${TAGS} below with hand-built tags derived from << pipeline.git.branch >> / << pipeline.git.revision >>

    Bitbucket Pipelines

    # Replace ${TAGS} below with hand-built tags derived from $BITBUCKET_BRANCH / $BITBUCKET_COMMIT
    Source docs open_in_new
  • circleci/docker

    From: CircleCI

    warningLossy / best-effort

    CircleCI Docker orb (build, push).

    GitHub Actions

    uses: docker/build-push-action@v5

    GitLab CI

    docker build -t {{image}} .
    docker push {{image}}

    Bitbucket Pipelines

    docker build -t {{image}} .
    docker push {{image}}
    Source docs open_in_new

Cloud authentication

  • aws-actions/configure-aws-credentials

    From: GitHub Actions

    visibilityManual review

    Configure AWS credentials, including via OIDC.

    GitLab CI

    export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
    export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
    export AWS_REGION={{aws-region}}
    # For OIDC: configure id_tokens in the GitLab job and use `aws sts assume-role-with-web-identity`

    CircleCI

    uses: aws-cli/setup

    Bitbucket Pipelines

    export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
    export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
    export AWS_REGION={{aws-region}}

    Caveats: OIDC authentication needs to be reconfigured per platform — review the audit log.

    Source docs open_in_new
  • google-github-actions/auth

    From: GitHub Actions

    visibilityManual review

    Authenticate with Google Cloud (workload identity / SA key).

    GitLab CI

    echo "$GOOGLE_CREDENTIALS_JSON" > /tmp/gcp-key.json
    export GOOGLE_APPLICATION_CREDENTIALS=/tmp/gcp-key.json
    gcloud auth activate-service-account --key-file=$GOOGLE_APPLICATION_CREDENTIALS

    CircleCI

    echo "$GOOGLE_CREDENTIALS_JSON" > /tmp/gcp-key.json
    export GOOGLE_APPLICATION_CREDENTIALS=/tmp/gcp-key.json
    gcloud auth activate-service-account --key-file=$GOOGLE_APPLICATION_CREDENTIALS

    Bitbucket Pipelines

    echo "$GOOGLE_CREDENTIALS_JSON" > /tmp/gcp-key.json
    export GOOGLE_APPLICATION_CREDENTIALS=/tmp/gcp-key.json
    gcloud auth activate-service-account --key-file=$GOOGLE_APPLICATION_CREDENTIALS
    Source docs open_in_new
  • google-github-actions/setup-gcloud

    From: GitHub Actions

    check_circleLossless

    Install the gcloud CLI.

    GitLab CI

    curl -fsSL https://sdk.cloud.google.com | bash
    export PATH=$HOME/google-cloud-sdk/bin:$PATH

    CircleCI

    curl -fsSL https://sdk.cloud.google.com | bash
    export PATH=$HOME/google-cloud-sdk/bin:$PATH

    Bitbucket Pipelines

    curl -fsSL https://sdk.cloud.google.com | bash
    export PATH=$HOME/google-cloud-sdk/bin:$PATH
    Source docs open_in_new
  • azure/login

    From: GitHub Actions

    visibilityManual review

    Authenticate with Azure.

    GitLab CI

    az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_ID

    CircleCI

    az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_ID

    Bitbucket Pipelines

    az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_ID
    Source docs open_in_new
  • circleci/aws-cli

    From: CircleCI

    ruleApproximated

    CircleCI AWS CLI orb.

    GitHub Actions

    uses: aws-actions/configure-aws-credentials@v4

    GitLab CI

    pip install awscli

    Bitbucket Pipelines

    pip install awscli
    Source docs open_in_new

Deploy

  • actions/deploy-pages

    From: GitHub Actions

    blockUnsupported

    Deploy to GitHub Pages.

    GitLab CI

    # GitHub Pages has no GitLab equivalent. Use GitLab Pages: rename the job to `pages` and ensure artifact path is `public/`.

    CircleCI

    # GitHub Pages has no CircleCI equivalent. Push the build artifact to gh-pages branch via gh CLI.

    Bitbucket Pipelines

    # GitHub Pages has no Bitbucket equivalent. Push the build artifact to your hosting provider.
    Source docs open_in_new
  • actions/upload-pages-artifact

    From: GitHub Actions

    blockUnsupported

    Upload a Pages-format artifact.

    GitLab CI

    # In GitLab, ensure your artifact path is `public/` and your job is named `pages`.

    CircleCI

    # Bundle and upload your built site to your CDN of choice (S3, Netlify, Cloudflare Pages CLI, etc.).

    Bitbucket Pipelines

    # Upload built static site to your hosting provider via aws-s3-deploy or rsync.
    Source docs open_in_new
  • peaceiris/actions-gh-pages

    From: GitHub Actions

    warningLossy / best-effort

    Push a directory to gh-pages.

    GitLab CI

    # Use GitLab Pages: name the job `pages`, output to `public/`.

    CircleCI

    npx gh-pages -d {{publish_dir}}

    Bitbucket Pipelines

    npx gh-pages -d {{publish_dir}}
    Source docs open_in_new
  • atlassian/aws-s3-deploy

    From: Bitbucket Pipelines

    check_circleLossless

    Bitbucket pipe: deploy to AWS S3.

    GitHub Actions

    aws s3 sync {{LOCAL_PATH}} s3://{{S3_BUCKET}}

    GitLab CI

    aws s3 sync {{LOCAL_PATH}} s3://{{S3_BUCKET}}

    CircleCI

    aws s3 sync {{LOCAL_PATH}} s3://{{S3_BUCKET}}
    Source docs open_in_new
  • atlassian/aws-cloudfront-invalidate

    From: Bitbucket Pipelines

    check_circleLossless

    Bitbucket pipe: invalidate CloudFront.

    GitHub Actions

    aws cloudfront create-invalidation --distribution-id {{DISTRIBUTION_ID}} --paths "/*"

    GitLab CI

    aws cloudfront create-invalidation --distribution-id {{DISTRIBUTION_ID}} --paths "/*"

    CircleCI

    aws cloudfront create-invalidation --distribution-id {{DISTRIBUTION_ID}} --paths "/*"
    Source docs open_in_new

Tests & coverage

  • codecov/codecov-action

    From: GitHub Actions

    check_circleLossless

    Upload coverage reports to Codecov.

    GitLab CI

    curl -Os https://uploader.codecov.io/latest/linux/codecov
    chmod +x codecov
    ./codecov -t $CODECOV_TOKEN -f {{files}}

    CircleCI

    curl -Os https://uploader.codecov.io/latest/linux/codecov
    chmod +x codecov
    ./codecov -t $CODECOV_TOKEN -f {{files}}

    Bitbucket Pipelines

    curl -Os https://uploader.codecov.io/latest/linux/codecov
    chmod +x codecov
    ./codecov -t $CODECOV_TOKEN -f {{files}}
    Source docs open_in_new
  • EnricoMi/publish-unit-test-result-action

    From: GitHub Actions

    warningLossy / best-effort

    Publish JUnit-style test results as a check.

    GitLab CI

    # GitLab natively renders JUnit reports — declare them via `artifacts.reports.junit:` on this job.

    CircleCI

    uses: store_test_results

    Bitbucket Pipelines

    # Bitbucket auto-detects test reports under `test-reports/` — make sure your runner writes there.
    Source docs open_in_new
  • store_test_results

    From: CircleCI

    warningLossy / best-effort

    CircleCI store_test_results (JUnit display).

    GitHub Actions

    uses: EnricoMi/publish-unit-test-result-action@v2

    GitLab CI

    # Declared via artifacts.reports.junit on this job.

    Bitbucket Pipelines

    # Bitbucket auto-detects JUnit reports under test-reports/.
    Source docs open_in_new

Security scanning

  • github/codeql-action

    From: GitHub Actions

    blockUnsupported

    Run CodeQL static analysis.

    GitLab CI

    # CodeQL is GitHub-only. Equivalent on GitLab: include the SAST template (Security/SAST.gitlab-ci.yml).

    CircleCI

    # CodeQL is GitHub-only. Use SonarCloud / Snyk / Semgrep instead.

    Bitbucket Pipelines

    # CodeQL is GitHub-only. Use the Snyk pipe or SonarCloud integration on Bitbucket.
    Source docs open_in_new
  • aquasecurity/trivy-action

    From: GitHub Actions

    check_circleLossless

    Scan a container image or filesystem with Trivy.

    GitLab CI

    docker run --rm -v $PWD:/workspace aquasec/trivy {{scan-type}} {{image-ref}}

    CircleCI

    docker run --rm -v $PWD:/workspace aquasec/trivy {{scan-type}} {{image-ref}}

    Bitbucket Pipelines

    docker run --rm -v $PWD:/workspace aquasec/trivy {{scan-type}} {{image-ref}}
    Source docs open_in_new
  • snyk/actions

    From: GitHub Actions

    warningLossy / best-effort

    Run Snyk dependency / container scan.

    GitLab CI

    npm install -g snyk
    snyk auth $SNYK_TOKEN
    snyk test

    CircleCI

    uses: snyk/snyk

    Bitbucket Pipelines

    uses: snyk/snyk-scan
    Source docs open_in_new
  • atlassian/git-secrets-scan

    From: Bitbucket Pipelines

    check_circleLossless

    Bitbucket pipe: git-secrets scan.

    GitHub Actions

    git clone https://github.com/awslabs/git-secrets.git
    cd git-secrets && make install
    git secrets --scan

    GitLab CI

    git clone https://github.com/awslabs/git-secrets.git
    cd git-secrets && make install
    git secrets --scan

    CircleCI

    git clone https://github.com/awslabs/git-secrets.git
    cd git-secrets && make install
    git secrets --scan
    Source docs open_in_new

Notifications

  • slackapi/slack-github-action

    From: GitHub Actions

    warningLossy / best-effort

    Post to Slack.

    GitLab CI

    curl -X POST -H "Content-Type: application/json" --data '{"text":"{{message}}"}' $SLACK_WEBHOOK_URL

    CircleCI

    curl -X POST -H "Content-Type: application/json" --data '{"text":"{{message}}"}' $SLACK_WEBHOOK_URL

    Bitbucket Pipelines

    curl -X POST -H "Content-Type: application/json" --data '{"text":"{{message}}"}' $SLACK_WEBHOOK_URL
    Source docs open_in_new
  • atlassian/slack-notify

    From: Bitbucket Pipelines

    warningLossy / best-effort

    Bitbucket pipe: Slack notification.

    GitHub Actions

    uses: slackapi/slack-github-action@v1

    GitLab CI

    curl -X POST -H "Content-Type: application/json" --data '{"text":"{{MESSAGE}}"}' $WEBHOOK_URL

    CircleCI

    curl -X POST -H "Content-Type: application/json" --data '{"text":"{{MESSAGE}}"}' $WEBHOOK_URL
    Source docs open_in_new

Utilities

  • actions/github-script

    From: GitHub Actions

    visibilityManual review

    Run inline JavaScript with the GitHub API client.

    GitLab CI

    # actions/github-script has no direct equivalent.
    # Re-implement the script as `gh api ...` calls or as a Node script that uses @octokit/rest.

    CircleCI

    # actions/github-script has no direct equivalent. Use the `gh` CLI or @octokit/rest.

    Bitbucket Pipelines

    # actions/github-script has no direct equivalent. Use the `gh` CLI or @octokit/rest.
    Source docs open_in_new
  • hashicorp/setup-terraform

    From: GitHub Actions

    check_circleLossless

    Install Terraform.

    GitLab CI

    TF_VERSION={{terraform_version}}
    curl -fsSL https://releases.hashicorp.com/terraform/${TF_VERSION}/terraform_${TF_VERSION}_linux_amd64.zip -o terraform.zip
    unzip terraform.zip
    mv terraform /usr/local/bin/

    CircleCI

    uses: terraform/install

    Bitbucket Pipelines

    TF_VERSION={{terraform_version}}
    curl -fsSL https://releases.hashicorp.com/terraform/${TF_VERSION}/terraform_${TF_VERSION}_linux_amd64.zip -o terraform.zip
    unzip terraform.zip
    mv terraform /usr/local/bin/
    Source docs open_in_new
  • hashicorp/setup-packer

    From: GitHub Actions

    ruleApproximated

    Install Packer.

    GitLab CI

    apt-get update && apt-get install -y packer

    CircleCI

    apt-get update && apt-get install -y packer

    Bitbucket Pipelines

    apt-get update && apt-get install -y packer
    Source docs open_in_new

Context variable equivalents

These rewrites apply to every conversion. The converter walks all conditional expressions, environment values, and `with:` arguments rewriting variables from the source platform to the target.

ConceptGitHub ActionsGitLab CICircleCIBitbucket Pipelines
Branch namegithub.ref_name$CI_COMMIT_REF_NAME<< pipeline.git.branch >>$BITBUCKET_BRANCH
Commit SHAgithub.sha$CI_COMMIT_SHA<< pipeline.git.revision >>$BITBUCKET_COMMIT
Tag namegithub.ref_name$CI_COMMIT_TAG<< pipeline.git.tag >>$BITBUCKET_TAG
Repository sluggithub.repository$CI_PROJECT_PATH<< pipeline.project.git_url >>$BITBUCKET_REPO_FULL_NAME
Run / pipeline idgithub.run_id$CI_PIPELINE_ID<< pipeline.id >>$BITBUCKET_BUILD_NUMBER
Triggering eventgithub.event_name$CI_PIPELINE_SOURCE<< pipeline.trigger_source >>(implicit; check pipelines.* section)
Actor / usergithub.actor$GITLAB_USER_LOGIN$CIRCLE_USERNAME$BITBUCKET_STEP_TRIGGERER_UUID
Workspace pathgithub.workspace$CI_PROJECT_DIR$CIRCLE_WORKING_DIRECTORY$BITBUCKET_CLONE_DIR
PR / MR source branchgithub.head_ref$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME$CIRCLE_BRANCH (head ref)$BITBUCKET_PR_DESTINATION_BRANCH (target only)
PR / MR target branchgithub.base_ref$CI_MERGE_REQUEST_TARGET_BRANCH_NAME(not directly exposed)$BITBUCKET_PR_DESTINATION_BRANCH

Related Tools