trueWD Github Actions, Gitlab CI/CD ve Bitbucket Pipelines. Bunlar araştırmanız gerekenler. Bunlar size uzaktaki bir sunucuya SSH ile bağlanıp bazı komutları çağırmanızı sağlıyor (bu sadece bir özelliği, anlatacaklarım bununla ilgili olduğu için SSH örneği verdim). Bunları ise belli işlemler sonrası (push, merge vs) tetikleyebiliyorsunuz.
Mesela Bitbucket kullandığınızı varsayalım, reponuz orada. Bu repoyu önce sunucunuza klonluyorsunuz, çalışır hale getiriyorsunuz. Sonra Bitbucket'da repo ayarlarından bir tane SSH key oluşturuyorsunuz. Oluşan public keyi alıp sunucunuzda ~/.ssh/authorized_keys
içine ekliyorsunuz. Bu şekilde Bitbucket sizin sunucunuza erişebilir hale geliyor. Reponuza bitbucket-pipelines.yml dosyası ekliyorsunuz, içeriği şu şekilde:
pipelines:
default:
- step:
script:
- pipe: atlassian/ssh-run:0.2.2
variables:
SSH_USER: 'sshusername'
SERVER: '1.2.3.4'
PORT: '1059'
COMMAND: 'cd /path/to/project; git pull'
Pipeline tetikleyicisi olarak örneğin push seçtiniz diyelim. Bir push yaptığınızda repo güncellendikten sonra bu yml devreye giriyor, Bitbucket kendi içinde bir tane Docker ayağa kaldırıyor, içinde temel bir linux dağıtımı var. Bu dağıtım sizin oluşturduğunuz SSH keyi kullanıyor. Docker ayağa kalktıktan sonra yml içinde işlemleri yapıyor. Bizim dosyamıza göre 1.2.3.4:1059 sunucusuna SSH ile bağlanacak, /path/to/project klasörüne girecek ve git pull
komutunu çalıştıracak. Böylece en temel düzeyde bir deployment oluşturmuş oldunuz. Artık kendi bilgisayarınızda bir şeyleri güncelleyip commit attıktan sonra, commitleri pushladığınızda bunlar da otomatik sunucuya yansıyacak. atlassian/ssh-run:0.2.2
gibi bir çok pipe var, bunları kullanarak kendi CI/CD ortamınızı oluşturuyorsunuz. Bu çok kapsamlı bir konu ve bir şeyler yapmanın bir çok yolu var, bunu kendi projenize, kullandığınız geliştirme ortamı, dil vs göre siz belirliyorsunuz. Branchlere göre farklı işlemler vs de yaptırarak dev, staging, prod gibi ayrı ortamları da kontol edebiliyorsunuz.
Laravel ile ilgili olarak şunları inceleyin:
https://deployer.org/
https://github.com/lorisleiva/laravel-deployer