bit-ship.yml

Configuration file for Bit-Ship environment. Stored in .bit-ship/bit-ship.yml of project root

version

  • type: string
  • default: 1.0

The version of the configuration file. The current version is 1.0.


name

  • type: string
  • default: ''

Name of your project.


images

  • type: Image
  • default: {}

image section is generated based on the analysis of your app. It contains the Docker image that will be used to run your app. You can change the image to a different one if you want to use a different base image.

images:
  default:
    name: bitship/bit-9df6a1addf9cfa4dee3ae974124e4ab5385e18b2e5acd7a65dd07900e2c6c8af
    dependencies:
      node: '22'
      pnpm: latest  
  db:
    name: postgres:17-alpine

image.name

  • type: string
  • default: ""
  • required true

Name of docker image with it's registry and optionally tag e.g. alpine:latest

image.build

  • type: string
  • default: ""
  • required false

Path to build local images from Docker files.

image.dependencies

  • type: object
  • default: {}
  • required false

List of dependencies and their versions that are included in image https://www.bit-ship.dev/tools


tasks

  • type: Task
  • default: {}

The tasks section allows you to define reusable scripts.

tasks:
    test: 
        command?: 'npm run test'
    build: 
        command?: 'npm run build'
        env: 
            NODE_ENV?: 'production'

task.command

  • type: string
  • default: ""
  • required false

Command that will be executed

task.env

  • type: object
  • default: {}
  • required false

Environment variables

task.dockerOptions

to be implemented

  • type: object
  • default: {}
  • required false

For more specific usecases options are passed directly to docker https://docs.docker.com/reference/compose-file/services


jobs

  • type: Job
  • default: {}

Jobs are sequences of tasks that can be run manually or hooked to a triggers.

jobs:
  qa:
    on:
      commit: post-commit
    tasks:
      - lint
      - test

job.on

  • type: On
  • default: "{}"
  • required false

Hook job on events like commit, push etc.

job.on.commit

  • type: pre-commit | post-commit
  • default: ""
  • required false

job.tasks

  • type: Array<string | string[]>
  • default: []
  • required true

List of task that should be executed.


apps

  • type: App
  • default: {}

Apps are tasks that serves FE assets or run BE applications. You can use it to run a web server, a database or other network applications.

apps: 
  web:
    task: dev
    expose:
      - port: 3000
        localHost: web.localhost
        access: proxy-public
  db:
    task: pg
    expose:
      - port: 5432
        access: public

app.task

  • type: string
  • default: ""
  • required true

Name of the task to be run

app.expose

  • type: Expose[]
  • required false Expose ports of your application

app.expose.port

  • type: number | string
  • required false Port that will be exposed

app.expose.access

  • type: public | proxy-public
  • required false

Access configures how the port is exposed to outside container.

OptionsDescription
publicport is exposed directly to host machine
proxy-publicport is exposed in internal network and acessible trough a bit-ship proxy

app.expose.localHost

  • type: string
  • default: ""
  • required false

Host under which you app runs locally. For example web.localhost


vaults

to be implemented