GitHub Actions'ı kullanarak geliştirme görevlerini otomatikleştirme
Burada GitHub Actions'ı ve iş akışlarını tanıtacağız. Kullanabileceğiniz eylem türlerini ve bunları nerede bulabileceğinizi öğrenirsiniz. Ayrıca bu tür eylemlerin örneklerine ve bunların bir iş akışına nasıl uyum sağladıklarına da bakabilirsiniz.
GitHub, fikirden dağıtıma kadar olan süreyi kısaltır
GitHub, geliştiricilerden ve DevOps mühendislerinden oluşan ekiplerin uygulamaları hızlı bir şekilde derlemelerine ve dağıtmalarına yardımcı olmak üzere tasarlanmıştır. GitHub'da bu verimlilikleri sağlayan birçok özellik vardır, ancak bunlar genellikle iki kategoriden birine ayrılır:
- İletişim: GitHub'ın bir yazılım geliştirme projesi üzerinde bir geliştirici ekibinin iletişim kurmasını kolaylaştıran tüm yolları düşünün: çekme istekleri üzerinden kod incelemeleri, GitHub konuları, proje tahtaları, wiki'ler, bildirimler ve benzeri.
- Otomasyon: GitHub Actions, ekibinizin tümleştirmeden dağıtıma kadar yazılım geliştirme sürecinin her adımında iş akışlarını otomatikleştirmesine olanak tanır. Hatta çekme isteklerine etiket eklemeyi ve eski sorunları ve çekme isteklerini denetlemeyi otomatikleştirmenizi sağlar.
Bu özellikler birleştirildiğinde, binlerce geliştirme ekibine ilk fikirlerinden dağıtıma kadar geçen süreyi etkili bir şekilde azaltma olanağı sağlamıştı.
Geliştirme süresini azaltmak için iş akışı otomasyonlarını kullanma
Bu modülde otomasyona odaklanacağız. Ekiplerin tipik bir geliştirme ve dağıtım iş akışını tamamlamak için gereken süreyi azaltmak için otomasyonu nasıl kullanabileceğini anlamak için biraz zaman ayıralım.
Kod yazıldıktan sonra , ancak kodu hedeflenen amaç doğrultusunda güvenilir bir şekilde kullanabilmeden önce gerçekleşmesi gereken tüm görevleri göz önünde bulundurun. Kuruluşunuzun hedeflerine bağlı olarak, büyük olasılıkla aşağıdaki görevlerden birini veya daha fazlasını gerçekleştirmeniz gerekir:
- Kodun tüm birim testlerini geçtiğinden emin olun.
- Kaynak kodun kuruluşun standartlarını karşıladığından emin olmak için kod kalitesi ve uyumluluk denetimleri gerçekleştirin.
- Bilinen güvenlik sorunları için kodu ve bağımlılıklarını denetleyin.
- Birden fazla katkıda bulunanın, potansiyel olarak, yeni kaynak kodunu entegre ederek kodu oluşturun.
- Yazılımın tümleştirme testlerini geçtiğinden emin olun.
- Yeni derlemenin sürümünü belirtin.
- Yeni ikili dosyaları uygun dosya sistemi konumuna teslim edin.
- Yeni ikili dosyaları bir veya daha fazla sunucuya dağıtın.
- Bu görevlerden herhangi birinin geçip geçmediğini belirleyin ve sorunu çözüm için uygun kişiye veya takıma bildirin.
Zorluk, bu görevleri güvenilir, tutarlı ve sürdürülebilir bir şekilde gerçekleştirmektir. Bu işlem iş akışı otomasyonu için ideal bir iştir. GitHub'a zaten güveniyorsanız, github actions kullanarak iş akışı otomasyonunuzu ayarlamak isteyebilirsiniz.
GitHub Actions nedir?
GitHub Actions, GitHub'daki yazılım geliştirme iş akışındaki görevleri otomatikleştirmek için paketlenmiş betiklerdir. GitHub Actions'ı kuruluşunuzun gereksinimlerini karşılayan karmaşık iş akışlarını tetikleme amacıyla yapılandırabilirsiniz. Tetikleyici, geliştiriciler belirli bir dalda, belirli aralıklarla veya el ile yeni kaynak kodunu her denetleyişinde gerçekleşebilir. Sonuç, geliştirme süresinde önemli bir azalmaya yol açan güvenilir ve sürdürülebilir bir otomatik iş akışıdır.
GitHub Actions'a nasıl ulaşabilirsiniz?
GitHub Actions, yml veri biçimini kullanan betiklerden oluşur. Her bir depoda, ilk komut dosyanızı ayarlamaya başlamanın hızlı ve kolay bir yolunu sağlayan bir Eylemler sekmesi vardır. Harika bir başlangıç noktası olabileceğini düşündüğünüz bir iş akışı görürseniz, betiği eklemek ve kaynak yml'yi düzenlemeye başlamak için Yapılandır düğmesini seçmeniz yeterlidir.
Ancak Actions sekmesinde bulunan GitHub Actions eylemlerinin dışında şunları da yapabilirsiniz:
- GitHub Marketplace'te GitHub Actions'ı arayın. GitHub Marketi, iş akışınızı genişletecek araçlar keşfetmenizi ve satın almanızı sağlar.
- Açık kaynak projeler için arama yapın. Örneğin GitHub Actions kuruluşu, kullanabileceğiniz GitHub Actions içeren birçok popüler açık kaynak deposuna sahiptir.
- Sıfırdan kendi GitHub Actions örneklerinizi yazın. Bunları açık kaynak yapabilir, hatta GitHub Market'te yayımlayabilirsiniz.
Açık kaynak GitHub Actions'i kullanma
Birçok GitHub Actions açık kaynak ve bunları kullanmak isteyen herkes tarafından kullanılabilir. Ancak, herhangi bir açık kaynak yazılımında olduğu gibi, bunları projenizde kullanmadan önce dikkatli bir şekilde denetlemeniz gerekir. README, kullanım kuralları, katkıda bulunan dosya ve sorun şablonları gibi açık kaynak yazılımlarla önerilen topluluk standartlarına benzer şekilde GitHub Actions'ı kullanırken şu önerileri izleyebilirsiniz:
- Girişler, çıkışlar için eylemin
action.ymldosyasını gözden geçirin ve kodun dediğini yaptığınızdan emin olun. - Eylemin GitHub Market'te olup olmadığını denetleyin. GitHub Marketplace'ta olmayan bir eylemin bile geçerli olduğu durumlarda bu kontrolü yapmak değerlidir.
- Eylemin GitHub Marketi'nde doğrulanmış olup olmadığını denetleyin. Doğrulama, GitHub'ın bu eylemin kullanımını onayladığı anlamına gelir. Ancak, kullanmadan önce yine de gözden geçirmeniz gerekir.
- Git başvurusu, SHA veya etiket belirterek kullandığınız eylemin sürümünü ekleyin.
GitHub eylem türleri
Üç tür GitHub eylemi vardır: kapsayıcı eylemleri, JavaScript eylemleri ve bileşik eylemler.
Kapsayıcı eylemleriyle ortam, eylemin kodunun bir parçasıdır. Bu eylemler yalnızca bir GitHub'ın barındırdığı bir Linux ortamında çalıştırılabilir. Kapsayıcı eylemleri birçok farklı dili destekler.
JavaScript eylemleri koda ortamı içermez. Bu eylemleri yürütmek için ortamı belirtmeniz gerekir. Bu eylemleri bulutta veya şirket içinde bir VM'de (sanal makine) çalıştırabilirsiniz. JavaScript eylemleri Linux, macOS ve Windows ortamlarını destekler.
Bileşik eylemler , birden çok iş akışı adımlarını tek bir eylem içinde birleştirmenizi sağlar. Örneğin, bu özelliği kullanarak birden çok çalıştırma komutunu bir eylem halinde paketleyebilir ve ardından bu eylemi kullanarak paketlenmiş komutları tek bir adım olarak yürüten bir iş akışına sahip olabilirsiniz.
GitHub eyleminin anatomisi
Aşağıda, deponun git kullanıma alma işlemini gerçekleştiren bir eylem örneği verilmiştir. Eylemler /checkout@v1 bu eylem, iş akışındaki bir adımın parçasıdır. Bu adım, kullanıma alınan Node.js kodunu da oluşturur. Sonraki bölümde iş akışları, işler ve adımlar hakkında konuşacağız.
steps:
- uses: actions/checkout@v1
- name: npm install and build webpack
run: |
npm install
npm run build
Kapsayıcılı kod çalıştırmak için bir kapsayıcı eylemi kullanmak istediğinizi varsayalım. Eylem şu şekilde görünebilir:
name: "Hello Actions"
description: "Greet someone"
author: "octocat@github.com"
inputs:
MY_NAME:
description: "Who to greet"
required: true
default: "World"
runs:
uses: "docker"
image: "Dockerfile"
branding:
icon: "mic"
color: "purple"
inputs bölümüne dikkat edin. Burada adlı MY_NAMEbir değişkenin değerini alıyorsunuz. Bu değişken, bu eylemi çalıştıran iş akışında ayarlanır.
runs bölümünde, özniteliğinde uses değerini belirteceğinize dikkat edin. Bu değeri ayarladığınızda Docker görüntü dosyasının yolunu sağlamanız gerekir. Bu durumda Dockerfile. Burada Docker'ın ayrıntılarını kapsamayız, ancak daha fazla bilgi edinmek isterseniz Docker Kapsayıcılarına Giriş modülüne göz atın.
Son bölüm olan markalama, GitHub Market'te yayımlamaya karar verirseniz eyleminizi kişiselleştirir.
Eylem meta verilerinin tam listesini GitHub Actions için meta veri söz dizimi bölümünde bulabilirsiniz.
GitHub Actions iş akışı nedir?
GitHub Actions iş akışı, GitHub Actions dahil olmak üzere yazılım geliştirme yaşam döngüsü görevlerini otomatikleştirmek için deponuzda ayarladığınız bir işlemdir. bir iş akışıyla GitHub'da herhangi bir projeyi derleyebilir, test edebilir, paketleyebilir, yayımlayabilir ve dağıtabilirsiniz.
Bir iş akışı oluşturmak için, GitHub deponuzda .github/workflows dizininde bir .yml dosyasına eylemler eklersiniz.
Yaklaşan alıştırmada iş akışı dosyanız main.yml aşağıdaki örneğe benzer:
name: A workflow for my Hello World file
on: push
jobs:
build:
name: Hello world action
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: ./action-a
with:
MY_NAME: "Mona"
özniteliğine on: dikkat edin, değeri bu iş akışının ne zaman çalıştırılacağını belirten bir tetikleyicidir . Burada, deponuza bir gönderme olayı olduğunda bir çalıştırma tetikler. gibi tek olayları, gibi on: pushon: [push, pull_request]bir olay dizisi veya bir iş akışını zamanlayan veya iş akışının yürütülmesini belirli dosya, etiket veya dal değişiklikleriyle kısıtlayan bir olay yapılandırma eşlemesi belirtebilirsiniz. Eşleme şuna benzeyecektir:
on:
# Trigger the workflow on push or pull request,
# but only for the main branch
push:
branches:
- main
pull_request:
branches:
- main
# Also trigger on page_build, as well as release created events
page_build:
release:
types: # This configuration doesn't affect the page_build event above
- created
Türünü veya türlerini belirtmediğiniz sürece, aynı olay tüm aktivite türlerinde tetiklenir. Olayların ve etkinlik türlerinin kapsamlı bir listesi için GitHub belgelerindeki iş akışlarını tetikleyen olaylar konusuna bakın.
Bir iş akışı en az bir iş içermelidir. İş, bir çalıştırıcıyla bağlantılı olan iş akışının bir bölümüdür. Çalıştırıcı GitHub'da barındırılabilir veya şirket içinde barındırılabilir ve iş bir makinede veya kapsayıcıda çalıştırılabilir. Çalıştırıcıyı runs-on: özniteliği ile belirtin. Burada iş akışına bu işi üzerinde ubuntu-latestçalıştırmasını söylüyorsunuz.
Her işin tamamlanması gereken adımlar vardır. Örneğimizde, bu adım depoyu kopyalamak için actions/checkout@v1 eylemini kullanır. İlginç olan, uses: ./action-a değerinin, bir action.yml dosyasında oluşturduğunuz kapsayıcı eylemin yolunu göstermesidir.
Bu iş akışı dosyasının son bölümü, bu iş akışı için değişken değerini ayarlar MY_NAME . Kapsayıcı eyleminin adlı MY_NAMEbir giriş aldığını hatırlayın.
İş akışı söz dizimi hakkında daha fazla bilgi için bkz. GitHub Actions için iş akışı söz dizimi
İş akışlarında eylemlere başvurma
GitHub Actions'ta iş akışları oluştururken çeşitli kaynaklardan eylemlere başvurabilirsiniz. Bu eylemler iş akışlarınızdaki görevleri otomatikleştirmek için kullanılabilir. İş akışlarının eylemlere başvurabileceği birincil kaynaklar aşağıdadır:
Docker Hub'da yayımlanmış bir Docker kapsayıcı görüntüsü
İş akışları, Docker Hub'da Docker kapsayıcı görüntüleri olarak yayımlanan eylemlere başvurabilir. Bu eylemler kapsayıcılı hale getirilir ve eylemi yürütmek için gereken tüm bağımlılıkları içerir. Böyle bir eylemi kullanmak için iş akışı adımınızın özniteliğindeusesDocker görüntüsünü belirtirsiniz. Örneğin:steps: - name: Run a Docker action uses: docker://<docker-image-name>:<tag>Herhangi bir genel depo
Genel depolarda barındırılan eylemlere iş akışlarınızda doğrudan başvurabilirsiniz. Bu eylemler herkes tarafından erişilebilir ve özniteliğinde depo adı ve sürümü (Git başvurusu, SHA veya etiket)usesbelirtilerek kullanılabilir. Örneğin:steps: - name: Use a public action uses: actions/checkout@v3
[! ÖNEMLİ]
Daha iyi güvenlik için, yalnızca gibi
@v3bir etikete değil eylemlere başvururken tam işleme SHA'sı kullanın.
Bu, eylem daha sonra güncelleştirilse veya değiştirildiğinde bile iş akışınızın her zaman aynı kodu kullanmasını sağlar.
Örnek:uses: actions/checkout@c2c1744e079e0dd11c8e0af4a96064ca4f6a2e9e
-
İş akışı dosyanızla aynı depo
İş akışı dosyanızla aynı depoda depolanan eylemlere başvurabilirsiniz. Bu özellik, projenize özgü özel eylemler için kullanışlıdır. Bu tür eylemlere başvurmak için eylemin dizinine göreli bir yol kullanın. Örneğin:steps: - name: Use a local action uses: ./path-to-action
Diğer ayrıntılar için bkz. GitHub Actions için güvenlik sağlamlaştırma kılavuzu.
-
Kurumsal market
Kuruluşunuz GitHub Enterprise kullanıyorsa kuruluşunuzun özel marketinden eylemlere başvurabilirsiniz. Bu eylemler, kuruluşunuz tarafından yönetilir ve şirket içi standartlara uyumluluğu sağlar. Örneğin:steps: - name: Use an enterprise marketplace action uses: enterprise-org/action-name@v1
Uyarı
- Özel depolardaki eylemlere de başvurulabilir, ancak uygun kimlik doğrulaması ve izinler gerektirir.
- Eylemlere başvururken tutarlılığı sağlamak ve beklenmeyen değişikliklerden kaçınmak için her zaman bir sürüm (Git başvurusu, SHA veya etiket) belirtin.
Daha fazla bilgi için bkz . İş akışlarında eylemlere başvurma.
GitHub'da barındırılan ve şirket içinde barındırılan runners karşılaştırması
Koşucuların bir işle ilişkili olduğundan kısaca bahsettik. Çalıştırıcı, GitHub Actions çalıştırıcı uygulamasının yüklü olduğu bir sunucudur. Önceki iş akışı örneğinde, iş akışına görevler bloğunda, işin GitHub tarafından barındırılan ve runs-on: ubuntu-latest ortamında çalışan çalıştırıcı kullanılarak çalıştırılacağını söyleyen ubuntu-latest bir öznitelik vardı.
Koşucular söz konusu olduğunda, seçebileceğiniz iki seçenek vardır: GitHub'da barındırılan koşucular veya şirket içinde barındırılan koşucular. GitHub'da barındırılan bir çalıştırıcı kullanıyorsanız, her iş sanal ortamın yeni bir örneğinde çalışır. Tanımladığınız GitHub tarafından barındırılan çalıştırıcı türü, runs-on: {operating system-version} bu ortamı belirtir. Şirket içinde barındırılan runners ile şirket içinde barındırılan etiketi, işletim sistemini ve sistem mimarisini uygulamanız gerekir. Örneğin, Linux işletim sistemi ve ARM32 mimarisine sahip kendinden barındırılan bir çalıştırıcı, aşağıdaki belirtim şu şekilde olacaktır: runs-on: [self-hosted, linux, ARM32].
Her çalıştırıcı türünün avantajları vardır, ancak GitHub'da barındırılan çalıştırıcılar, sınırlı seçeneklerle de olsa iş akışlarınızı çalıştırmak için daha hızlı ve basit bir yol sunar. Şirket içinde barındırılan çalıştırıcılar, iş akışlarını kendi özel yerel ortamınızda çalıştırmanın yüksek oranda yapılandırılabilir bir yoludur. Şirket içinde veya bulutta şirket içinde barındırılan runners çalıştırabilirsiniz. Daha fazla işlem gücüne veya belleğe sahip özel bir donanım yapılandırması oluşturmak için şirket içinde barındırılan çalıştırıcıları da kullanabilirsiniz. Bu yapılandırma türü daha büyük işleri çalıştırmaya, yerel ağınıza kullanılabilir yazılım yüklemeye ve GitHub'da barındırılan runners tarafından sunulmayan bir işletim sistemi seçmenize yardımcı olur.
GitHub Actions kullanım sınırlarına sahip olabilir
GitHub planınıza ve çalıştırıcınızın GitHub tarafından barındırılan veya kendi sunucunuzda barındırılan bir sistem olup olmamasına bağlı olarak GitHub Actions'ın bazı kullanım sınırları vardır. Kullanım sınırları hakkında daha fazla bilgi için GitHub belgelerindeki Kullanım sınırları, faturalama ve yönetim konularına bakın.
GitHub barındırılan daha büyük işleyiciler
GitHub, iş akışları için daha fazla kaynak gerektiren daha büyük çalıştırıcılar sunar. Bu çalıştırıcılar GitHub'da barındırılır ve standart çalıştırıcılara kıyasla daha fazla CPU, bellek ve disk alanı sağlar. Yoğun kaynak kullanımlı iş akışlarını verimli bir şekilde işleyerek zorlu görevler için en iyi performansı sağlayacak şekilde tasarlanmıştır.
Koşucu boyutları ve etiketleri
Daha büyük runner'lar birden çok yapılandırmada kullanılabilir ve çeşitli iş akışı gereksinimlerini karşılamak için gelişmiş vCPU'lar, RAM ve SSD depolama sağlar. Bu yapılandırmalar aşağıdaki gibi senaryolar için idealdir:
- Büyük kod temellerini kapsamlı kaynak dosyalarıyla derleme.
- Tümleştirme ve uçtan uca testler dahil olmak üzere kapsamlı test paketleri çalıştırma.
- Veri analizi veya makine öğrenmesi görevleri için büyük veri kümelerini işleme.
- Karmaşık bağımlılıklarla veya büyük ikili çıkışlarla uygulama oluşturma.
- Yüksek performanslı simülasyonlar veya hesaplama modellemesi gerçekleştirme.
- Video kodlama, işleme veya diğer multimedya işleme iş akışlarını yürütme.
Daha büyük bir çalıştırıcı kullanmak için iş akışı dosyanızın özniteliğinde runs-on istenen çalıştırıcı etiketini belirtin. Örneğin, 16 vCPU ve 64 GB RAM ile bir çalışma sunucusu kullanmak istiyorsanız, runs-on: ubuntu-latest-16core değerini ayarlayın.
jobs:
build:
runs-on: ubuntu-latest-16core
steps:
- uses: actions/checkout@v2
- name: Build project
run: make build
Bu büyük koşucular, standart ubuntu-latest koşucularla aynı önceden yüklenmiş araçları ekleyerek mevcut iş akışlarıyla uyumluluğu korur.
Daha büyük koşucular için çalıştırıcı boyutları hakkında daha fazla bilgi için GitHub belgelerine bakın
Daha büyük koşucuları yönetme
GitHub, en iyi kaynak kullanımını ve maliyet yönetimini sağlayarak daha büyük koşucuları etkili bir şekilde yönetmeye yönelik araçlar sağlar. Büyük koşucuları yönetmenin bazı önemli yönleri şunlardır:
Kullanımı izleme
Daha büyük çalıştırıcıların kullanımını deponuzun veya kuruluş ayarlarınızın GitHub Actions kullanım sayfasından izleyebilirsiniz. Bu sayfada çalıştırılacak iş sayısı, toplam çalışma zamanı ve ilişkili maliyetler hakkında içgörüler sağlanır.
Erişimi yönetme
Daha büyük yürütücülere erişimi denetlemek için kuruluş veya depo düzeyinde ilkeler yapılandırabilirsiniz. Bu yapılandırma, yalnızca yetkili iş akışlarının veya ekiplerin bu yüksek kaynak çalıştırıcılarını kullanabilmesini sağlar.
Maliyet yönetimi
Daha büyük koşucular, kullanımlarına göre ek maliyetler doğurmaktadır. Maliyetleri yönetmek için aşağıdaki önerileri göz önünde bulundurun:
- Yalnızca yüksek kaynak gerektiren iş akışları için daha büyük yürütücüler kullanın.
- İş akışlarını iyileştirerek çalışma zamanını azaltın.
- Harcamaları izlemek için faturalama ayrıntılarını düzenli olarak izleyin.
İş akışlarını ölçeklendirme
İş akışlarınız daha büyük çalıştırıcıların sık kullanılmasını gerektiriyorsa aşağıdaki gibi ölçeklendirme stratejilerini göz önünde bulundurun:
- Öngörülebilir iş yükleri için kendi kendine barındırılan çalıştırıcıları kullanma.
- Yükü standart çalıştırıcılar arasında dağıtmak için iş akışlarını daha küçük işlere bölme.