Satis: Composer ve Private Depolar

Sorun

composer süper bir araç. Hayatımızın her alanında kullanmak istiyoruz. Artık marketten bira istediğimde ben istemeden yanında cips ve sigara vermesini de bekliyorum (en azından benim için required). Neyse kısaca bu yazımda sizlere süper gizli, şirket dışına çıkmaması gereken kodlarımızı private (özel) depolarımızla beraber composer’da nasıl kullanacağımızı anlatacağım.

Let the game begin

Böyle bir işe girişecekseniz bilgisayarınızda composer vardır. O yüzden onu atlıyorum. Şimdi öncelikle, bu işleri satis denen bir nane ile hallediyoruz. Bir satis projesi yaratmamız gerekiyor

composer.phar create-project composer/satis --stability=dev

Güzel!! Projemiz hazır. Şimdi dünyaya açmak istemediğiniz şirket depolarımızı ekleyeceğiz.

Satis konfigurasyon dosyası

satis‘in ne işler çevirmesi gerektiğini anlatan bir konfigürasyon dosyası hazırlamalıyız. Buna herhangi bir isim verebilirsiniz, ama ben buna satis.json diyeceğim.

satis.json:

{
    "name": "Bizim Depo",
    "homepage": "http://paketler.sirket.com",
    "repositories": [
        { "type": "vcs", "url": "http://github.com/bizim_sirket/privatedepo" },
        { "type": "vcs", "url": "http://svn.sirket.org/private/depo" },
        { "type": "vcs", "url": "http://github.com/bizim_sirket/privatedepo2" }
    ],
    "require-all": true
}

Burada gördüğümüz require-all bu depolardaki tüm versiyonları kullan anlamına geliyor. İsterseniz tek tek istediğiniz versiyonları burada seçtirebilirsiniz. İstediğiniz versiyonların composer tarafından görülmesini engelleyebilirsiniz. Mesela;

{
    "name": "Bizim Depo",
    "homepage": "http://paketler.sirket.com",
    "repositories": [
        { "type": "vcs", "url": "http://github.com/bizim_sirket/privatedepo" },
        { "type": "vcs", "url": "http://svn.sirket.org/private/depo" },
        { "type": "vcs", "url": "http://github.com/bizim_sirket/privatedepo2" }
    ],
    "require": {
        "taciroglu_yazilim/paket": "*",
        "taciroglu_yazilim/paket2": "*",
        "taciroglu_yazilim/kisa_winston": "2.0.0"
    }
}

Anlaşılabileceği gibi burada tüm versiyonları istiyorsak * kullanıyoruz. Spesifik olarakta versiyonları belirtebiliyoruz.

Bu konuda anlaştıysak bu konfigurasyon dosyasını çalıştırmamız gerekiyor. İşte komut:

php bin/satis build <konfigurasyon dosyasi> <build dir>

Mesela:

php bin/satis build satis.json web/

Burada yaptığımız konfigurasyonlarla oluşan olaylar web klasörü altına gidecek.

Bu komutu bir cronjob olarak sunucunuza ekleyebilirsiniz ve paketlerinizin sürekli güncel kalmasını sağlayabilirsiniz. Veya kullandığınız VCS sağlayıcısına göre post-hook tarzı birşey ekleyebilirsiniz.

satis bize bir web uygulaması yarattı. Şimdi ben bu web uygulamasını çalıştıracağım.

En basitinden php‘nin development server’ını kullanacağım. (PHP 5.4 ve üstünü ister). Siz çabalayıp Apache, nginx gibi birşeyler de kullanabilirsiniz.

php -S localhost:8000 -t web/

Tamamdır. Browser üzerinden localhost:8000 diye girebilirsiniz.

Kullanım

Paketlerimizi paketler.sirket.com içine atmıştık. Şimdi bunu composer.json dosyamda belirteceğim;

{
    "repositories": [ { "type": "composer", "url": "http://paketler.sirket.com/" } ],
    "require": {
        "taciroglu_yazilim/paket": "1.2.0",
        "taciroglu_yazilim/paket2": "3.2-dev",
        "taciroglu_yazilim/kisa_winston": "dev-master"
    }
}

Bu kadar

Daha detaylı için satis dökümantasyonuna bir bakabilirsiniz.

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax