The file dev.yml must be placed at the root directory of your project.
It should be commited to your repository and shared with everyone working on the project.
The up section describes the tasks that the bud up command will run.
Some tasks prepare your environment to use a language like python or go.
Other tasks ensure your environment is up to date like pip or golang_dep.
The special custom task let you handle specific case needed for your project. See Tasks.
The commands section describes the project commands like bud test. See Project Commands.
The open section describes the project links available through bud open <name>. See Open Command.
dev.yml:
up:
- go:
version: '1.12'
modules: true
- golang_dep
- python: 3.6.5
- apt: [git, curl]
- homebrew: [git, curl]
- pip:
- python/requirements-dev.txt
- custom:
name: Download GeoIP db
met?: test -e GeoIP.dat
meet: curl -L http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz | gunzip > GeoIP.dat
commands:
test:
desc: Run tests for Python and Go
run: pytest -v python/tests && go test $(go list ./...)
open:
staging: https://staging.myapp.com
doc: https://godoc.org/github.com/org/myappEnvironment variables can be set by using the env key:
env:
ENV: development
DATABASE_URL: mysql://localhost:3306/dev
MEMCACHE_URL: localhost:11211The environment variables will be set as soon as you enter the project, they can be used in custom tasks, in
the commands section and in your shell.
This task will install the Debian packages specified if DevBuddy is running on Debian. Otherwise the task will be ignored.
up:
- apt:
- python3-devThis task will install the Homebrew recipes if DevBuddy is running on macOS. Otherwise the task will be ignored.
up:
- homebrew:
- cmakeThis task will install the Python version (with PyEnv, which must be installed), create a virtualenv and activate it in your shell.
up:
- python: 3.6.5This task will install the Python project in development mode (pip install -e .).
This task runs if setup.py has changed since the last bud up.
up:
- python: 3.6.5
- python_developThis task will install a pip requirements file.
A Python environment must be selected before.
Currently this task can't detect whether it should run or not. PR welcome!
up:
- python: 3.6.5
- pip:
- requirements.txt
- requirements-dev.txtThis task will install a Pipfile with Pipenv.
A Python environment must be selected before.
Currently this task can't detect whether it should run or not. PR welcome!
up:
- python: 3.6.5
- pipfileThis task will download the Go distribution from dl.google.com/go and activate it
in your shell (with GOROOT).
up:
- go: 1.10.1Force the usage of Go modules:
up:
- go:
version: '1.12'
modules: trueThis task will run Go Dep if needed.
A Go environment must be selected before.
up:
- go: 1.10.1
- golang_depThis task will download the Node distribution from nodejs.org and activate it in your shell.
Optionally, it can also install the NodeJS dependencies.
up:
- node: 10.15.0To install the dependencies with NPM:
up:
- node: 10.15.0
npm: trueThis task will run a command if a condition is not met. The condition is expressed as a command.
up:
- custom:
name: Install shellcheck with Brew
met?: test -e /usr/local/Cellar/shellcheck
meet: brew install shellcheckThe project can define custom command in dev.yml that can be called with: bud <command>. Additional arguments are
also passed to the command: bud <command> <arg> <arg>....
commands:
test:
desc: Run tests for Python and Go
run: pytest -v python/tests && go test $(go list ./...)
lint:
desc: Run the linters
run: script/run_all_lintersbud test is not much shorter than calling script/test for example.
The idea is to introduce an indirection that will be easy to document and remember by being consistent across projects
regardless of the programming language used (rails test? pytest -v? npm test? go test ./...?).
$ bud lint
🐼 running script/lint
pkg/project/current.go:14:2:warning: unused variable or constant someVariable declared but not used (varcheck)The command bud open <name> will open a link about the project with the OS default handler (using open/xdg-open).
They are defined in dev.yml:
open:
staging: https://staging.myapp.com
doc: https://godoc.org/github.com/org/myappTip: dev open is enough if there is only one link.
github/gh: open the Github source code page for your checked out branchpullrequest/pr: open the Github pull-request page for your checked out branch