logo
eng-flag

CircleCI Notları ve İpuçları

İçindekiler

  1. CircleCI Temelleri
  2. CircleCI Yapılandırması
  3. CircleCI Orbs
  4. CircleCI İş Akışları
  5. CircleCI İşler ve Adımlar
  6. CircleCI Yürütücüler
  7. CircleCI Ortam Değişkenleri
  8. CircleCI Önbellekleme
  9. CircleCI Yapıtları
  10. Docker ile CircleCI
  11. Kubernetes ile CircleCI
  12. CircleCI Onay İşleri
  13. CircleCI API
  14. CircleCI En İyi Uygulamalar
  15. CircleCI Sorun Giderme

CircleCI Temelleri

CircleCI Nedir?

CircleCI, yazılımın derleme, test ve dağıtımını otomatikleştiren bir sürekli entegrasyon ve sürekli dağıtım platformudur.

Temel Bileşenler

  • .circleci/config.yml dosyası: CI/CD hattını tanımlar
  • İş Akışları: İşleri düzenler
  • İşler: Adımların koleksiyonları
  • Adımlar: Bireysel komutlar veya eylemler
  • Orbs: Yeniden kullanılabilir CircleCI yapılandırma paketleri

CircleCI Yapılandırması

Temel .circleci/config.yml yapısı

version: 2.1

orbs:
  node: circleci/node@5.0.2

workflows:
  örnek-iş-akışı:
    jobs:
      - derleme-ve-test

jobs:
  derleme-ve-test:
    docker:
      - image: cimg/node:18.1.0
    steps:
      - checkout
      - node/install-packages:
          pkg-manager: npm
      - run:
          name: Testleri çalıştır
          command: npm test

CircleCI Orbs

Bir orb kullanma

orbs:
  node: circleci/node@5.0.2

Özel bir orb oluşturma

  1. Bir orb projesi oluşturun
  2. Orb'u orb.yml içinde tanımlayın
  3. Orb'u doğrulayın ve yayınlayın:
circleci orb validate orb.yml
circleci orb publish orb.yml namespace/orb@dev:first

CircleCI İş Akışları

Bir iş akışı tanımlama

workflows:
  version: 2
  derleme-test-dağıtım:
    jobs:
      - derleme
      - test:
          requires:
            - derleme
      - dağıtım:
          requires:
            - test
          filters:
            branches:
              only: main

Paralel işler

workflows:
  version: 2
  derleme-test:
    jobs:
      - derleme
      - test-1:
          requires:
            - derleme
      - test-2:
          requires:
            - derleme

CircleCI İşler ve Adımlar

Bir iş tanımlama

jobs:
  derleme:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - run:
          name: Uygulamayı derle
          command: make build

Koşullu adımlar kullanma

steps:
  - run:
      name: Testleri çalıştır
      command: |
        if [ "${CIRCLE_BRANCH}" == "develop" ]; then
          make test
        fi

CircleCI Yürütücüler

Docker yürütücüsü

jobs:
  derleme:
    docker:
      - image: cimg/node:18.1.0

Makine yürütücüsü

jobs:
  derleme:
    machine:
      image: ubuntu-2004:current

macOS yürütücüsü

jobs:
  derleme:
    macos:
      xcode: 14.2.0

CircleCI Ortam Değişkenleri

Yerleşik ortam değişkenleri

  • CIRCLE_BRANCH: Şu anda derlenen Git dalının adı
  • CIRCLE_SHA1: Mevcut yapının son commit'inin SHA1 hash'i
  • CIRCLE_BUILD_NUM: Mevcut yapının numarası
  • CIRCLE_PROJECT_USERNAME: Mevcut projenin GitHub veya Bitbucket kullanıcı adı
  • CIRCLE_PROJECT_REPONAME: Mevcut projenin GitHub veya Bitbucket repo adı

Özel ortam değişkenleri

CircleCI UI'da ayarlanır: Proje Ayarları > Ortam Değişkenleri

Ortam değişkenlerini kullanma

steps:
  - run:
      name: Özel değişkeni yazdır
      command: echo $MY_CUSTOM_VAR

CircleCI Önbellekleme

Önbelleği kaydetme

steps:
  - save_cache:
      paths:
        - ~/project/node_modules
      key: npm-packages-{{ checksum "package-lock.json" }}

Önbelleği geri yükleme

steps:
  - restore_cache:
      keys:
        - npm-packages-{{ checksum "package-lock.json" }}

CircleCI Yapıtları

Yapıtları saklama

steps:
  - store_artifacts:
      path: test-sonuclari
      destination: tr1

Test sonuçlarını saklama

steps:
  - store_test_results:
      path: test-sonuclari

Docker ile CircleCI

Docker imajı oluşturma ve gönderme

jobs:
  oluştur-ve-gönder:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - setup_remote_docker
      - run:
          name: Docker imajı oluştur ve gönder
          command: |
            docker build -t myorg/myapp:$CIRCLE_SHA1 .
            echo $DOCKER_PWD | docker login -u $DOCKER_LOGIN --password-stdin
            docker push myorg/myapp:$CIRCLE_SHA1

Kubernetes ile CircleCI

Kubernetes'e dağıtma

jobs:
  k8s-dağıtım:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - kubernetes/create-or-update-resource:
          resource-file: k8s/deployment.yml
          resource-name: deployment/myapp

CircleCI Onay İşleri

Manuel onay adımı ekleme

workflows:
  version: 2
  derleme-test-onay-dağıtım:
    jobs:
      - derleme
      - test:
          requires:
            - derleme
      - beklet:
          type: approval
          requires:
            - test
      - dağıtım:
          requires:
            - beklet

CircleCI API

API aracılığıyla bir pipeline tetikleme

curl -X POST https://circleci.com/api/v2/project/:vcs-type/:org/:repo/pipeline   -H "Circle-Token: $CIRCLE_TOKEN"   -H "Content-Type: application/json"   -d '{"branch":"main"}'

Proje pipeline'larını alma

curl https://circleci.com/api/v2/project/:vcs-type/:org/:repo/pipeline   -H "Circle-Token: $CIRCLE_TOKEN"

CircleCI En İyi Uygulamalar

  1. İşleri düzenlemek için iş akışlarını kullanın
  2. Yaygın görevler için orb'lardan yararlanın
  3. Derlemeleri hızlandırmak için önbellekleme kullanın
  4. Mümkün olduğunda testleri paralelleştirin
  5. Uygun yürütücüleri kullanın
  6. Yapıtları ve test sonuçlarını saklayın
  7. Yapılandırma için ortam değişkenlerini kullanın
  8. Uygun hata işleme ve bildirimler uygulayın
  9. Paylaşılan ortam değişkenleri için bağlamları kullanın
  10. CircleCI yapılandırmasını ve orb'ları düzenli olarak güncelleyin

CircleCI Sorun Giderme

Derlemeye SSH ile bağlanma

  1. İş yapılandırmasında SSH'ı etkinleştirin:
jobs:
  derleme:
    steps:
      - run:
          name: SSH'ı etkinleştir
          command: |
            mkdir -p ~/.ssh
            echo 'github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==' >> ~/.ssh/known_hosts
      - add_ssh_keys:
          fingerprints:
            - "SO:ME:FIN:G:ER:PR:IN:T"
  1. SSH komutunu almak için CircleCI UI'ı kullanın

Derleme yapıtlarını görüntüleme

Projenizin derleme sayfasına gidin > Yapıtlar sekmesi

Yaygın sorunlar

  • Derleme zaman aşımları: Derleme adımlarını optimize edin veya iş yapılandırmasında zaman aşımını artırın
  • Önbellekleme sorunları: Önbelleği temizleyin ve yeniden derleyin
  • Ortam değişkeni sorunları: CircleCI UI'da değişken adlarını ve değerlerini kontrol edin
  • Docker ile ilgili sorunlar: Docker sürümünü ve imaj uyumluluğunu kontrol edin

2024 © Tüm hakları saklıdır - buraxta.com