GitHub Actions’a Giriş
GitHub Actions, yazılım geliştirme sürecindeki tekrarlayan görevleri otomatikleştirmek için kullanılan bir araçtır. Bu görevler, testleri çalıştırmaktan, kodu üretime almaya kadar birçok işlemi kapsar. GitHub Actions, GitHub üzerinde entegre olduğu için, GitHub reposu üzerinden direkt olarak işlem yapabilir.
GitHub Actions’ın Temel Özellikleri
- CI/CD Desteği: Sürekli entegrasyon (CI) ve sürekli dağıtım (CD) işlemlerini otomatize edebilirsiniz.
- Otomatik İş Akışları: Kod push işlemlerinden, pull request’lere kadar pek çok olayda iş akışlarını tetikleyebilirsiniz.
- Farklı Ortamlar: Herhangi bir işletim sistemi (Linux, macOS, Windows) üzerinde çalışabilir.
GitHub Actions Nasıl Başlatılır?
GitHub Actions’ı projelerinizde kullanmaya başlamak için basit bir yapı kurmanız yeterli. İşte adımlar:
1. GitHub Reposuna Gitmek
GitHub Actions’ı kullanmaya başlamak için ilk adımınız GitHub üzerinde bir repo oluşturmak veya mevcut bir projeye gitmektir.
2. .github/workflows Dizini Oluşturun
Projenizde `.github` adlı bir klasör oluşturun ve bu klasörün içinde `workflows` adlı bir dizin oluşturun. İşte örnek dizin yapısı:
.
└── .github
└── workflows
└── ci.yml
3. İlk Workflow Dosyanızı Yazın
Şimdi, bir iş akışını tanımlayabilirsiniz. Bu iş akışları, YAML formatında yazılır ve genellikle `.yml` veya `.yaml` uzantılı olur. İşte basit bir örnek:
name: CI Workflow
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
Bu örnek, `main` dalına yapılan her push işleminde, Node.js kurulumu ve test çalıştırılması işlemlerini yapacak şekilde yapılandırılmıştır.
GitHub Actions Workflow Yapısı
GitHub Actions iş akışları, üç ana bileşenden oluşur:
1. Events (Olaylar): Workflow’un tetiklenmesini sağlayan olaylar. Örneğin, bir `push` işlemi, bir `pull request` ya da belirli bir zaman dilimi.
2. Jobs (İşler): İş akışlarında yapılan paralel veya sıralı işlemler. Her iş bir veya daha fazla adım içerir.
3. Steps (Adımlar): Bir iş akışının içerisinde sırasıyla çalışacak her bir komut veya işlem.
GitHub Actions’da CI/CD Kurulumu
GitHub Actions, özellikle CI/CD süreçlerinde oldukça kullanışlıdır. Sürekli entegrasyon ve dağıtım süreçlerini basitleştirmenize yardımcı olur.
CICD Örneği:
Bir sürekli entegrasyon süreci kurmak için sadece birkaç adım yeterlidir. Yukarıda verdiğimiz örneği bir süreklilik ve dağıtım (CD) süreciyle entegre edebilirsiniz.
Örnek olarak, testler başarılı olduktan sonra, prodüksiyon sunucusuna otomatik dağıtım yapabilirsiniz. GitHub Actions üzerinde bu tür işlemleri gerçekleştirmek için gerekli ortamları ve gizli anahtarları ayarlayarak süreci daha da otomatize edebilirsiniz.
GitHub Actions’ı İleri Düzey Kullanım
İleri düzey kullanımda, daha fazla özellikten yararlanabilirsiniz. Örneğin, matrix strategy kullanarak birden fazla platformda paralel testler çalıştırabilir veya çalışma süresini azaltmak için önceden yapılandırılmış Docker imajlarını kullanabilirsiniz.
Matrix Strategy:
Birden fazla ortamda testler çalıştırmak için aşağıdaki gibi bir yapı oluşturabilirsiniz:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14, 16]
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
Bu yapı, iki farklı Node.js sürümünde testlerinizi paralel olarak çalıştırmanızı sağlar.
Sonuç
GitHub Actions, yazılım geliştirme süreçlerinizi otomatikleştirmenin güçlü bir yoludur. CI/CD kurulumundan test otomasyonuna kadar birçok alanda kullanabilirsiniz. Basit iş akışları oluşturabileceğiniz gibi, daha karmaşık yapıları da entegre edebilirsiniz. GitHub Actions ile kodunuzun her zaman sağlam ve güncel olduğundan emin olabilirsiniz.
Unutmayın: Otomasyon sadece zamandan kazandırmakla kalmaz, aynı zamanda hataları en aza indirir ve projelerinizi daha verimli hale getirir.