Ana içeriğe geç

GitHub Codespaces’a Giriş

Her yerde kod yazmanıza, çalıştırmanıza ve dağıtmanıza olanak tanıyan geliştirme ortamı GitHub Codespaces’ı keşfedin.
· 10 dk. oku

Yapay Zeka ile Keşfedin

Bu yazıda, geliştiricilerin çalışma şeklini anında, bulut tabanlı bir geliştirme ortamı sunarak değiştiren GitHub Codespaces hakkında bilmeniz gereken her şeyi hızlıca aktaracağım. GitHub Codespaces yaşam döngüsüne bakarak sürecin farklı aşamalarını anlayacaksınız. Ayrıca, kendi çalışma tarzınıza ve ihtiyaçlarınıza uyması için codespace’inizi nasıl özelleştireceğinizi de inceleyeceğiz.

Git ve GitHub’a henüz aşina değilseniz endişelenmeyin. GitHub Kavramları kursumuzla bir depo (repository), README ve daha birçok temel öğeyi nasıl oluşturacağınızı öğrenebilirsiniz. Ayrıca sürüm kontrolünün temellerine başlamak için Git’in Temelleri kursumuzu da gözden kaçırmayın. 

GitHub Codespace nedir?

GitHub Codespace, geliştiricilerin doğrudan bulutta kod yazmasına, test etmesine ve hata ayıklamasına olanak tanıyan, karmaşık yerel kurulumlara duyulan ihtiyacı ortadan kaldıran bulut tabanlı bir geliştirme ortamıdır. Bir codespace oluşturulduğunda, bir sanal makine üzerinde çalışan ve projeye gerekli araçlar, kütüphaneler ve bağımlılıklarla önceden yapılandırılmış bir Docker konteyneri başlatır. GitHub Codespaces’ın dikkat çekici bir özelliği de Visual Studio Code gibi IDE’lerle entegre olmasıdır; bunu yazının ilerleyen kısımlarında inceleyeceğiz.

GitHub codespace operational workflow

Codespace iş akışı. Kaynak: GitHub

GitHub Codespaces Yaşam Döngüsünü Anlamak

GitHub Codespaces’ı anlamak, bir codespace’in yaşam döngüsünü anlamayı gerektirir. Her aşama, deneyiminizi veya kaynak kullanımınızı etkileyen belirli eylemleri içerir.

Oluşturma aşaması

Bir codespace oluştururken iki temel seçeneğiniz vardır: mevcut bir projeden başlamak veya yeni bir proje başlatmak. Mevcut bir projede çalışıyorsanız, genellikle mevcut bir depo dalından (branch) bir codespace oluşturursunuz ve codespace seçtiğiniz belirli dala bağlı olur. Yeni bir proje başlatıyorsanız, bunun yerine bir şablon kullanabilirsiniz. Şablonlar, bir projeyi başlatmanıza yardımcı olacak önceden yapılandırılmış bir ortam sağladığı için kullanışlıdır. 

Not olarak, şablonlar ağırlıklı olarak yeni projelere başlarken kullanılsa da, mevcut bir projede çalışıyor ve bir şablondan belirli ayarları kullanmak istiyorsanız, ortamınızı geliştirmek için bir şablonun yapılandırmasını uygulayabilirsiniz. Bu da bir seçenektir. 

Image showing the position of the menu button, and where to click to open up the GitHub Codespaces pageGitHub menüsünde Codespaces’ı bulma. Görsel: Yazar

Tasarım gereği, Git ve dallarla etkileşim ve tüm iş akışı, yerel makinenizde çalışırken sahip olacağınız iş akışına benzerdir. Her iki durumda da projenizi bir GitHub deposuna yayımlar ve değişikliklerinizi GitHub’a gönderdiğinizden emin olursunuz. 

Yeniden oluşturma aşaması

Yeni bir codespace oluşturmak, bir codespace’i yeniden oluşturmaya alternatif bir seçenektir. Ancak bazı durumlarda, bir codespace’i yeniden oluşturmanın avantajları vardır; bu nedenle farkı anlamaya değer. Örneğin, yeniden oluşturma, /workspaces dizinindeki çalışmalarınızı kaybetmeden konteyner yapılandırmasına güncellemeler uygulamanıza olanak tanır. Ayrıca, yeniden oluşturduğunuzda GitHub Codespaces önceki oluşturmalardan önbelleğe alınan imajları yeniden kullanır; bu da kütüphaneleri yeniden yükleme ihtiyacını ortadan kaldırarak süreci hızlandırır.

Image showing the GitHub Rebuild Container option from the command paletteKonteyneri yeniden oluşturma. Görsel: Yazar

Durdurma aşaması

Bir codespace’i durdurmamızın nedeni, ortam duraklatıldığında kaynak tüketilmemesi ve bunun maliyetleri yönetmeye yardımcı olmasıdır. Bir codespace çalışırken CPU ücreti doğduğunu, durdurulmuş bir codespace’te ise yalnızca depolama ücreti oluştuğunu unutmamalıyız. 

Bir codespace’i açıkça durdurmazsanız, hareketsizlik nedeniyle zaman aşımına uğrayana kadar çalışmaya devam edeceğini bilmek önemlidir. Zaman aşımı süresi, bir sonraki bölümde ele alacağım şekilde seçebileceğimiz bir özelleştirmedir. Ayrıca yalnızca bir tarayıcı sekmesini kapatmanın codespace’i durdurmadığını bilmek de önemlidir. Bu, insanların sık yaptığı bir hatadır.

Image showing how to stop a GitHub codespace

Bir codespace’i durdurma. Görsel: Yazar

Silme aşaması

Bir projede çalışmayı bitirdiğinizde, gereksiz depolama ücretlerinden kaçınmak için codespace’i silin. Çalışma alanınızı düzenli tutmak her zaman iyi bir pratiktir.

Silmeden önce değişikliklerinizi uzak bir dala gönderebilir veya kaydedilmemiş değişiklikleri tamamen göz ardı edebilirsiniz. Ayrıca, belirlenen bir süre boyunca etkin olmayan codespace’ler otomatik olarak silinir. Bu, geliştiricilerin depolamalarını ve maliyetlerini yönetmelerine yardımcı olacak şekilde tasarlanmıştır. Otomatik silmeden önceki süreyi seçmek, aşağıda ele alacağımız bir diğer özelleştirmedir.

Image showing how to delete a GitHub codespace

Bir codespace’i silme. Görsel: Yazar

GitHub Codespaces’ı Özelleştirme

GitHub Codespaces’ın harika yanlarından biri yüksek düzeyde özelleştirilebilir olmasıdır. Bir yapılandırma seçebilir veya belirli araçları tercih edebilirsiniz. Genel olarak, özelleştirmeleri iki kategoriye ayırabiliriz: çalışma alanınızı kendi çalışma tarzınıza uydurmak için tasarlanan özelleştirmeler ve kaynaklarınızı yönetmenize ve maliyetleri düşük tutmanıza yardımcı olmak için tasarlanan özelleştirmeler. 

Codespace ortamınızı kişiselleştirme

İlk olarak, ortamımızı nasıl kişiselleştirebileceğimizi düşünebiliriz. Geliştiriciler, kendi iş akışlarına uyan özelleştirmeleri takdir eder. Bu özelleştirmelerin çoğuna, aşağıdaki görselde gördüğünüz gibi profil resminize tıklayarak ayarlar menüsünü açtığınızda erişilir. 

Image showing the profile photo which will open up the GitHub sidebarAyarlar menüsünü açma. Görsel: Yazar

Settings Sync

Yapmak isteyebileceğiniz ilk şey, ayarlarınızın hem VS Code’un masaüstü sürümünde hem de web tabanlı istemcide tutarlı olduğundan emin olmaktır. Bunu, Settings Sync’i etkinleştirerek yapabilirsiniz; böylece bir yerde yaptığınız değişiklikler veya özelleştirmeler diğerine de uygulanır. Bu, ortamlar arasında gidip gelmesi gereken geliştiriciler için oldukça kullanışlıdır.

Image showing GitHub Settings Sync section under GitHub Codespaces settings

Settings Sync’i etkinleştirme. Görsel: Yazar

Bulut ayarlarıyla yerel ayarlarınız arasında farklılıklar varsa veya makinelerinizden biri bir süre çevrimdışı kaldıysa çakışmalar oluşabilir. Çakışma durumunda, yerel veya bulut ayarlarından biriyle üzerine yazmayı seçebilir ya da hangi ayarları koruyacağınıza daha ayrıntılı karar verebilirsiniz. 

Bir codespace’i yeniden adlandırma

GitHub, her yeni codespace’e bir görünen ad atar. Özellikle birden fazla codespace’iniz varsa, otomatik oluşturulan adı muhtemelen tutmak istemezsiniz. Genelde projenin amacını yansıtan ve gezinmeyi kolaylaştıran bir ad bulmaya çalışırım.  

GIF showing process of renaming a GitHub codefileBir codespace’i yeniden adlandırma. Görsel: Yazar

Görünen adın yanı sıra, her codespace’in değiştirilemeyen kalıcı bir adı olduğunu bilmelisiniz. Bu kalıcı ad aslında görünen adın sonuna eklenen rastgele oluşturulmuş karakterlerle birlikte halidir. Kalıcı bir adın amacı, codespace’e benzersiz bir tanımlayıcı sağlamaktır. GitHub komut satırı arayüzünü kullanmayı planlıyorsanız kalıcı ada dikkat edin. Herhangi bir nedenle GitHub destek ekibiyle iletişime geçmeniz gerekirse de işinize yarar. Kalıcı adı, codespace’i tarayıcıda açarak bulabilirsiniz; tarayıcıdaki alt alan adı kalıcı addır. 

Kabuğu (shell) değiştirme

Yeni bir codespace’i VS Code masaüstü uygulamasında açarsanız, açılan kabuk yerel ayarlarınıza bağlıdır. VS Code web istemcisini kullanırsanız varsayılan olarak bash açılır. Tercih ederseniz her zaman kabuğunuzu değiştirebilirsiniz; örneğin zsh veya fish ve bu değişikliği ayarlarınızda uygulayarak her seferinde tercih ettiğiniz kabuğun açılmasını sağlayabilirsiniz. 

Image showing the plus icon on the GitHub terminalKabuğu değiştirme. Görsel: Yazar

Varsayılan editörü ayarlama

Favori kod düzenleyicinizi de seçebilirsiniz. Örneğin, benim gibi Visual Studio Code’u çok seviyorsanız, ayarlarınızı her codespace oluşturduğunuzda veya açtığınızda VS Code’un başlatılacak şekilde yapılandırabilirsiniz. VS Code, JetBrains ve JupyterLab arasında seçim yapabilirsiniz.

Image showing the various options of opening a GitHub codespace by clicking on the codespace ellipsisVarsayılan editör seçme. Görsel: Yazar

Kaynakları ve performansı yönetme

Şimdi, kaynak tahsisi ve performansla ilgili bazı ayarlara bakalım.

Makine türünü değiştirme

Ortamınızı çalıştıran altyapı donanımını seçebilir veya değiştirebilirsiniz. Örneğin, daha fazla CPU, RAM veya depolamaya sahip bir makineye geçebilirsiniz. Böylece codespace’inizin üzerinde çalıştığınız görevi kaldıracak yeterli kaynağa sahip olmasını sağlarken aşırılığa da kaçmamış olursunuz. Kullandığınız uzak makine türüne dikkat etmek önemlidir; çünkü türler farklı faturalandırma katmanlarına aittir.  

Image of a dialog window with GitHub options to select a preferred machine typeTercih edilen makine türünü seçme. Görsel: Yazar

Yalnızca yayımlanmış codespace’lerin makine türünü değiştirebileceğinizi bilin; dolayısıyla bir GitHub deposuna bağlı olmayan bir şablondan bir codespace oluşturursanız makine türünü değiştirme seçeneğiniz olmaz. Ayrıca bir organizasyonun parçasıysanız, tabi olduğunuz ilkenin kurallarına bağlı olarak makine türünü değiştirme seçeneğiniz olmayabilir. 

Zaman aşımı süresini özelleştirme

Varsayılan olarak GitHub Codespaces, 30 dakika sonra otomatik olarak durur; ancak bunu kişisel ayarlarınızda ayarlayabilirsiniz. Maksimum zaman aşımı süresi dört saattir. Kaynak kullanımına dikkat etmek ve gereksiz yere boşta codespace çalışmasını önlemek önemlidir.

Image showing the default idle timeout section under the GitHub codespaces settingsZaman aşımı süresini değiştirme. Görsel: Yazar

Otomatik silmeyi yapılandırma

Etkin olmayan codespace’ler belirli bir sürenin ardından silinir. Bu, kaynakları serbest bırakmak için bir kolaylık olarak tasarlanmıştır. Durdurulan codespace’lerinizin silinmeden önce ne kadar süre saklanacağını yapılandırabilirsiniz; ancak maksimum saklama süresinin 30 gün olduğunu unutmayın. 

Image for setting the retention period for a GitHub codespaceSaklama süresini ayarlama. Görsel: Yazar

Coğrafi bölgeyi seçme

Profil ayarlarınızı ziyaret ederek GitHub Codespaces’ınızın barındırıldığı varsayılan bir coğrafi bölge belirleyebilirsiniz. Konumunuza daha yakın bir bölge seçmek performansı artırabilir; örneğin daha hızlı yükleme süreleri ve azaltılmış gecikme; ayrıca veri ikamet gerekliliklerine uyum için verilerinizin nerede depolandığını kişiselleştirmenize olanak tanır.

Image showing how to change the region of your GitHub codespacesBölgeyi değiştirme. Görsel: Yazar

GitHub.dev ve GitHub Codespaces

GitHub’a aşinaysanız GitHub.dev’i de duymuş olabilirsiniz ve GitHub.dev ile GitHub Codespaces arasındaki farkın ne olduğunu merak edebilirsiniz. 

Öncelikle, GitHub.dev hafif bir, tarayıcı tabanlı kod editörüdür; GitHub Codespaces ise kodunuzu çalıştırmanıza ve test etmenize olanak tanıyan eksiksiz bir geliştirme ortamı sağlar. Başka bir deyişle, GitHub.dev kapsam olarak sınırlı olduğundan temel olarak kod düzenlemeleri için tasarlanmıştır. 

GitHub Codespaces ayrıca VS Code gibi IDE’lerle entegre olur ve bulut ile yerel ortamlardaki ayarlara ilişkin değişiklikler, gördüğümüz üzere Settings Sync özelliğiyle senkronize edilebilir. Geliştiriciler, GitHub.dev ortamlarının kalıcı olmadığını da fark edecektir; yani depoya değişiklikleri elle işlemeyip (commit) göndermediğiniz sürece çalışmalarınız oturumlar arasında kaydedilmez. Öte yandan GitHub Codespaces’ta, codespace’i kapatsanız veya durdursanız bile değişiklikler kaydedilir. 

Tüm bunları bir arada düşündüğümüzde, GitHub Codespaces’ı daha büyük projeler ve daha karmaşık iş akışları için tercih etmeliyiz; çünkü kişisel makinenizde yapılandırma veya kaynak yönetimi gerektirmeden bir geliştirme ortamının gücünü sunar.  

ÖzellikGitHub.devGitHub Codespaces
AmaçGitHub depolarında barındırılan kodda hızlı düzenlemeler için tarayıcı tabanlı kod editörüTam özellikli, bulut tabanlı geliştirme ortamı
OrtamKurulum gerekmez; tarayıcı üzerinden hızlı erişimÖnceden yapılandırılmış araçlar, kütüphaneler ve bağımlılıklarla Docker tabanlı konteyner
IDE EntegrasyonuDahili editörle sınırlı düzenleme deneyimiVisual Studio Code, JetBrains ve JupyterLab desteği
ÖzelleştirmeAsgari düzeyde özelleştirmeYüksek düzeyde özelleştirilebilir
Kaynak YönetimiKaynak yönetimi gerekmezKullanıcılar CPU ve depolama ücretlerini yönetir, zaman aşımlarını ayarlar
DağıtımDağıtım için tasarlanmamıştırDağıtım iş akışları için tam destek
KullanılabilirlikHerhangi bir GitHub deposu için kullanılabilirAbonelik ve daha fazla kaynak gerektirir

Sonuç

Dağıtık ve esnek bir çalışma ortamına doğru ilerlerken, GitHub Codespaces gibi araçlar yazılım geliştirme geleceğini şekillendirmede büyük rol oynayacak. Özellikle GitHub Codespaces birkaç önemli sorunu çözüyor: Yerel makinenizin özelliklerinden bağımsız olarak anında kodlamaya başlamanıza olanak tanıyor; herhangi bir cihazdan bir geliştirme ortamına erişim sağlıyor; ve ekip üyeleriyle aynı ortamda işbirliği yapmanızı mümkün kılıyor. 

Daha fazla öğrenme için şu DataCamp makalelerini okuyun:

Son olarak, DataCamp podcast bölümünü dinleyin: GitHub COO’su Kyle Daigle ile Programlamanın Geleceği. Bu bölümde, yapay zekâ destekli kodlamanın durumu ve sektörün nasıl ilerlediği ele alınıyor.

Adejumo Ridwan Suleiman

Yazar

Adejumo Ridwan Suleiman

Python, R ve makine öğrenmesi alanlarında uzmanlığa sahip, deneyimli veri bilimi eğitmeni ve Biyostatistikçi.

Sıkça Sorulan Sorular

Bir depo veya dal başına en fazla kaç codespace oluşturabilirsiniz?

Yeterli depolama alanınız varsa, depo dalı başına sınırsız sayıda codespace oluşturabilirsiniz. Ayrılan kaynakları aştığınızda, yeni bir codespace oluşturmadan önce mevcut birini silmeniz gerektiğini belirten bir mesaj alırsınız.

Github.dev ile GitHub Codespaces arasındaki fark nedir?

GitHub.dev, kod düzenlemeleri için hafif bir tarayıcı editörüdür; GitHub Codespaces ise karmaşık iş akışları için tam özellikli, bulut tabanlı bir geliştirme ortamı sunar.

Konular

İlgili