# This is a "plausible" infrastructure approach. # # I'm investigating what "decentralized" infrastructure would look like. # role :dvcs_host, label: 'DVCS Tools' role :jenkins_host, label: 'Jenkins Host' role :jenkins_slave, label: 'Jenkins Slave' role :perforce_client, label: 'Perforce Client' role :perforce_server, label: 'Perforce Server' role :zabbix_host, label: 'Zabbix Host' role :omnibus_build, label: 'Omnibus Build' task :host_public_code, global:true task :host_versioned_releases, global:true, depends_on: [:publish_binaries] task :push_to_build_repo, uses_roles: [:dvcs_host], global: true task :submit_to_workshop, uses_roles: [:perforce_client], depends_on: [:host_public_code] task :build_omnibus_ubuntu12, global: true, uses_roles: [:omnibus_build, :dvcs_host], depends_on: [:push_to_build] task :build_omnibus_ubuntu14, global: true, uses_roles: [:omnibus_build, :dvcs_host], depends_on: [:push_to_build] task :build_omnibus_centos6, global: true, uses_roles: [:omnibus_build, :dvcs_host], depends_on: [:push_to_build] task :push_to_build, uses_roles: [:dvcs_host], global: true, depends_on: [:trigger_build] task :trigger_build, uses_roles: [:dvcs_host], depends_on: [:push_to_build_repo] task :test_ubuntu12, global: true, uses_roles: [:dvcs_host], depends_on: [:build_omnibus_ubuntu12] task :test_ubuntu14, global: true, uses_roles: [:dvcs_host], depends_on: [:build_omnibus_ubuntu14] task :test_centos6, global: true, uses_roles: [:dvcs_host], depends_on: [:build_omnibus_centos6] task :publish_binaries, global: true, depends_on: [:test_ubuntu12, :test_ubuntu14, :test_centos6] node :osx_dev_machine, label: 'OS X Development Machine', provides_roles: [:dvcs_host, :perforce_client], runs_tasks: [:push_to_build_repo, :submit_to_workshop, :publish_binaries] node :build_master_linux, label: 'Build Master - Linux', provides_roles: [:dvcs_host, :jenkins_host, :zabbix_host], runs_tasks: [:trigger_build, :push_to_build] node :build_package_ubuntu12, label: 'Package Build - Ubuntu 12 LTS', provides_roles: [:dvcs_host, :omnibus_build, :jenkins_slave], runs_tasks: [:build_omnibus_ubuntu12] node :build_package_ubuntu14, label: 'Package Build - Ubuntu 14 LTS', provides_roles: [:dvcs_host, :omnibus_build, :jenkins_slave], runs_tasks: [:build_omnibus_ubuntu14] node :build_package_centos6, label: 'Package Build - CentOS 6', provides_roles: [:dvcs_host, :omnibus_build, :jenkins_slave], runs_tasks: [:build_omnibus_centos6] node :test_package_ubuntu12, label: 'Package Test - Ubuntu 12 LTS', provides_roles: [:dvcs_host, :jenkins_slave], runs_tasks: [:test_ubuntu12] node :test_package_ubuntu14, label: 'Package Test - Ubuntu 14 LTS', provides_roles: [:dvcs_host, :jenkins_slave], runs_tasks: [:test_ubuntu14] node :test_package_centos6, label: 'Package Test - CentOS 6', provides_roles: [:dvcs_host, :jenkins_slave], runs_tasks: [:test_centos6] node :workshop_perforce_com, label: 'workshop.perforce.com:1666', provides_roles: [:perforce_server], runs_tasks: [:host_public_code, :host_versioned_releases] environment :build, has_nodes: [ :build_master_linux, :build_package_centos6, :build_package_ubuntu12, :build_package_ubuntu14, :test_package_ubuntu12, :test_package_ubuntu14, :test_package_centos6 ] environment :development, has_nodes: [:osx_dev_machine] environment :workshop, has_nodes: [:workshop_perforce_com]