Aracılığıyla paylaş


Sürekli tümleştirme ve sürekli teslim için IoT Central'ı Azure Pipelines ile tümleştirme

Sürekli tümleştirme ve sürekli teslim (CI/CD), otomasyon işlem hatlarını kullanarak kısa ve sık döngüler halinde yazılım geliştirme ve teslim etme sürecini ifade eder. Bu makalede, IoT Central uygulama yapılandırmasının derleme, test ve dağıtımını otomatikleştirme adımları gösterilmektedir. Bu otomasyon, geliştirme ekiplerinin daha sık güvenilir sürümler sunmalarını sağlar.

Sürekli tümleştirme, kodunuzun kaynak kod deposundaki bir dala işlenmesiyle başlar. Çakışma olmamasını sağlamak için her işleme diğer geliştiricilerin işlemeleriyle birleştirilir. Değişiklikler, derleme oluşturularak ve bu derlemeye karşı otomatikleştirilmiş testler çalıştırılarak daha fazla doğrulanır. Bu işlem sonuçta bir yapıt veya dağıtım paketinin hedef ortama dağıtılmasına neden olur. Bu durumda hedef bir Azure IoT Central uygulamasıdır.

IoT Central, daha büyük IoT çözümünüzün bir parçası olduğu gibi, IoT Central da CI/CD işlem hattınızın bir parçasıdır. CI/CD işlem hattınızın tüm IoT çözümünüzü ve tüm yapılandırmalarınızı geliştirmeden üretime kadar her ortama dağıtması gerekir:

Tipik bir CI/CD işlem hattının aşamalarını gösteren diyagram.

IoT Central, hizmet olarak platform bileşenlerinden farklı dağıtım gereksinimlerine sahip bir hizmet olarak uygulama platformudur. IoT Central için yapılandırmaları ve cihaz şablonlarını dağıtırsınız. Bu yapılandırmalar ve cihaz şablonları API'ler kullanılarak yönetilir ve yayın işlem hattınızla tümleştirilir.

IoT Central uygulama oluşturmayı otomatikleştirmek mümkün olsa da CI/CD işlem hattınızı geliştirmeden önce her ortamda bir uygulama oluşturmanız gerekir.

Azure IoT Central REST API'sini kullanarak IoT Central uygulama yapılandırmalarını yayın işlem hattınızla tümleştirebilirsiniz.

Bu kılavuz, GitHub'da yönetilen yapılandırma dosyalarına göre ioT Central uygulamasını güncelleştiren yeni bir işlem hattı oluşturma işleminde size yol gösterir. Bu kılavuzda Azure Pipelines ile tümleştirmeye yönelik belirli yönergeler bulunur, ancak Tekton, Jenkins, GitLab veya GitHub Actions gibi araçlar kullanılarak oluşturulan herhangi bir yayın işlem hattına IoT Central'ı dahil edecek şekilde uyarlanabilir.

Bu kılavuzda, ioT Central uygulamasının tek bir örneğine yalnızca IoT Central yapılandırması uygulayan bir işlem hattı oluşturacaksınız. Adımları, çözümünüzün tamamını dağıtan ve geliştirme aşamasından QA'ya, üretim öncesiüretim aşamasına kadar yükselten ve yol boyunca gerekli tüm testleri gerçekleştiren daha büyük bir işlem hattıyla tümleştirmeniz gerekir.

Betikler şu anda IoT Central örnekleri arasında şu ayarları aktarmaz: panolar, görünümler, cihaz şablonlarındaki özel ayarlar, fiyatlandırma planı, UX özelleştirmeleri, uygulama görüntüsü, kurallar, zamanlanmış işler, kaydedilmiş işler ve kayıt grupları.

Betikler şu anda yapılandırma dosyasında bulunmayan hedef IoT Central uygulamasından ayarları kaldırmaz.

Önkoşullar

Bu kılavuzdaki adımları tamamlamak için aşağıdaki önkoşullara ihtiyacınız vardır:

  • Biri geliştirme ortamınız, diğeri de üretim ortamınız için olan iki IoT Central uygulaması. Daha fazla bilgi edinmek için bkz . IoT Central uygulaması oluşturma.
  • Biri geliştirme ortamınız, diğeri de üretim ortamınız için olan iki Azure Key Vault. Her ortam için ayrılmış bir Key Vault'a sahip olmak en iyi yöntemdir. Daha fazla bilgi edinmek için bkz . Azure portalıyla Azure Key Vault oluşturma.
  • GitHub hesabı GitHub.
  • Bir Azure DevOps kuruluşu. Daha fazla bilgi edinmek için bkz . Azure DevOps kuruluşu oluşturma.
  • Windows, Mac veya Linux için PowerShell 7. PowerShell'i edinin.
  • PowerShell 7 ortamınızda yüklü Azure Az PowerShell modülü. Daha fazla bilgi edinmek için bkz . Azure Az PowerShell modülünü yükleme.
  • PowerShell ve JSON dosyalarını düzenlemek için Visual Studio Code veya başka bir araç.Visual Studio Code'a ulaşın.
  • Git istemcisi. Git - İndirmeler (git-scm.com) sayfasından en son sürümü indirin.
  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Örnek kodu indirme

Başlamak için IoT Central CI/CD GitHub deposunu çatallayın ve çatalınızı yerel makinenize kopyalayın:

  1. GitHub deposunu çatal yapmak için IoT Central CI/CD GitHub deposunu açın ve Çatal'ı seçin.

  2. Bir konsol veya bash penceresi açıp aşağıdaki komutu çalıştırarak depo çatalınızı yerel makinenize kopyalayın.

    git clone https://github.com/{your GitHub username}/iot-central-CICD-sample
    

Hizmet sorumlusu oluşturma

Azure Pipelines doğrudan bir anahtar kasasıyla tümleştirilebiliyor olsa da, veri dışarı aktarma hedefleri için gizli dizileri getirme gibi bazı dinamik anahtar kasası etkileşimleri için işlem hattının bir hizmet sorumlusuna ihtiyacı vardır.

Aboneliğiniz kapsamında bir hizmet sorumlusu oluşturmak için:

  1. Yeni bir hizmet sorumlusu oluşturmak için aşağıdaki komutu çalıştırın:

    az ad sp create-for-rbac -n DevOpsAccess --scopes /subscriptions/{your Azure subscription Id} --role Contributor
    
  2. Daha sonra bu değerlere ihtiyacınız olduğu için parolayı, appId'yi ve kiracıyı not edin.

  3. Hizmet sorumlusu parolasını üretim anahtarı kasanıza adlı SP-Password bir gizli dizi olarak ekleyin:

    az keyvault secret set --name SP-Password --vault-name {your production key vault name} --value {your service principal password}
    
  4. Hizmet sorumlusuna anahtar kasasından gizli dizileri okuma izni verin:

    az keyvault set-policy --name {your production key vault name} --secret-permissions get list --spn {the appId of the service principal}
    

IoT Central API belirteçleri oluşturma

Bu kılavuzda işlem hattınız IoT Central uygulamalarınızla etkileşime geçmek için API belirteçlerini kullanır. Hizmet sorumlusu kullanmak da mümkündür.

Not

IoT Central API belirteçlerinin süresi bir yıl sonra dolar.

Hem geliştirme hem de üretim IoT Central uygulamalarınız için aşağıdaki adımları tamamlayın.

  1. IoT Central uygulamanızda İzinler'i ve ardından API belirteçleri'yi seçin.

  2. Yeni'yi seçin.

  3. Belirteçe bir ad verin, uygulamanızda en üst düzey kuruluşu belirtin ve rolü Uygulama Yönetici istrator olarak ayarlayın.

  4. Geliştirme IoT Central uygulamanızdaki API belirtecini not alın. Daha sonra IoTC-Config.ps1 betiğini çalıştırdığınızda kullanırsınız.

  5. Üretim IoT Central uygulamasından oluşturulan belirteci, üretim anahtarı kasasına çağrılan API-Token bir gizli dizi olarak kaydedin:

    az keyvault secret set --name API-Token --vault-name {your production key vault name} --value '{your production app API token}'
    

Yapılandırma dosyası oluşturma

Bu adımlar, mevcut bir IoT Central uygulamasını temel alan geliştirme ortamınız için bir JSON yapılandırma dosyası oluşturur. Ayrıca, mevcut tüm cihaz şablonlarını uygulamadan indirirsiniz.

  1. IoT Central CI/CD deposunun yerel kopyasında aşağıdaki PowerShell 7 betiğini çalıştırın:

    cd .\iot-central-CICD-sample\PowerShell\
    .\IoTC-Config.ps1
    
  2. Azure hesabınızda oturum açmak için yönergeleri izleyin.

  3. Oturum açtığınızda betik, IoTC Yapılandırma seçenekleri menüsünü görüntüler. Betik, mevcut bir IoT Central uygulamasından bir yapılandırma dosyası oluşturabilir ve başka bir IoT Central uygulamasına yapılandırma uygulayabilir.

  4. Yapılandırma dosyası oluşturmak için 1 seçeneğini belirleyin.

  5. Gerekli parametreleri girin ve Enter tuşuna basın:

    • Geliştirme IoT Central uygulamanız için oluşturduğunuz API belirteci.
    • Geliştirme IoT Central uygulamanızın alt etki alanı.
    • Girin .. \Config\Dev , yapılandırma dosyasını ve cihaz şablonlarını depolamak için kullanılan klasör olarak.
    • Geliştirme anahtarı kasanızın adı.
  6. Betik, deponun yerel kopyasındaki Config\Dev klasöründe IoTC Yapılandırması adlı bir klasör oluşturur. Bu klasör, uygulamanızdaki tüm cihaz şablonları için bir yapılandırma dosyası ve Cihaz Modelleri adlı bir klasör içerir.

Yapılandırma dosyasını değiştirme

Artık geliştirme IoT Central uygulama örneğinizin ayarlarını temsil eden bir yapılandırma dosyanız olduğuna göre, bu yapılandırmayı üretim IoT Central uygulama örneğinize uygulamadan önce gerekli değişiklikleri yapın.

  1. Daha önce oluşturulan Geliştirme klasörünün bir kopyasını oluşturun ve Üretim olarak adlandırın.

  2. Bir metin düzenleyicisi kullanarak Üretim klasöründe IoTC-Config.json açın.

  3. Dosyada birden çok bölüm vardır. Ancak, uygulamanız belirli bir ayarı kullanmıyorsa, bu bölüm dosyadan atlanır:

    {
      "APITokens": {
        "value": [
          {
            "id": "dev-admin",
            "roles": [
              {
                "role": "ca310b8d-2f4a-44e0-a36e-957c202cd8d4"
              }
            ],
            "expiry": "2023-05-31T10:47:08.53Z"
          }
        ]
      },
      "data exports": {
        "value": [
          {
            "id": "5ad278d6-e22b-4749-803d-db1a8a2b8529",
            "displayName": "All telemetry to blob storage",
            "enabled": false,
            "source": "telemetry",
            "destinations": [
              {
                "id": "393adfc9-0ed8-45f4-aa29-25b5c96ecf63"
              }
            ],
            "status": "notStarted"
          }
        ]
      },
      "device groups": {
        "value": [
          {
            "id": "66f41d29-832d-4a12-9e9d-18932bee3141",
            "displayName": "MXCHIP Getting Started Guide - All devices"
          },
          {
            "id": "494dc749-0963-4ec1-89ff-e1de2228e750",
            "displayName": "RS40 Occupancy Sensor - All devices"
          },
          {
            "id": "dd87877d-9465-410b-947e-64167a7a1c39",
            "displayName": "Cascade 500 - All devices"
          },
          {
            "id": "91ceac5b-f98d-4df0-9ed6-5465854e7d9e",
            "displayName": "Simulated devices"
          }
        ]
      },
      "organizations": {
        "value": []
      },
      "roles": {
        "value": [
          {
            "id": "344138e9-8de4-4497-8c54-5237e96d6aaf",
            "displayName": "Builder"
          },
          {
            "id": "ca310b8d-2f4a-44e0-a36e-957c202cd8d4",
            "displayName": "Administrator"
          },
          {
            "id": "ae2c9854-393b-4f97-8c42-479d70ce626e",
            "displayName": "Operator"
          }
        ]
      },
      "destinations": {
        "value": [
          {
            "id": "393adfc9-0ed8-45f4-aa29-25b5c96ecf63",
            "displayName": "Blob destination",
            "type": "blobstorage@v1",
            "authorization": {
              "type": "connectionString",
              "connectionString": "DefaultEndpointsProtocol=https;AccountName=yourexportaccount;AccountKey=*****;EndpointSuffix=core.windows.net",
              "containerName": "dataexport"
            },
            "status": "waiting"
          }
        ]
      },
      "file uploads": {
        "connectionString": "FileUpload",
        "container": "fileupload",
        "sasTtl": "PT1H"
      },
      "jobs": {
        "value": []
      }
    }
    
  4. Uygulamanız dosya yüklemelerini kullanıyorsa, betik geliştirme anahtarı kasanızda özelliğinde connectionString gösterilen değerle bir gizli dizi oluşturur. Üretim depolama hesabınızın bağlantı dizesi içeren üretim anahtarı kasanızda aynı ada sahip bir gizli dizi oluşturun. Örneğin:

    az keyvault secret set --name FileUpload --vault-name {your production key vault name} --value '{your production storage account connection string}'
    
  5. Uygulamanız veri dışarı aktarmaları kullanıyorsa, üretim anahtarı kasasına hedefler için gizli diziler ekleyin. Yapılandırma dosyası hedefiniz için gerçek gizli diziler içermez, gizli diziler anahtar kasanızda depolanır.

  6. Yapılandırma dosyasındaki gizli dizileri anahtar kasanızdaki gizli dizi adıyla güncelleştirin.

    Hedef türü Değiştirecek özellik
    Service Bus kuyruğu Connectionstring
    Service Bus konusu Connectionstring
    Azure Veri Gezgini clientSecret
    Azure Blob Storage Connectionstring
    Event Hubs Connectionstring
    Web Kancası Kimlik Doğrulaması Yok Yok

    Örneğin:

    "destinations": {
      "value": [
        {
          "id": "393adfc9-0ed8-45f4-aa29-25b5c96ecf63",
          "displayName": "Blob destination",
          "type": "blobstorage@v1",
          "authorization": {
            "type": "connectionString",
            "connectionString": "Storage-CS",
            "containerName": "dataexport"
          },
          "status": "waiting"
        }
      ]
    }
    
  7. Yapılandırma klasörünü GitHub deponuza yüklemek için IoTC-CICD-howto klasöründen aşağıdaki komutları çalıştırın.

     git add Config
     git commit -m "Adding config directories and files"
     git push
    

İşlem hattı oluşturma

  1. Azure DevOps kuruluşunuzu bir web tarayıcısında açmak için https://dev.azure.com/{your DevOps organization}
  2. Yeni proje oluşturmak için Yeni proje'yi seçin.
  3. Projenize bir ad ve isteğe bağlı bir açıklama verin ve oluştur'u seçin.
  4. Projeye hoş geldiniz sayfasında İşlem Hatları'nı ve ardından İşlem Hattı Oluştur'u seçin.
  5. Kodunuzun konumu olarak GitHub'ı seçin.
  6. Azure Pipelines'ı GitHub hesabınıza erişim yetkisi vermek için AzurePipelines'i yetkile'yi seçin.
  7. Depo seçin sayfasında IoT Central CI/CD GitHub deposu çatalınızı seçin.
  8. GitHub'da oturum açmanız ve Azure Pipelines'ın depoya erişmesine izin vermeniz istendiğinde Onayla ve yükle'yi seçin.
  9. başlamak için İşlem hattınızı yapılandırın sayfasında Başlangıç işlem hattı'nı seçin. düzenlemeniz için azure-pipelines.yml görüntülenir.

Değişken grubu oluşturma

Anahtar kasası gizli dizilerini bir işlem hattıyla tümleştirmenin kolay bir yolu, değişken grupları kullanmaktır. Dağıtım betiğinizde doğru gizli dizilerin kullanılabilir olduğundan emin olmak için bir değişken grubu kullanın. Değişken grubu oluşturmak için:

  1. Soldaki menünün İşlem Hatları bölümünde Kitaplık'ı seçin.

  2. + Değişken grubu'nun seçin.

  3. Değişken grubunuzun adı olarak girin keyvault .

  4. Azure anahtar kasasından gizli dizileri bağlamak için iki durumlu düğmeyi etkinleştirin.

  5. Azure aboneliğinizi seçin ve yetkilendirilin. Ardından üretim anahtarı kasanızın adını seçin.

  6. Gruba değişken eklemeye başlamak için Ekle'yi seçin.

  7. Aşağıdaki gizli dizileri ekleyin:

    • Üretim uygulamanızın IoT Central API Anahtarı. Bu gizli diziyi API-Token oluştururken siz çağırdınız.
    • Daha önce oluşturduğunuz hizmet sorumlusunun parolası. Bu gizli diziyi SP-Password oluştururken siz çağırdınız.
  8. Tamam'ı seçin.

  9. Değişken grubunu kaydetmek için Kaydet'i seçin.

İşlem hattınızı yapılandırma

Şimdi ioT Central uygulamanıza yapılandırma değişiklikleri göndermek için işlem hattını yapılandırın:

  1. Sol taraftaki menünün İşlem Hatları bölümünde İşlem Hatları'nı seçin.

  2. İşlem hattı YAML'nizin içeriğini aşağıdaki YAML ile değiştirin. Yapılandırma, üretim anahtarı kasanızın şunları içerdiğini varsayar:

    • Üretim IoT Central uygulamanızın API belirteci adlı API-Tokenbir gizli dizide bulunur.
    • Hizmet sorumlusu parolanız adlı SP-Passwordbir gizli dizide.

    ve -AppName-KeyVault değerlerini üretim örnekleriniz için uygun değerlerle değiştirin.

    hizmet sorumlunuzu oluşturduğunuzda ve -TenantId değerlerini not -AppId edindiniz.

    trigger:
    - master
    variables:
    - group: keyvault
    - name: buildConfiguration
      value: 'Release'
    steps:
    - task: PowerShell@2
      displayName: 'IoT Central'
      inputs:
        filePath: 'PowerShell/IoTC-Task.ps1'
        arguments: '-ApiToken "$(API-Token)" -ConfigPath "Config/Production/IoTC Configuration" -AppName "{your production IoT Central app name}" -ServicePrincipalPassword (ConvertTo-SecureString "$(SP-Password)" -AsPlainText -Force) -AppId "{your service principal app id}" -KeyVault "{your production key vault name}" -TenantId "{your tenant id}"'
        pwsh: true
        failOnStderr:  true
    
  3. Kaydet ve çalıştır'ı seçin.

  4. YAML dosyası GitHub deponuza kaydedilir, bu nedenle bir işleme iletisi sağlamanız ve kaydet ve yeniden çalıştır'ı seçmeniz gerekir.

İşlem hattınız kuyruğa alındı. Çalıştırılması birkaç dakika sürebilir.

İşlem hattınızı ilk kez çalıştırdığınızda, işlem hattının aboneliğinize ve anahtar kasanıza erişmesine izin vermeniz istenir. her kaynak için İzin Ver'i ve sonra yeniden İzin Ver'i seçin.

İşlem hattı işiniz başarıyla tamamlandığında üretim IoT Central uygulamanızda oturum açın ve yapılandırmanın beklendiği gibi uygulandığını doğrulayın.

Geliştirmeden üretime değişiklikleri yükseltme

Artık çalışan bir işlem hattınız olduğuna göre ioT Central örneklerinizi yapılandırma değişikliklerini kullanarak doğrudan yönetebilirsiniz. Yeni cihaz şablonlarını Cihaz Modelleri klasörüne yükleyebilir ve yapılandırma dosyasında doğrudan değişiklik yapabilirsiniz. Bu yaklaşım, IoT Central uygulamanızın yapılandırmasını diğer kodlarda olduğu gibi değerlendirmenizi sağlar.

Sonraki adım

IoT Central yapılandırmalarını CI/CD işlem hatlarınızla tümleştirmeyi öğrendiğinize göre, ioT Central uygulamalarını yönetmeyi ve izlemeyi öğrenmek için önerilen bir sonraki adımdır.