DEV Community

Cover image for Drone CI'da Apidog CLI API Testleri Nasıl Çalıştırılır
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Drone CI'da Apidog CLI API Testleri Nasıl Çalıştırılır

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.

Apidog'u bugün deneyin

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
Enter fullscreen mode Exit fullscreen mode

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:

  1. Test senaryolarını Apidog uygulamasında görsel olarak oluşturursunuz.
  2. Ortam değişkenlerini, assertion’ları ve request zincirlerini Apidog’da yönetirsiniz.
  3. 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
Enter fullscreen mode Exit fullscreen mode

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:

  • -n veya --iteration-count: Senaryoyu belirli sayıda tekrarlar.
  • -d veya --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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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

  1. Drone’da repoyu açın.
  2. Settings bölümüne gidin.
  3. Secrets ekranını açın.
  4. apidog_access_token adında yeni secret ekleyin.
  5. 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Bu örnekte:

  • -r cli,html: Hem log çıktısı hem HTML raporu üretir.
  • --out-dir reports: Raporları reports dizinine yazar.
  • source: reports/**/*: Yüklenecek dosyaları seçer.
  • target: /apidog-reports: S3 bucket içindeki hedef prefix’i belirler.
  • AWS kimlik bilgileri de from_secret ile 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
Enter fullscreen mode Exit fullscreen mode

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:

  1. Temiz bir konteyner başlat.
  2. apidog-cli yükle.
  3. apidog run komutunu çalıştır.
  4. Token’ı secret olarak enjekte et.
  5. 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:

  1. Apidog’da test senaryonuzu oluşturun.
  2. Hedef ortamı tanımlayın.
  3. Test senaryosu kimliğini ve ortam kimliğini alın.
  4. Drone’da apidog_access_token secret’ını oluşturun.
  5. .drone.yml dosyasını repoya ekleyin.
  6. İlk çalıştırmada -r cli ile sonucu log’dan doğrulayın.
  7. İhtiyaç varsa html, json veya junit raporlayıcılarını ekleyin.
  8. 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)