{ ".build_config": { "before_script": ["echo test"] }, ".build_script": "echo build script", "default": { "image": "ruby:2.5", "services": ["docker:dind"], "cache": { "paths": ["vendor/"] }, "before_script": ["bundle install --path vendor/"], "after_script": ["rm -rf tmp/"] }, "stages": ["install", "build", "test", "deploy"], "image": "foo:latest", "install task1": { "image": "node:latest", "stage": "install", "script": "npm install", "artifacts": { "paths": ["node_modules/"] } }, "build dev": { "image": "node:latest", "stage": "build", "needs": [ { "job": "install task1" } ], "script": "npm run build:dev" }, "build prod": { "image": "node:latest", "stage": "build", "needs": ["install task1"], "script": "npm run build:prod" }, "test": { "image": "node:latest", "stage": "build", "needs": [ "install task1", { "job": "build dev", "artifacts": true } ], "script": "npm run test" }, "deploy it": { "image": "node:latest", "stage": "deploy", "needs": [ { "job": "build dev", "artifacts": false }, { "job": "build prod", "artifacts": true } ], "script": "npm run test" } }