Message-ID: <609436665.2730.1485850560283.JavaMail.confluence@ip-10-127-227-164> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_2729_535594979.1485850560283" ------=_Part_2729_535594979.1485850560283 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html Using Composer

Using Composer

=20
=20
=20
=20

Keeping your system up-to-date is important to make sure it is running o= ptimally and securely. The update mechanism in eZ software is using th= e de facto standard PHP packa= ging system called Composer

This makes it easy to adapt package installs and updates to your workflo= w, allowing you to test new/updated packages in a development environment, = place the changes in your version control system (git, Subversion, Mercuria= l, etc.), pull in those changes to a staging environment and, when approved= , put them in production.

 

Composer is an opensource PHP packaging system to manage dependen= cies.

This makes it easy to adapt package installs and updates to your workflo= w, allowing you to test new/updated packages in a development environment, = put the changes in your version control system (git, Subversion, Mercurial,= etc.), pull in those changes on a staging environment and, when approved, = put it in production.

Installing Composer

Composer is a command-line tool, so the main way to install it is via co= mmand line from inside the root directory of the (eZ) software:

Composer download in current folder:
=20
php -r "readfile('https://getcomposer.org/installer');" | php=20

By doing it this way you will need to execute further Composer commands = using php composer.phar. If you'd rather prefer to install Com= poser globally on your machine instead of inside each and every project tha= t uses it, then follow these instructions in onl= ine Composer documentation.

Prerequisite to using composer with eZ Enterprise software

=20

This section describes features available only in eZ Enterprise.=

=20

Setting up Authentication tokens for access to commercial= updates

Out of the box Composer uses a packaging repository called packagist.or= g to find all open-source packages and their updates. Additional commer= cial packages are available for eZ Enterprise subscribers at up= dates.ez.no/bul/ (which is password-protected, you will need to set= up authentication tokens as described below to get access).

To get access to these updates log in to your service portal on support= .ez.no and look for the following on the "Maintenance and Supp= ort agreement details" screen:

  1. Click "Create token" (This requires the "Portal administrator" access l= evel.)
  2. Fill in a label describing the use of the token. This will allow you to= revoke access later.
    • Example, if you need to provide access to updates to a third party, a g= ood example would be "53-upgrade-project-by-partner-x"
  3. Copy the password, you will not get access to it again= !

After this, when running Composer to get updates as described below, you= will be asked for a Username and Password. Use:

  • as Username =E2=80=93 your Installation key found above on the "Maintenance and Support agreement details" page in the service port= al
  • as Password =E2=80=93 the token password you retrieved in st= ep 3.

Support agreement expiry

If your Support agreement expires, your authentication token(s) will no = longer work. They will become active again if the agreement is renewed, but= this process may take up to 24 hours. (If the agreement is renewed before = the expiry date, there will be no disruption of service.)


Optional: Save authentication information in auth.= json to avoid repeatedly typing it

Composer will ask to do this for you on updates, however if it is disabl= ed, you can create an auth.json file manually in one of t= he following ways:

Option A: Store your credentials in the project directory:=

=20
composer config http-basic.updates.ez.no <installation-key> =
<token-password>
=20

Option B: If you'd rather want to install it globally in <= a href=3D"https://getcomposer.org/doc/03-cli.md#composer-home" class=3D"ext= ernal-link" rel=3D"nofollow">COMPOSER_HOME directory for machine-w= ide use:

=20
composer config --global http-basic.updates.ez.no <installation=
-key> <token-password>
=20

Update workflow U= sing Composer

This section describes the best practice for using Composer, essentially= it suggests treating updates like other code/configuration/* changes on yo= ur project, tackling them on a development machine before staging them for = rollout on staging/production.  

1. Running composer update and version changes in development

Updating eZ software via Composer is nothing different then updating other projects via Composer, but for illustrat= ion here is how you update your project locally:

composer update
=20
php -d memory_limit=3D-1 composer.phar update --no-dev --prefer-di=
st
=20
Tip

This will load in all updated packages, from eZ as well as third-party l= ibraries, both used by eZ and other you may have added. When updating like = this it is recommended to take note of what was updated so you have an idea= of what you should test before putting the updates into production.

At this stage you might need to manually clear Symfony's prod environment class cache (cached interfaces and lazy services) in case th= e classes/interfaces in it have changed. This can be done in the following = way:

Optional prod class cache clearing
=20
rm -f app/cache/prod/*.php
=20

When the update has completed and local install is verified to work, mak= e sure to version changes done to the composer.lock file (if y= ou use a version control system like git). This file contains all details of which versions are currently used and makes sur= e the same version is used among all developers, staging and eventually pro= duction when current changes are approved for production (assuming you have= a workflow for this).

 

Tip

In large development teams make sure people don't blindly update and ins= tall third party components. This might easily lead to version conflicts on= composer.lock and can be tiring to fix up if happening freque= ntly. A workflow involving composer install and unit test execution on prop= osed changes can help avoid most of this, like the Pull Request workflow av= ailable via Github/Bitbucket.

production">2. Installing versioned updates on other deve= lopment machines and/or staging -> production

Installing eZ software packages via Composer is nothing different t= hen installing vanilla packages via Composer, and for illustration here is how you install versioned updates:

composer install (package installation)
=20
php -d memory_limit=3D-1 composer.phar install --no-dev --prefer-di=
st
=20
Tip

Here the importance of=20 composer.lock comes in, as this command will tell Composer to = install packages in exactly the same version as defined in this file. If yo= u don't keep track of=20 composer.lock, it will instead just install always the latest = version of a package and won't allow you to stage updates before moving tow= ards production.

General notes on use o= f Composer

Installing= additional packages via Composer

Requiring eZ software packages via Composer is also done in sa= me way as requiring vanilla packages via Compo= ser, and for illustration here is how you install the community-develop= ed EzPriceBundle:

composer install (package installation)
=20
php -d memory_limit=3D-1 composer.phar require --prefer-dist ezcomm=
unity/ez-price-bundle:~1.0.0@beta
=20

Dumping autolo= ad for better performance

For PHP 5.6 and up you'll get a notable performance improvement by makin= g composer dump optimized autoload array, this can be done on composer inst= all and update, but also using:

php -d memory_limit=3D-1 composer.phar dump-autoload --optimize

Best practice for Bundles

Best practice for Bundles is described in Symfony documentation under&nb= sp;Best Practices for Reusabl= e Bundles, with eZ bundles there is some notable exceptions:

Documentation
  • You may write your documentation using markdown (.md) if you prefer, ho= wever .rst is recommended if you plan to use writethedocs.org, a= s heavily used by many open source projects.
Git repository naming
  • You may omit vendor name in repository naming, assuming vendor name is = reflected in organization / user account it is attached to.
  • You may also choose to follow composer package naming on repository nam= e which is more relevant when trying to find a given package later.
Composer Metadata
  • For defining "type", the = following are at the moment known valid values:
    • ezplatform-bundle | Symfony bundles that uses eZ P= latform features
    • ezstudio-bundle | <= span style=3D"color: rgb(128,128,128);">Symfony bundles that uses eZ Platfo= rm Enterprise Edition features
    • symfony-bundle | Standard symfony bundles as descr= ibed in Symfony doc.
  • For eZ Publish (legacy) and eZ Publish Platform there where also:
=20
=20 =20
=20
------=_Part_2729_535594979.1485850560283 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: file:///C:/6024309786548cc4643a6f27bed017bb iVBORw0KGgoAAAANSUhEUgAAA7IAAACkCAIAAAAlhYW4AAAYU2lDQ1BJQ0MgUHJvZmlsZQAAWAmt WWdUFU2T7rlzEzlHyVmC5CyScxTJgnDJOVyCiEiSFxVQSaIIgigGQEBFkoooQUQQEQVEQUFEgkhS RERh+2J4v92z+2/nnJl5prq6pqq6eqqrB4BttKTw8GAMIwAhoVFkW2M9ASdnFwHCG4ADPIAZMAAC ySsyXNfGxgL8n8fXQYBQGp/LUGT9n2z/ewOTt0+kFwCIDWz29I70CoH4FgBYeq9wchQAuHZIF94f FU7B0xCzkqGCEP+gYL8tjIfaA1bPX1hki8fOVh8AvBoARFoSiewHAL0BpAvEePlBOfTesI051Dsg FHaLhXiXlz8J0rgbIY90SEgYBb+HWMLzP+T4/QcmkTz/yiSR/P7iX7bAnvDFBgGR4cGkA1sP/5+X kOBo6K+tQxBeaf3JJrbwzgr9VhQUZk7BtBBfD/W0soaYGeK7AdCi37jXP9rEHmIK/5hXpD70JWCH +Is3ycAcYh4AMNTRQfa6v7EYiQzRFj9GLyDK1O43diCH2f6WjwkMDbaixAeUg4n39zH9g3N8Ig33 QDrUARPoG2BkCjEcK8zVOH87R4ihnpjGmAAHK4jpIW6PDNpD0YEipz/OX59C3+IhR9tSdBaB9Glf shHFRsiD0oZEQrQlHxXyIm29ixPSlaL87UwgHfZFLbx9DAwhhu9FnXxC7X/rg/qHR+lR5FD448KD t+Ib6onm+AQbU+hCEJdFxuz50/dhFNmOQod+QwcDSWaUeIU6o7PhUTYUn1D0+QYsgD4wAAIgGp6e IAwEgoDeuYY5+PSrxQiQABn4AR8g85vyp4fjVksovO4BceATCIU8kX/76W21+oAYSP/5l/qrrwzw 3WqN2eoRBD7AN4RgubG7sJpYC3jVgacCVg2r/qefAMMfPfGGeAO8Cd4Iv/0PBXhBrYPhSQYB/wvN HLb5QOvI8Br6x4Z/5eE+4J7h3uEGcGO4YeAA3m9J+W2pe0AK+Y8GfyVbgjEo7ZdXfKDHQsHMHx6s GNRaGauH1YL6Q92x7FhuIINVgpboYrWhbcqQ+sd7FK2j/+r2ry//+P0PH0Vrgf+w8TedXpJe+bcW nn+sgiP5xxP/U8q/LQHAG3KZ/09O9Chai3aiD9Au9C7aAATQFrQR7UGbKfi3zkZb3vH7+zbbLY8G QRsC/vDIVcrNyP348/TXVhKkUDSgjAGM/yif2CgYf0A/LPwAOcDPP0pAF36FfQRMQ712SAsoyMkr AUD5plN4APhsu/WtRtif/ksjNwGwUwvG78q/NA9uAGqzAGAK+ZcmgsJppAhA82OvaHLML3lYyg0H qGGmYAVcgA8IAwlokwJQAZpABxgCM2AN7IAz2Ae97g9CoNb7QTxIBmkgA2SBU+AsKAEXwVVQBW6C BnAXPAAPQTfoAwPgNYyNSfARLIKvYB1BEAJCh7AgXAg/IopIIQqIGrILMUQsEFvEGfFA/JBQJBqJ Rw4jGUgOchYpRcqRG0gT8gDpQp4hw8g4MoMsI98xKIYWw4rhxYhhZDFqGF2MOcYO44bxw0Rg4jCp mBOYM5gLmGuYeswDTDdmADOG+YhZQQFKg7KjgqgMqobqo9aoC+qLktEENB3NRy+g1ehtONbP0TF0 Dl3D4rEsWAGsDIxPE6w91gsbgU3AZmLPYq9i67Ht2OfYcewidgNHh+PBSeE0cKY4J5wfbj8uDZeP u4yrw3XAuTOJ+4rH49nx4nhVODed8YH4g/hM/Dl8Df4+/hl+Ar9CIBC4CFIELYI1gUSIIqQRCgjX CC2EfsIk4RuRhshPVCAaEV2IocQUYj6xgniP2E+cIq5TMVKJUmlQWVN5Ux2gOklVRnWb6inVJNU6 NRO1OLUWtR11IHUy9RnqauoO6hHqzzQ0NEI06jS7aQJokmjO0FyneUQzTrNGy0wrSatP60obTXuC 9grtfdph2s90dHRidDp0LnRRdCfoyuna6N7QfaNnod9Bb0rvTZ9IX0hfT99PP89AxSDKoMuwjyGO IZ+hluEpwxwjFaMYoz4jiTGBsZCxiXGIcYWJhUmeyZophCmTqYKpi2mamcAsxmzI7M2cynyRuY15 ggVlEWbRZ/FiOcxSxtLBMsmKZxVnNWUNZM1grWLtZV1kY2ZTYnNgi2UrZGtmG2NH2cXYTdmD2U+y 32QfZP/Owcuhy+HDcYyjmqOfY5VzG6cOpw9nOmcN5wDndy4BLkOuIK5srgauUW4styT3bu793MXc Hdxz21i3aW7z2pa+7ea2VzwYHkkeW56DPBd5enhWePl4jXnDeQt423jn+Nj5dPgC+fL47vHN8LPw 7+IP4M/jb+GfFWAT0BUIFjgj0C6wKMgjaCIYLVgq2Cu4LiQuZC+UIlQjNCpMLawm7CucJ9wqvCjC L2IpEi9SKfJKlEpUTdRf9LRop+iqmLiYo9gRsQaxaXFOcVPxOPFK8REJOgltiQiJCxIvtuO3q20P 2n5ue58kRlJZ0l+yUPKpFEZKRSpA6pzUM2mctLp0qPQF6SEZWhldmRiZSpnxHew7LHak7GjYMS8r Iusimy3bKbshpywXLFcm91qeWd5MPkX+tvyygqSCl0KhwgtFOkUjxUTFRsUlJSklH6VipZfKLMqW ykeUW5V/qqiqkFWqVWZURVQ9VItUh9RY1WzUMtUeqePU9dQT1e+qr2moaERp3NRY0JTRDNKs0Jze Kb7TZ2fZzgktIS2SVqnW2C6BXR67zu8a0xbUJmlf0H6nI6zjrXNZZ0p3u26g7jXdeT05PbJend6q vob+If37BqiBsUG6Qa8hs6G94VnDN0ZCRn5GlUaLxsrGB43vm+BMzE2yTYZMeU29TMtNF81UzQ6Z tZvTmu8xP2v+zkLSgmxx2xJjaWaZazliJWoVatVgDaxNrXOtR23EbSJs7uzG77bZXbj7g628bbxt 5x6WPe57KvZ8tdOzO2n32l7CPtq+1YHBwdWh3GHV0cAxx3HMSdbpkFO3M7dzgHOjC8HFweWyy8pe w72n9k66KrumuQ66ibvFunXt494XvK/ZncGd5F7rgfNw9Kjw+EGyJl0grXiaehZ5Lnrpe532+uit 453nPeOj5ZPjM+Wr5ZvjO+2n5ZfrN+Ov7Z/vPxegH3A2YCnQJLAkcDXIOuhK0GawY3BNCDHEI6Qp lDk0KLQ9jC8sNuxZuFR4WvhYhEbEqYhFsjn5ciQS6RbZGMUKF8890RLR/0SPx+yKKYz5tt9hf20s U2xobM8ByQPHDkzFGcVdOog96HWwNV4wPjl+/JDuodIEJMEzoTVRODE1cTLJOOlqMnVyUPKTFLmU nJQvhx0P307lTU1KnfjH+J/KNPo0ctrQEc0jJUexRwOO9h5TPFZwbCPdO/1xhlxGfsaPTK/Mx8fl j585vnnC90TvSZWTxVn4rNCswWzt7Ks5TDlxORO5lrn1eQJ56XlfTrmf6spXyi85TX06+vTYGYsz jQUiBVkFP876nx0o1CusKeIpOla0es77XH+xTnF1CW9JRsn38wHnX5Yal9ZfELuQfxF/MebihzKH ss5LapfKL3Nfzrj880rolbGrtlfby1XLyyt4Kk5WYiqjK2euuV7rqzKoaqyWqS6tYa/JuA6uR1+f veFxY/Cm+c3WWrXa6luit4rqWOrS65H6A/WLDf4NY43Ojc+azJpab2verruz486Vu4J3C5vZmk/e o76Xem+zJa5l5X74/bkHfg8mWt1bX7c5tb1o393e22He8eih0cO2Tt3Olkdaj+52aXQ1PVZ73NCt 0l3fo9xT90T5SV2vSm/9U9WnjX3qfbef7Xx2r1+7/8Fzg+cPX5i+6B6wGng2aD/4csh1aOyl98vp 4eDhpVcxr9ZfJ43gRtJHGUfz3/C8ufB2+9uaMZWx5nGD8Z53e969nvCa+Pg+8v2PydQPdB/yp/in yqcVpu/OGM30ze6dnfwY/nF9Lu0T06eieYn5Wws6Cz2LTouTS+SlzeXMz1yfr3xR+tK6YrPy5mvI 1/XV9G9c366uqa11fnf8PrW+/wfhx5mf23/e3jDfGNkM2dwMJ5FJW2sBuDoAGF9fAJavAEDnDABL HwDU9L9qri0OuMRAIA/EWLhakAMuIBeMwFyeiIxj7DHDqB8WxdbhIvEaBFrCHHGEqoe6laadtpPu Cf0QoyJTCQsL6zG2DY4ELpQ7lYeJt5RfWeCRkK8IQbRSfI/EhmSVtKvMrGyA3KyCn+K4srNKt5qq eokmsnOv1nVtRMdaN0/vtQGf4W4jD+MwkyTTbLOL5nUWXZajVss2xN0Ctmp7rO387Q87lDg2OPU6 T+9FXLncFPdZuHt7HCTleVZ6tXoP+yz5UfvzBkgHqgUZBduFkELDwg6GH43II5dGXotqim6Pebb/ deybA+Nx7w9Oxc8cmk2YS/yUNJ88nzJ/eD514Z+FtE9HZo9OH5tKn874mLlw/OuJzSzqbI4csVyV PNNTPvmZp2+deVWwWShUpH+OVHyo5Mz5G6VdF95eXLlEdZn7itRVjXLTCsdKr2thVQeqU2DE5t0o ullW23JrtG6tgalRtEn5ts4do7smzUb3dFrU78s9UG61aQtoT+rIe1jWWfOorqvh8a3u6p6yJwW9 6U/j+gKeOfYbPJd/wTOAH5gfHBy6+/LC8JFX/q+NRoRGNkdH3jS9zR+LGrd9JzfBMPHpfc9kyYfA KYWp1emGGfKsxOzLj8lzonMdnzw+rc+XLpgufF4sWbJY+rFc/Zn0heNL78qRr2pfR1adV/u+WX97 vhb4neZ79/qVH8U/qzaebm7C8UdhbcYDlIEjSAH14AuihxRhMJgozDIaj2XG3sYFw9XPLKGOeJjK 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 Zj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxy ZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6 Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9u Pjk0NjwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lv bj4xNjQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAg PC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4Ks8psAQAALIVJREFUeAHt3Xt8VNW58PE1mUxSEiFBCQJB IFwEQ7wEUQRBaoSCVnoUpEVbEYttpVY8FNsDPYgVeV9sBXnFtnA8piK+Ki2CtvEC1RMLpGCUgkDK TSABkwAJkgkwiZnJ5Txr75nJJDMTMgNkcPjtj072rL32s5713fnjyWJNYmloaFA+x5YtWwYPHuzT wCkCCCCAAAIIIIAAAtEp4Fv6xkTnFJkVAggggAACCCCAAAKhCFAWh6JFXwQQQAABBBBAAIEoFaAs jtIHy7QQQAABBBBAAAEEQhGgLA5Fi74IIIAAAggggAACUSpAWRylD5ZpIYAAAggggAACCIQiQFkc ihZ9EUAAAQQQQAABBKJUgLI4Sh8s00IAAQQQQAABBBAIRYCyOBQt+iKAAAIIIIAAAghEqQBlcZQ+ WKaFAAIIIIAAAgggEIqA9de//rVv/9LS0m7duvm2tHBevHHFi6s+2LS77tpBPeNa6Oe5VFZYbOvY weosXrF48fr97TKv7W71XArv69kHPPsI/pm7Y/pfMFvKti5Z+GL+4Q6Z13Y9y+kHG8Fs35o9Z3r2 J98q/ciVf7A+PdMmT8hZfPq/nq/5dIMrPj3u8kSlahx/XvDV+xtqU69wvv5/awo7WAd2b+XPSV8d KlbJHVw7Vle/+rIrJj2ue4eWkzGvmnfF6DSeDjBcsPYmoU9WrXu9etXLNXnvOysT1JW9YpUqzHnq wQU7ht8xpMN5BW2SBm8QQAABBBBAIBoEfEvfVlZBAaddtnLRmjw5chbllwXs4NtYtmLGXT+ekeOS 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 ------=_Part_2729_535594979.1485850560283--