Heroku + Docker + Bitbucket(git) ile CI(Sürekli Entegrasyon) nasıl proje deploy edilir?

Talha Tarık Küçük
5bayt
Published in
4 min readApr 28, 2020

Merhaba bu yazımda Heroku’da CI ile nasıl kod geliştirme ve canlıya alma yapacağımızdan bahsedeceğim. Daha önceki yazılarda Heroku üzerine MongoDB kurma, heroku üzerinde Python Flask API deploy etme gibi konulardan bahsedip uygulama yapmıştım. Bu yazıları da hemen aşağıda paylaşıyorum.

Yazılara göz attıysanız şimdi kendi oluşturduğum bir Docker Flask API’yi nasıl deploy edeceğime geçiyorum. Uygulamanızın docker image olarak bilgisayarınızda test edilip çalıştığına emin olduğunuzu varsayarak devam ediyorum.

Kısaca ne yaptığımdan bahsedeyim. Bir Flask API hazırladım. Dockerfile ile docker image ve container olarak çalıştırabiliyorum. Bunun için repo olarak Bitbucket’ı kullanıyorum. Bitbucket’ın harika bir arayüzü var. Repo olarak kullanmayı tercih edişimin sebebi bu. Aynı zamanda Bitbucket Pipeline adında CI(Sürekli Entegrasyon) servisine sahip. VSCode’da yazdığım proje checkinlediğim anda önce Bitbucket’daki repoya geçecek aynı anda Bitbucket Pipeline ile Heroku’da deploy olacak. Bunlar dakikalar içerisinde olacak…

Kapak resminde de belirttiğim gibi aşağıdaki aşamlar gerçekleşecek. Adım adım başlayalım.

LOKAL KODU → BITBUCKET →BITBUCKET PIPELINES → HEROKU

1.Adım

Heroku’da uygulama oluşturma ve Heroku API key alma.

Öncelikle Heroku’ya üye olduk ve yeni bir uygulama oluşturduk. Uygulama adını bir yere not ediyoruz.Daha sonra Bitbucket’da kullanacağız.

2.Adım

Uygulamayı açıyoruz ve Settings’e tıklıyoruz. “Config Vars” bölümüne geliyoruz ve orada “Reveal Config Vars” a tıkladığımız gibi aşağıdaki gibi açılan alana “ SPRING_PROFILE / heroku” şeklinde değişken ekliyoruz.

3.Adım

Sağ üstte profil resmine tıklayıp Account Settins’e gidiyoruz. Sayfada API key bölümünü buluyoruz. Reveal dediğimizde API KEY’i görürüz. Bunu bir yere not edelim. Daha sonra Bitbucket’da kullancağız.

4.Adım

Bitbucket’da içinde Dockerfile da bulunan(daha önceden lokalde çalıştığı test edilmiş) projenin reposuna giriyoruz. Burada adım adım Repository Settings → Repository Variables(PIPELINES) tıklıyoruz.

2 tane değişken ekleyeceğiz. Biri heroku app adımız diğer heroku api keyimiz.

HEROKU_API_KEY

HEROKU_APP_NAME

5.Adım

Heroku için değişkenlerimizi oluşturduk. Şimdi de Bitbucket Pipeline’ı aktif edelim ve projemiz her checkin sonrası heroku üzerinde otomatik olarak deploy olsun.

Repository Settings → Settings (PIPELINE) buradan Enable Pipelines yapıyoruz.

6.Adım

Pipeline aktif oldu ancak heroku üzerinde deployment için Bitbucket Pipeline’nın çalıştıracağız bitbucket-pipelines.yml dosyasını oluşturmamız gerekli. Bunun için Pipelines sekmesine tıklıyoruz. Biz docker image deploy edeceğimiz için Docker seçiyoruz ve bitbucket-pipelines.yml dosyası oluşturmak için Commit yapıyoruz daha sonra aşağıda belirttiğim gibi düzenleme yapalım.

Hiyerarşilere dikkat ederek yazalım…

Bu şekilde kaydettiğiniz anda artık deploy olmaya başlayacaktır. Checkinler sonrası deploy olma durumunu repo altındaki Deployments ve Pipelines alanından takip edebilirsiniz

Not: Ben en çok Python Flask projesinin Dockerfile’ını oluşturmakta zorlandım. Deployment sırasında sürekli hata aldım. Lokalde tam anlamıyla çalıştırdıktan sonra heroku üzerinden açtığımda hazırladığım API çalışır hale geldi. Benim Python Flask için hazırladığım Dockerfile aşağıdaki gibi çalıştı.

Başka bir yazıda görüşmek üzere… :)

--

--