/compat

Primary LanguageRubyMIT LicenseMIT

Buildkite Compat

A tool to transform pipelines from other CI providers to Buildkite

$ cat examples/circleci/basic.yml
version: 2
jobs:
  build:
    docker:
      - image: circleci/python:3.6.2-stretch-browsers
    steps:
      - checkout
      - run: pip install -r requirements/dev.txt

$ buildkite-compat examples/circleci/basic.yml
steps:
- label: ":circleci: build"
  key: "build"
  commands:
    - "sudo cp -R /buildkite-checkout /home/circleci/checkout"
    - "sudo chown -R circleci:circleci /home/circleci/checkout"
    - "cd /home/circleci/checkout"
    - "pip install -r requirements/dev.txt"
  plugins:
  - docker#v3.3.0:
      image: "circleci/python:3.6.2-stretch-browsers"
      workdir: "/buildkite-checkout"

Buildkite Compat can also be used via a HTTP API:

$ curl -X POST -F 'file=@examples/circleci/basic.yml' https://buildkite-compat.herokuapp.com
steps:
- label: ":circleci: build"
  key: build
  commands:
  - sudo cp -R /buildkite-checkout /home/circleci/checkout
  - sudo chown -R circleci:circleci /home/circleci/checkout
  - cd /home/circleci/checkout
  - pip install -r requirements/dev.txt
  plugins:
  - docker#v3.3.0:
      image: circleci/python:3.6.2-stretch-browsers
      workdir: "/buildkite-checkout"

The output can be piped directly into a buildkite-agent pipeline upload command:

$ curl -X POST -F 'file=@.circleci/config.yml' https://buildkite-compat.herokuapp.com | buildkite-agent pipeline upload

Release

# This needs to be installed first https://github.com/pmq20/ruby-packer
curl -L http://enclose.io/rubyc/rubyc-darwin-x64.gz | gunzip > rubyc
chmod +x rubyc
mv /usr/local/bin

# Prepare release folders
rm -rf dist
mkdir dist
rubyc bin/buildkite-compat -o dist/buildkite-compat