Apidog CLI API testlerini Drone CI’da çalıştırmak için Docker tabanlı bir pipeline adımı ekleyin: Node imajı kullanın, apidog-cli paketini yükleyin ve hedef ortam için apidog run komutunu çalıştırın. Apidog erişim token’ını Drone secret olarak saklayın ve pipeline’a from_secret ile enjekte edin.
Drone CI Nedir?
Drone, artık Harness’ın bir parçası olan açık kaynaklı, konteyner tabanlı bir CI/CD platformudur. CI/CD, her değişiklikte kodu otomatik olarak oluşturma, test etme ve teslim etme pratiğidir. Kavramı tazelemek isterseniz CI/CD nedir yazısına bakabilirsiniz.
Drone’da her pipeline adımı kendi Docker konteyneri içinde çalışır. Bu nedenle derleme ajanına önceden araç kurmanız gerekmez. Her adım için bir imaj seçersiniz ve Drone komutları o imaj içinde çalıştırır.
Pipeline tanımı deponun kök dizinindeki .drone.yml dosyasında bulunur:
kind: pipeline
type: docker
name: api-tests
steps:
- name: greeting
image: alpine
commands:
- echo hello
- echo world
Drone, commands listesini kabuk betiği olarak çalıştırır. Komutlardan biri sıfırdan farklı çıkış kodu döndürürse build başarısız olur. Varsayılan çalışma dizini deponuzun köküdür.
Neden API Testlerini Drone Adımında Çalıştırmalısınız?
API testleri, sözleşme kaymasını erken yakalar. Örneğin bir endpoint’in durum kodu, response şeması veya zorunlu alanları değişirse istemciler etkilenmeden önce pipeline başarısız olur.
Apidog bu iş akışına uygundur:
- Test senaryolarını Apidog uygulamasında görsel olarak oluşturursunuz.
- Ortam değişkenlerini, assertion’ları ve request zincirlerini Apidog’da yönetirsiniz.
- Aynı senaryoları CI’da Apidog CLI ile çalıştırırsınız.
API testlerini pipeline’lara yerleştirme konusunda daha genel bir çerçeve için API testi için CI/CD en iyi uygulamaları yazısına bakabilirsiniz.
Apidog; API tasarımı, hata ayıklama, test etme, mock ve dokümantasyon için hepsi bir arada bir platformdur. Drone tarafında ihtiyacınız olan parça ise CLI’dır: kayıtlı test senaryolarını tek komutla çalıştırır.
Çalıştıracağınız Apidog CLI Komutu
CI adımında önce CLI’ı yükleyin, sonra test senaryosunu çalıştırın:
npm install -g apidog-cli
apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -r cli
Bayraklar:
-
--access-token: Apidog erişim token’ı. -
-t: Çalıştırılacak test senaryosu kimliği. -
-e: Ortam kimliği. Base URL ve ortam değişkenleri buradan gelir. -
-r: Raporlayıcı. Geçerli değerler:cli,html,json,junit.
Sık kullanılan ek seçenekler:
-
-nveya--iteration-count: Senaryoyu belirli sayıda tekrarlar. -
-dveya--iteration-data: CSV/JSON dosyası ya da depolanmış veri kümesi kimliği ile veri odaklı test çalıştırır. -
--out-dir: Rapor çıktı dizinini belirler. -
--upload-report: Rapor özetini Apidog bulutuna gönderir. -
--on-error: Hata davranışını belirler. Değerler:continue,end,ignore. -
--project <id>ve--branch <name>: Belirli proje dalını hedefler.
Daha fazla seçenek için Apidog CLI tam kılavuzu ve komut satırından REST API test etme rehberlerine bakabilirsiniz.
Apidog Testleri İçin Eksiksiz .drone.yml
Aşağıdaki dosyayı deponuzun kök dizinine .drone.yml olarak ekleyin:
kind: pipeline
type: docker
name: apidog-api-tests
steps:
- name: run-api-tests
image: node:20-alpine
environment:
APIDOG_ACCESS_TOKEN:
from_secret: apidog_access_token
commands:
- npm install -g apidog-cli
- apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -r cli
trigger:
branch:
- main
event:
- push
- pull_request
Değiştirmeniz gereken değerler:
-
1234567: Apidog test senaryosu kimliğiniz. -
89012: Apidog ortam kimliğiniz. -
apidog_access_token: Drone’da oluşturacağınız secret adı.
Bu örnekte cli raporlayıcısı kullanıldığı için test sonucu doğrudan Drone build log’una yazılır.
Drone CI’da Apidog Token’ını Secret Olarak Saklama
API token’ını asla .drone.yml içine veya repoya yazmayın. Drone’da secret oluşturup pipeline’a runtime’da enjekte edin.
Pipeline içinde secret referansı şöyle görünür:
environment:
APIDOG_ACCESS_TOKEN:
from_secret: apidog_access_token
Burada apidog_access_token, secret’ın adıdır. Token değeri değildir.
Secret oluşturmanın iki yaygın yolu vardır.
Seçenek 1: Drone UI
- Drone’da repoyu açın.
- Settings bölümüne gidin.
- Secrets ekranını açın.
-
apidog_access_tokenadında yeni secret ekleyin. - Değer olarak Apidog erişim token’ınızı girin.
Seçenek 2: Drone CLI
drone secret add \
--repository your-org/your-repo \
--name apidog_access_token \
--data your-apidog-token
Drone CLI bayrakları sürüme göre değişebileceğinden kendi Drone CLI dokümantasyonunuzu kontrol edin.
Drone ayrıca drone encrypt ile depo içine şifreli secret bloğu ekleme seçeneği de sunar. Ancak çoğu ekip için UI veya drone secret add ile repository secret kullanmak daha basit bir başlangıçtır.
Apidog CLI kimlik doğrulaması hakkında daha fazla bilgi için Apidog CLI kimlik doğrulama rehberine bakabilirsiniz.
Çalıştırmaları Dal ve Etkinliğe Göre Sınırlama
Drone’da çalıştırma kapsamını iki seviyede kontrol edebilirsiniz:
- Pipeline seviyesinde
trigger - Adım seviyesinde
when
Pipeline seviyesinde trigger
Aşağıdaki örnek pipeline’ı yalnızca main dalındaki push ve pull_request event’leri için çalıştırır:
trigger:
branch:
- main
event:
- push
- pull_request
Adım seviyesinde when
Pipeline’ın tamamı çalışsın ama API test adımı yalnızca belirli koşullarda çalışsın istiyorsanız when kullanın:
steps:
- name: run-api-tests
image: node:20-alpine
environment:
APIDOG_ACCESS_TOKEN:
from_secret: apidog_access_token
commands:
- npm install -g apidog-cli
- apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -r cli
when:
branch:
- main
event:
- push
Drone; push, pull_request, tag, promote, rollback, cron ve custom gibi event türlerini destekler. Ayrıca glob desenleri ve include/exclude alt anahtarları kullanılabilir.
Yapıt Deposu Olmadan Test Raporlarını Gösterme
Drone’un yerleşik bir artifact hosting özelliği yoktur. Bu nedenle raporları göstermek için iki pratik seçeneğiniz vardır.
Seçenek 1: Sonuçları Build Log’a Yazdırın
En basit yöntem cli raporlayıcısını kullanmaktır:
commands:
- npm install -g apidog-cli
- apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -r cli
Bu yöntem çoğu ekip için yeterlidir. Geçen ve kalan assertion’lar doğrudan Drone log’unda görünür.
Seçenek 2: HTML Raporu S3’e Yükleyin
HTML raporu oluşturup kalıcı bir depolama alanına yükleyebilirsiniz. Drone’un resmi S3 eklentisi plugins/s3, dosyaları S3 veya S3 uyumlu depolama alanına yükler.
kind: pipeline
type: docker
name: apidog-api-tests
steps:
- name: run-api-tests
image: node:20-alpine
environment:
APIDOG_ACCESS_TOKEN:
from_secret: apidog_access_token
commands:
- npm install -g apidog-cli
- apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -r cli,html --out-dir reports
- name: upload-report
image: plugins/s3
settings:
bucket: my-bucket
region: us-east-1
source: reports/**/*
target: /apidog-reports
access_key:
from_secret: aws_access_key
secret_key:
from_secret: aws_secret_key
Bu örnekte:
-
-r cli,html: Hem log çıktısı hem HTML raporu üretir. -
--out-dir reports: Raporlarıreportsdizinine yazar. -
source: reports/**/*: Yüklenecek dosyaları seçer. -
target: /apidog-reports: S3 bucket içindeki hedef prefix’i belirler. - AWS kimlik bilgileri de
from_secretile alınır.
Rapor formatları hakkında daha fazla bilgi için Apidog CLI test raporları yazısına bakabilirsiniz.
Veri Odaklı Çalıştırmalar Ekleme
Bir senaryoyu farklı input set’leriyle çalıştırmak için -d veya --iteration-data kullanın. Bu seçenek CSV/JSON dosyası veya depolanmış veri kümesi kimliği alır.
Örnek:
commands:
- npm install -g apidog-cli
- apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -d ./data.csv -r cli
data.csv dosyasındaki her satır bir iteration olur. Sütun değerlerini Apidog senaryo değişkenleriyle eşleştirerek aynı test akışını farklı payload’lar veya kullanıcı kimlikleriyle çalıştırabilirsiniz.
Detaylı kullanım için Apidog CLI veri odaklı test rehberine bakabilirsiniz.
Diğer CI Araçlarıyla Aynı Desen
Drone’daki desen basittir:
- Temiz bir konteyner başlat.
-
apidog-cliyükle. -
apidog runkomutunu çalıştır. - Token’ı secret olarak enjekte et.
- Gerekirse raporu dış depolamaya yükle.
Bu yapı GitHub Actions, Azure Pipelines ve diğer CI sistemlerine de taşınabilir. Sözdizimi değişir, Apidog komutu aynı kalır.
Diğer CI örnekleri için:
Kapsam notu: Apidog CLI işlevsel API testleri ve sözleşme testleri için uygundur. Yüksek ölçekli load test için özel bir yük testi aracı kullanmanız gerekir.
Önerilen Uygulama Sırası
Yeni kurulum yapıyorsanız şu sırayı izleyin:
- Apidog’da test senaryonuzu oluşturun.
- Hedef ortamı tanımlayın.
- Test senaryosu kimliğini ve ortam kimliğini alın.
- Drone’da
apidog_access_tokensecret’ını oluşturun. -
.drone.ymldosyasını repoya ekleyin. - İlk çalıştırmada
-r cliile sonucu log’dan doğrulayın. - İhtiyaç varsa
html,jsonveyajunitraporlayıcılarını ekleyin. - HTML rapor gerekiyorsa S3 veya S3 uyumlu depolamaya upload adımı ekleyin.
Minimal üretim yapılandırması:
kind: pipeline
type: docker
name: apidog-api-tests
steps:
- name: run-api-tests
image: node:20-alpine
environment:
APIDOG_ACCESS_TOKEN:
from_secret: apidog_access_token
commands:
- npm install -g apidog-cli
- apidog run --access-token $APIDOG_ACCESS_TOKEN -t 1234567 -e 89012 -r cli
trigger:
branch:
- main
event:
- push
- pull_request
Testleri Görsel Olarak Oluşturun, CI’da Tek Komutla Çalıştırın
Bu yaklaşımda test yazımı ve test çalıştırma ayrıdır. Endpoint’leri, assertion’ları, ortam değişkenlerini ve test akışlarını Apidog’da yönetirsiniz. Drone ise aynı senaryoları konteyner içinde tek CLI komutuyla çalıştırır.
Bir ekip üyesi Apidog’da testi güncellediğinde sonraki Drone build’i güncel senaryoyu çalıştırır. Ayrı bir test kopyasını repoda senkron tutmanız gerekmez.
İlk test senaryonuzu oluşturmak için Apidog’u ücretsiz indirin, ardından yukarıdaki .drone.yml dosyasını deponuza ekleyin.
Sıkça Sorulan Sorular
Drone CI Nedir?
Drone, konteyner tabanlı bir CI/CD platformudur. Pipeline adımlarını Docker konteynerleri içinde çalıştırır ve yapılandırma .drone.yml dosyasında tutulur.
Drone CI Ücretsiz mi?
Drone’un çekirdeği açık kaynaklıdır ve kendi kendine barındırılabilir. Harness satın alımından sonra Drone, Harness CI Community Edition olarak da konumlanmıştır. Bu rehberdeki API test akışı için kendi kendine barındırılan açık kaynak sürüm çoğu ekip için yeterlidir.
Drone CI Açık Kaynak mı?
Evet. Drone açık kaynaklıdır ve kendi ortamınızda barındırabilirsiniz.
Drone CI Nasıl Kullanılır?
Deponuza .drone.yml dosyası eklersiniz. Drone, push veya pull request gibi event’lerde bu dosyayı okur ve tanımlanan adımları konteynerlerde çalıştırır. Yaygın adımlar arasında build, unit test, API test ve artifact upload bulunur.
Drone CI’da Secret Nasıl Saklanır?
Secret’ları Drone UI üzerinden veya drone secret add komutuyla eklersiniz. Pipeline içinde from_secret ile referans verirsiniz:
environment:
APIDOG_ACCESS_TOKEN:
from_secret: apidog_access_token
Token değeri YAML içinde görünmez.
Apidog Testlerini Betik Yazmadan CI’da Çalıştırabilir miyim?
Evet. Test senaryolarını Apidog uygulamasında görsel olarak oluşturur, Drone’da tek bir apidog run komutuyla çalıştırırsınız. Pipeline adımı için Node imajı, npm install -g apidog-cli ve senaryo/ortam kimliklerini içeren çalıştırma komutu yeterlidir.
Top comments (0)