SlideShare a Scribd company logo
1 of 13
Download to read offline
Development and
deployment with composer
and kite
What’s composer?
● Tool for dependency management in PHP applications
● Command line app written in PHP
● Manages packages on a per-project basis (unlike Apt, Yum etc.)
● Strongly inspired by similar projects in other languages like npm or bundler
● Suppose:
○ You have a project that depends on a number of libraries.
○ Some of those libraries depend on other libraries.
● Composer:
○ Enables you to declare the libraries you depend on.
○ Finds out which versions of which packages can and need to be installed, and installs them
(meaning it downloads them into your project).
“
composer: Basic Usage
● Everything related to composer is a kept in a
composer.json at project or package root
● Package names:
○ vendor/package-name
● Versions:
○ Semantic versioning: x.y.z[-stability]
■ x: Major version (potentially breaking changes)
■ y: Minor version (new, compatible functionality)
■ z: Patch version (bug fixes)
■ stability flag: Flag stating the stability of a
pre-release (e.g. 2.0.0-alpha)
○ Branch names, prefixed by dev- (e.g. dev-master)
○ Specific revisions (e.g. dev-master#9823928)
{
"name": "netresearch/project",
"require": {
"typo3/cms": "6.2.*"
},
"require-dev": {
"phpunit/phpunit": "^4.2"
}
}
composer: Version constraints
● Exact: 1.2.7
● Range:
○ >=1.0
○ >=1.0 <2.0 (AND)
○ >=1.0 <1.1 || >=1.2
○ 1.0 - 2.0 ≙ >=1.0.0 <2.1
○ 1.0.0 - 2.1.0 ≙ >=1.0.0 <=2.1.0
● Next significant release (tilde vs. caret):
○ ~1.2 ≙ >=1.2 <2.0.0
○ ~1.2.3 ≙ >=1.2.3 <1.3.0
○ ^1.2 ≙ >=1.2.0 <2.0.0
○ ^1.2.3 ≙ >=1.2.3 <2.0.0
○ ^0.3 ≙ >=0.3.0 <0.4.0 (security behaviour for pre-1.0 versions only)
composer: Example project
{
"repositories": [ { "type": "composer", "url": "https://composer.typo3.org" } ],
"name": "netresearch/project",
"description" : "Siamar typo3 root project",
"config": { "platform": { "php": "5.5" } },
"license": "proprietary",
"minimum-stability": "dev",
"prefer-stable": true,
"require": {
"typo3/cms": "~6.2",
"typo3-ter/realurl": "*"
}
}
composer: Example package
{
"name": "netresearch/kite",
"description": "Yet another build and deployment tool - inspired by TYPO3.Surf",
"license": "MIT",
"require": {
"symfony/expression-language": "~2.7",
"symfony/console": "~2.7",
"symfony/process": "~2.7",
"php": ">=5.4.0"
},
"autoload": { "psr-4": { "NetresearchKite": "src/" } },
"autoload-dev": { "psr-4": { "NetresearchKiteTest": "tests/" } },,
"bin": ["bin/kite"]
}
composer: Common commands
● composer init
○ Assistant to create the composer.json for a new project
● composer install [--optimize-autoloader]
○ Installs all packages at their state locked in composer.lock
○ If composer.lock isn’t present, it does the same as composer update
○ Generates autoloader
● composer update
○ Installs the latest package versions (matching the required constraints)
○ Uninstalls packages that are installed but not required anymore
○ Generates autoloader
● composer show [--installed]
○ Shows the installed packages and their versions
● composer require "package=1.2.7"
○ Adds package to require in composer.json and installs it
composer: The lock file
● composer.lock
○ Lists packages & versions
○ Replaces composer.json
○ Created by composer install (installs your dependencies)
○ Updated by composer update (updates your dependencies)
○ SHOULD be committed in your VCS and shipped with your releases
● Benefits
○ Everyone on a team works with exactly the same dependency versions
○ When deploying, all machines run exactly the same dependency versions
○ Users will never get dependency versions that you did not test with
● Cons
○ Hindering during development: The exact revision of dev packages is locked => rebase and
merge are painful
○ => Workaround: Advanced checkout, merge and deployment with kite
“
What’s kite?
● Yet another build automation tool inspired by TYPO3.Surf
● Everything in PHP: The tool itself as well as all configuration
● ECMA like variable access:
○ Sub tasks can access variables from parent but can set them on their own as well
○ Advanced logic during execution possible by using expressions
(utilizing Symfony Expression Language)
● Node based:
○ Unlimited number of remote targets possible
○ Nodes can be set globally or only for specific (sub) tasks
○ Remote tasks operate on all current nodes
● Dry-Run available by design (yet the tasks to include need to be configured)
● Originally planned and built as TYPO3 extension but later on ported to
generic composer package - installable globally or per project
kite: Task organization
● Tasks
○ Smallest, predefined steps (currently: answer, break, callback, choose, composer, confirm,
evaluate, exit, fs, git, include, iterate, output, phar, remoteShell, sub, tar, tryCatch)
● Workflows
○ Sets of tasks predefined in classes
○ Top level workflows can expose command line arguments and options
● Jobs
○ Available as commands on command line
○ Set of tasks and/or workflows defined in arrays (in arbitrary depth)
○ Configurable command line arguments and options
● Presets
○ Configuration presets (including f.i. common jobs)
● Configuration file (typo3conf/Kite.php, app/etc/kite.php, kite.php)
○ Defines the jobs; can load and override presets
kite: Common jobs
● kite [help command]
○ Gives a list of all available commands (jobs) or shows help for the given one
● kite checkout [--merge] branch
○ Goes through all composer packages and checks out the branch there if it’s available
○ After checking out the branch on a package it goes through all packages requiring it and
updates the version constraint to that branch
○ When --merge is passed, the currently checked out branch is merged into the branch to
checkout
● kite merge [--squash] [--message=”Message”] branch
○ Goes through all composer packages and merges the branch into the currently checked out
● kite package-foreach [--git] command
○ Runs a command for each composer package (optionally only dev packages)
● kite cc, kite ccr [stage]
○ Clears caches locally (cc) or on all nodes of a specific stage
kite: Deployment jobs
● kite deploy [stage]
○ Runs the deployment for all nodes on the given or selected stage
● kite rollout [stage]
○ Runs the deployment for all nodes for each stage until (including) the given stage
Links
- Composer homepage and documentation
http://getcomposer.org
http://slides.seld.be/ (lists slides for some advanced composer talks)
- Packagist
http://packagist.org
- Kite on github
https://github.com/netresearch/kite
- Kite on packagist
https://packagist.org/packages/netresearch/kite
- Kite task and workflow reference
https://github.com/netresearch/kite/blob/master/docs/reference.rst

More Related Content

What's hot

Clang Analyzer Tool Review
Clang Analyzer Tool ReviewClang Analyzer Tool Review
Clang Analyzer Tool Review
Doug Schuster
 
wxFormBuilder - Tutorial on “A GUI for making GUIs” for Python
wxFormBuilder - Tutorial on “A GUI for making GUIs” for PythonwxFormBuilder - Tutorial on “A GUI for making GUIs” for Python
wxFormBuilder - Tutorial on “A GUI for making GUIs” for Python
Umar Yusuf
 
Dynamic PHP web-application analysis
Dynamic PHP web-application analysisDynamic PHP web-application analysis
Dynamic PHP web-application analysis
ax330d
 

What's hot (20)

Cache in Chromium: Disk Cache
Cache in Chromium: Disk CacheCache in Chromium: Disk Cache
Cache in Chromium: Disk Cache
 
GNU Make, Autotools, CMake 簡介
GNU Make, Autotools, CMake 簡介GNU Make, Autotools, CMake 簡介
GNU Make, Autotools, CMake 簡介
 
Bsdtw17: lightning talks/wip sessions
Bsdtw17: lightning talks/wip sessionsBsdtw17: lightning talks/wip sessions
Bsdtw17: lightning talks/wip sessions
 
Clang Analyzer Tool Review
Clang Analyzer Tool ReviewClang Analyzer Tool Review
Clang Analyzer Tool Review
 
Inside debian-installer
Inside debian-installerInside debian-installer
Inside debian-installer
 
Introduction to the LLVM Compiler System
Introduction to the LLVM  Compiler SystemIntroduction to the LLVM  Compiler System
Introduction to the LLVM Compiler System
 
Composer namespacing
Composer namespacingComposer namespacing
Composer namespacing
 
wxFormBuilder - Tutorial on “A GUI for making GUIs” for Python
wxFormBuilder - Tutorial on “A GUI for making GUIs” for PythonwxFormBuilder - Tutorial on “A GUI for making GUIs” for Python
wxFormBuilder - Tutorial on “A GUI for making GUIs” for Python
 
The eID on Linux in 2015
The eID on Linux in 2015The eID on Linux in 2015
The eID on Linux in 2015
 
Dynamic PHP web-application analysis
Dynamic PHP web-application analysisDynamic PHP web-application analysis
Dynamic PHP web-application analysis
 
Eclipse - Installation and quick start guide
Eclipse - Installation and quick start guideEclipse - Installation and quick start guide
Eclipse - Installation and quick start guide
 
It gilde 20150209
It gilde 20150209It gilde 20150209
It gilde 20150209
 
Fluentd Hacking Guide at RubyKaigi 2014
Fluentd Hacking Guide at RubyKaigi 2014Fluentd Hacking Guide at RubyKaigi 2014
Fluentd Hacking Guide at RubyKaigi 2014
 
What is new in Go 1.8
What is new in Go 1.8What is new in Go 1.8
What is new in Go 1.8
 
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
 
嵌入式Linux課程-GNU Toolchain
嵌入式Linux課程-GNU Toolchain嵌入式Linux課程-GNU Toolchain
嵌入式Linux課程-GNU Toolchain
 
FFmpeg - the universal multimedia toolkit
FFmpeg - the universal multimedia toolkitFFmpeg - the universal multimedia toolkit
FFmpeg - the universal multimedia toolkit
 
Clang compiler `
Clang compiler `Clang compiler `
Clang compiler `
 
A Look at Command Line Swift
A Look at Command Line SwiftA Look at Command Line Swift
A Look at Command Line Swift
 
Labri 2021-invited-talk
Labri 2021-invited-talkLabri 2021-invited-talk
Labri 2021-invited-talk
 

Similar to Development and deployment with composer and kite

Don't Fear the Autotools
Don't Fear the AutotoolsDon't Fear the Autotools
Don't Fear the Autotools
Scott Garman
 
Dependency management with Composer
Dependency management with ComposerDependency management with Composer
Dependency management with Composer
Jason Grimes
 
Compiler design notes phases of compiler
Compiler design notes phases of compilerCompiler design notes phases of compiler
Compiler design notes phases of compiler
ovidlivi91
 

Similar to Development and deployment with composer and kite (20)

PHP Dependency Management with Composer
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with Composer
 
Autotools pratical training
Autotools pratical trainingAutotools pratical training
Autotools pratical training
 
Introduction to containers
Introduction to containersIntroduction to containers
Introduction to containers
 
Composer Best Practices
Composer Best PracticesComposer Best Practices
Composer Best Practices
 
Composer Best Practices
Composer Best PracticesComposer Best Practices
Composer Best Practices
 
Composer Best Practices.pdf
Composer Best Practices.pdfComposer Best Practices.pdf
Composer Best Practices.pdf
 
Composer Helpdesk
Composer HelpdeskComposer Helpdesk
Composer Helpdesk
 
Don't Fear the Autotools
Don't Fear the AutotoolsDon't Fear the Autotools
Don't Fear the Autotools
 
Dependency management with Composer
Dependency management with ComposerDependency management with Composer
Dependency management with Composer
 
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
 
Composer & Drupal
Composer & DrupalComposer & Drupal
Composer & Drupal
 
Autotools
AutotoolsAutotools
Autotools
 
UCL All of the Things (MeetBSD California 2014 Lightning Talk)
UCL All of the Things (MeetBSD California 2014 Lightning Talk)UCL All of the Things (MeetBSD California 2014 Lightning Talk)
UCL All of the Things (MeetBSD California 2014 Lightning Talk)
 
Linux Internals - Part I
Linux Internals - Part ILinux Internals - Part I
Linux Internals - Part I
 
Composer
ComposerComposer
Composer
 
Open source projects with python
Open source projects with pythonOpen source projects with python
Open source projects with python
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdf
 
Compiler design notes phases of compiler
Compiler design notes phases of compilerCompiler design notes phases of compiler
Compiler design notes phases of compiler
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
 
Purdue CS354 Operating Systems 2008
Purdue CS354 Operating Systems 2008Purdue CS354 Operating Systems 2008
Purdue CS354 Operating Systems 2008
 

Recently uploaded

Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
Epec Engineered Technologies
 
Hospital management system project report.pdf
Hospital management system project report.pdfHospital management system project report.pdf
Hospital management system project report.pdf
Kamal Acharya
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ssuser89054b
 
DeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakesDeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakes
MayuraD1
 

Recently uploaded (20)

PE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and propertiesPE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and properties
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
 
Hospital management system project report.pdf
Hospital management system project report.pdfHospital management system project report.pdf
Hospital management system project report.pdf
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptxHOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
 
DC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equationDC MACHINE-Motoring and generation, Armature circuit equation
DC MACHINE-Motoring and generation, Armature circuit equation
 
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
AIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech studentsAIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech students
 
A Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna MunicipalityA Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna Municipality
 
Computer Lecture 01.pptxIntroduction to Computers
Computer Lecture 01.pptxIntroduction to ComputersComputer Lecture 01.pptxIntroduction to Computers
Computer Lecture 01.pptxIntroduction to Computers
 
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptxOrlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
 
Moment Distribution Method For Btech Civil
Moment Distribution Method For Btech CivilMoment Distribution Method For Btech Civil
Moment Distribution Method For Btech Civil
 
Engineering Drawing focus on projection of planes
Engineering Drawing focus on projection of planesEngineering Drawing focus on projection of planes
Engineering Drawing focus on projection of planes
 
Introduction to Serverless with AWS Lambda
Introduction to Serverless with AWS LambdaIntroduction to Serverless with AWS Lambda
Introduction to Serverless with AWS Lambda
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . ppt
 
DeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakesDeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakes
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 

Development and deployment with composer and kite

  • 2. What’s composer? ● Tool for dependency management in PHP applications ● Command line app written in PHP ● Manages packages on a per-project basis (unlike Apt, Yum etc.) ● Strongly inspired by similar projects in other languages like npm or bundler ● Suppose: ○ You have a project that depends on a number of libraries. ○ Some of those libraries depend on other libraries. ● Composer: ○ Enables you to declare the libraries you depend on. ○ Finds out which versions of which packages can and need to be installed, and installs them (meaning it downloads them into your project). “
  • 3. composer: Basic Usage ● Everything related to composer is a kept in a composer.json at project or package root ● Package names: ○ vendor/package-name ● Versions: ○ Semantic versioning: x.y.z[-stability] ■ x: Major version (potentially breaking changes) ■ y: Minor version (new, compatible functionality) ■ z: Patch version (bug fixes) ■ stability flag: Flag stating the stability of a pre-release (e.g. 2.0.0-alpha) ○ Branch names, prefixed by dev- (e.g. dev-master) ○ Specific revisions (e.g. dev-master#9823928) { "name": "netresearch/project", "require": { "typo3/cms": "6.2.*" }, "require-dev": { "phpunit/phpunit": "^4.2" } }
  • 4. composer: Version constraints ● Exact: 1.2.7 ● Range: ○ >=1.0 ○ >=1.0 <2.0 (AND) ○ >=1.0 <1.1 || >=1.2 ○ 1.0 - 2.0 ≙ >=1.0.0 <2.1 ○ 1.0.0 - 2.1.0 ≙ >=1.0.0 <=2.1.0 ● Next significant release (tilde vs. caret): ○ ~1.2 ≙ >=1.2 <2.0.0 ○ ~1.2.3 ≙ >=1.2.3 <1.3.0 ○ ^1.2 ≙ >=1.2.0 <2.0.0 ○ ^1.2.3 ≙ >=1.2.3 <2.0.0 ○ ^0.3 ≙ >=0.3.0 <0.4.0 (security behaviour for pre-1.0 versions only)
  • 5. composer: Example project { "repositories": [ { "type": "composer", "url": "https://composer.typo3.org" } ], "name": "netresearch/project", "description" : "Siamar typo3 root project", "config": { "platform": { "php": "5.5" } }, "license": "proprietary", "minimum-stability": "dev", "prefer-stable": true, "require": { "typo3/cms": "~6.2", "typo3-ter/realurl": "*" } }
  • 6. composer: Example package { "name": "netresearch/kite", "description": "Yet another build and deployment tool - inspired by TYPO3.Surf", "license": "MIT", "require": { "symfony/expression-language": "~2.7", "symfony/console": "~2.7", "symfony/process": "~2.7", "php": ">=5.4.0" }, "autoload": { "psr-4": { "NetresearchKite": "src/" } }, "autoload-dev": { "psr-4": { "NetresearchKiteTest": "tests/" } },, "bin": ["bin/kite"] }
  • 7. composer: Common commands ● composer init ○ Assistant to create the composer.json for a new project ● composer install [--optimize-autoloader] ○ Installs all packages at their state locked in composer.lock ○ If composer.lock isn’t present, it does the same as composer update ○ Generates autoloader ● composer update ○ Installs the latest package versions (matching the required constraints) ○ Uninstalls packages that are installed but not required anymore ○ Generates autoloader ● composer show [--installed] ○ Shows the installed packages and their versions ● composer require "package=1.2.7" ○ Adds package to require in composer.json and installs it
  • 8. composer: The lock file ● composer.lock ○ Lists packages & versions ○ Replaces composer.json ○ Created by composer install (installs your dependencies) ○ Updated by composer update (updates your dependencies) ○ SHOULD be committed in your VCS and shipped with your releases ● Benefits ○ Everyone on a team works with exactly the same dependency versions ○ When deploying, all machines run exactly the same dependency versions ○ Users will never get dependency versions that you did not test with ● Cons ○ Hindering during development: The exact revision of dev packages is locked => rebase and merge are painful ○ => Workaround: Advanced checkout, merge and deployment with kite “
  • 9. What’s kite? ● Yet another build automation tool inspired by TYPO3.Surf ● Everything in PHP: The tool itself as well as all configuration ● ECMA like variable access: ○ Sub tasks can access variables from parent but can set them on their own as well ○ Advanced logic during execution possible by using expressions (utilizing Symfony Expression Language) ● Node based: ○ Unlimited number of remote targets possible ○ Nodes can be set globally or only for specific (sub) tasks ○ Remote tasks operate on all current nodes ● Dry-Run available by design (yet the tasks to include need to be configured) ● Originally planned and built as TYPO3 extension but later on ported to generic composer package - installable globally or per project
  • 10. kite: Task organization ● Tasks ○ Smallest, predefined steps (currently: answer, break, callback, choose, composer, confirm, evaluate, exit, fs, git, include, iterate, output, phar, remoteShell, sub, tar, tryCatch) ● Workflows ○ Sets of tasks predefined in classes ○ Top level workflows can expose command line arguments and options ● Jobs ○ Available as commands on command line ○ Set of tasks and/or workflows defined in arrays (in arbitrary depth) ○ Configurable command line arguments and options ● Presets ○ Configuration presets (including f.i. common jobs) ● Configuration file (typo3conf/Kite.php, app/etc/kite.php, kite.php) ○ Defines the jobs; can load and override presets
  • 11. kite: Common jobs ● kite [help command] ○ Gives a list of all available commands (jobs) or shows help for the given one ● kite checkout [--merge] branch ○ Goes through all composer packages and checks out the branch there if it’s available ○ After checking out the branch on a package it goes through all packages requiring it and updates the version constraint to that branch ○ When --merge is passed, the currently checked out branch is merged into the branch to checkout ● kite merge [--squash] [--message=”Message”] branch ○ Goes through all composer packages and merges the branch into the currently checked out ● kite package-foreach [--git] command ○ Runs a command for each composer package (optionally only dev packages) ● kite cc, kite ccr [stage] ○ Clears caches locally (cc) or on all nodes of a specific stage
  • 12. kite: Deployment jobs ● kite deploy [stage] ○ Runs the deployment for all nodes on the given or selected stage ● kite rollout [stage] ○ Runs the deployment for all nodes for each stage until (including) the given stage
  • 13. Links - Composer homepage and documentation http://getcomposer.org http://slides.seld.be/ (lists slides for some advanced composer talks) - Packagist http://packagist.org - Kite on github https://github.com/netresearch/kite - Kite on packagist https://packagist.org/packages/netresearch/kite - Kite task and workflow reference https://github.com/netresearch/kite/blob/master/docs/reference.rst