Ci/CD kullanarak bir Python web uygulamasını Linux üzerinde Azure App Service

Azure Pipelines

Bu makalede, bir Python web Azure Pipelines dağıtmak için sürekli tümleştirme ve sürekli teslim (CI/CD) Linux üzerinde Azure App Service. Başlangıç olarak uygulama kodunu yerel olarak bir GitHub çalıştırabilirsiniz. Daha sonra, App Service aracılığıyla bir hedef Azure portal. Son olarak, Azure Pipelines işleme olduğunda kodu otomatik olarak derlemeye ve App Service'ye dağıtan bir CI/CD işlem hattı oluşturun.

Uygulama kodunuz için depo oluşturma

Zaten kullanabileceğiniz bir Python web uygulaması varsa, bunun bir python deposuna GitHub olun.

Not

Uygulamanız Django ve bir SQLite veritabanı kullanıyorsa bu kılavuz için uygun olmayacaktır. Daha fazla bilgi için bu makalenin devamlarında Django ile ilgili dikkat edilmesi gerekenler makalesine bakın. Django uygulamanız ayrı bir veritabanı kullanıyorsa, bu kılavuzla bunu kullanabilirsiniz.

Bir uygulamanın üzerinde çalışmasına ihtiyacınız varsa, deponun için bir fork kullanabilir ve depoyu https://github.com/Microsoft/python-sample-vscode-flask-tutorial kopyaabilirsiniz. Kod, Visual Studio Code'daki Flask öğreticisinde yer almaktadır.

Örnek uygulamayı yerel olarak test etmek için, kodu içeren klasörden işletim sisteminiz için aşağıdaki uygun komutları çalıştırın:

# Mac/Linux
sudo apt-get install python3-venv  # If needed
python3 -m venv .env
source .env/bin/activate
pip install -r requirements.txt
export set FLASK_APP=hello_app.webapp
python3 -m flask run
# Windows
py -3 -m venv .env
.env\scripts\activate
pip install -r requirements.txt
$env:FLASK_APP = "hello_app.webapp"
python -m flask run

Bir tarayıcı açın ve uygulamayı http://localhost:5000 görüntülemek için 'a gidin. Bitirdikten sonra tarayıcıyı kapatın ve CtrlC tuşlarıyla Flask sunucusunu durdurun.

Hedef hedefi Azure App Service

Azure komut satırı arabirimini (CLI) App Service örneği oluşturmanın en hızlı yolu etkileşimli komut satırı arabirimini Azure Cloud Shell. Aşağıdaki adımlarda, az webapp up kullanarak hem uygulama App Service hem de uygulamanın ilk dağıtımını gerçekleştirebilirsiniz.

  1. https://portal.azure.com adresinden Azure portalında oturum açın.

  2. Portalın araç çubuğundaki Cloud Shell düğmesini seçerek Azure CLI'yi açın:

    Azure Cloud Shell çubuğundaki Azure portal düğmesi

  3. Cloud Shell tarayıcının alt kısmında görünür. Açılan listeden Bash'i seçin:

    Azure Cloud Shell görünümü

  4. Aşağıdaki Cloud Shell kullanarak depoyu klonlamanız. git clone Örnek uygulama için şunları kullanın:

    git clone https://github.com/<your-alias>/python-sample-vscode-flask-tutorial
    

    yerine deponun GitHub hesap adını <your-alias> yazın.

    İpucu

    Panoya yapıştırmak Cloud Shell CtrlShift V tuşlarını kullanın veya sağ tıklayıp bağlam menüsünden Yapıştır'ı seçin.

    Not

    Bu Cloud Shell, cloud-shell-storage adlı Depolama kaynak grubunda bir Azure Depolama hesabıyla destekletir. > Bu depolama hesabı, Cloud Shell depoyu depoya alan dosya sisteminin bir görüntüsünü içerir. Bu depolama alanı için küçük bir maliyet vardır. Bu makalenin sonunda, depolama hesabını ve diğer kaynakları silebilirsiniz.

  5. Komut Cloud Shell Python uygulamanızı içeren depo klasörüne dönüştürebilirsiniz. Bu nedenle komut, az webapp up uygulamayı Python olarak tanıyacak.

    cd python-sample-vscode-flask-tutorial
    
  6. Bu Cloud Shell kullanarak bir az webapp up App Service oluşturun ve ilk olarak uygulamanızı dağıtın.

    az webapp up -n <your-appservice>
    

    Uygulama <your-appservice> hizmetiniz için Azure genelinde benzersiz bir adla değiştirme. Genellikle, gibi bir uygulama tanımlayıcısıyla birlikte kişisel veya şirket adı <your-name>-flaskpipelines kullanırsanız. Uygulama URL'si your-appservice > .azurewebsites.net.

    Komut tamamlandığında, komutta JSON çıkışı Cloud Shell.

    İpucu

    .zip dosyasıyla "İzin reddedildi" hatasıyla karşılaşırsanız, python uygulaması olmayan bir klasörden komutu çalıştırmayı deneyebilirsiniz. Komut az webapp up daha sonra app service planı Windows çalışır ve başarısız olur.

  7. Uygulamanız özel başlangıç komutu kullanıyorsa az webapp config özelliğini ayarlayın. Örneğin, python-sample-vscode-flask-tutorial uygulaması,startup.txtbaşlatma komutunu içeren startup.txt adlı bir dosya içerir, bu nedenle özelliğini olarak ayarlayın.

    1. Önceki komutun çıktının ilk satırına bakarak kaynak grubu adının ve bölgenizin adıyla _rg_Linux_ az webapp upaz webapp up

    2. Kaynak grubu adı, app service adınız ( ) ve başlangıç dosyanızı veya komutunu () kullanarak <your-appservice> aşağıdaki komutu startup.txt girin.

      az webapp config set -g <your-resource-group> -n <your-appservice> --startup-file <your-startup-file-or-command>
      

      Komut tamamlandığında, komutta JSON çıkışı Cloud Shell.

  8. Çalışan uygulamayı görmek için bir tarayıcı açın ve appservice > .http:// .azurewebsites.net. Genel bir sayfa görüyorsanız, sayfanın başlaması için App Service saniye bekleyin ve sayfayı yenileyin.

    Not

    komutu tarafından gerçekleştirilen belirli görevlerin ayrıntılı bir açıklaması için bu makalenin sonundaki Tek App Service ile bir komut az webapp up sağlama makalesine az webapp up bakın.

Azure DevOps projesi oluşturma ve Azure'a bağlanma

Şirket içinde Azure App Service Azure Pipelines için iki hizmet arasında bir hizmet bağlantısı kurmanız gerekir.

  1. Bir tarayıcıda' dev.azure.com. Henüz bir hesabınız yoksa Ücretsiz olarak Azure DevOps'ı seçin ve ücretsiz bir hesap elde etme. Zaten bir hesabınız varsa, oturum açın'ı seçerek Azure DevOps.

    Önemli

    Hizmet bağlantısını basitleştirmek için Azure'da olduğu gibi Azure DevOps e-posta adresini kullanın.

  2. Oturum açmanın ardından tarayıcı, Azure DevOps-kuruluş-adınız URL'sinde panoyu > görüntüler. Bir Azure DevOps hesabı, panonun sol tarafında listelenen bir veya daha fazla kuruluşa Azure DevOps olabilir. Birden fazla kuruluş listelenirse, bu kılavuz için kullanmak istediğiniz kuruluşu seçin. Varsayılan olarak, Azure DevOps için kullanılan e-posta diğer adını kullanarak yeni bir kuruluş oluşturur.

    Proje; panolar, depolar, işlem hatları ve diğer işlem hatları için gruplama Azure DevOps. Kurumda herhangi bir proje yoksa, Çalışmaya başlamanız için Proje oluştur altına Flask Pipelines proje adını girin ve ardından Proje oluştur'a basın.

    Panonun ilk Azure DevOps görünümü

    Kuruluşta zaten projeler varsa kuruluş sayfasında Yeni proje'yi seçin. Yeni proje oluştur iletişim kutusundaFlaskPipelines proje adını girin ve Oluştur'a tıklayın.

  3. Yeni proje sayfasında sol gezinti bölmesinden Project ayarları seçin.

    Project panosunda ayarlara tıklayın komutu

  4. Yeni Project Ayarlar Hizmet bağlantıları'Pipelines'ıve ardından Yeni hizmet bağlantısı'Azure Resource Manager'yi seçin.

    Hizmet Azure Resource Manager seçin

  5. Hizmet bağlantısı Azure Resource Manager ekle iletişim kutusunda:

    1. Bağlantı için bir ad girin. İşlem hattında daha sonra kullanmak üzere adı not etmek.
    2. Kapsam düzeyi içinAbonelik'i seçin.
    3. Abonelik açılan listesinden App Service aboneliğinizi seçin.
    4. Kaynak Grubu altında,açılan listeden kaynak grubu seçin.
    5. Tüm işlem hatlarının bu bağlantıyı kullanmasına izin ver seçeneğinin seçili olduğundan emin olun ve ardından Tamam'ı seçin.

    Yeni hizmet bağlantısı iletişim kutusu

    Yeni bağlantı Hizmet bağlantıları listesinde görünür ve projeden Azure Pipelines için hazırdır.

    Not

    Farklı bir e-posta hesabından Azure aboneliğini kullanıyorsanız Mevcut bir hizmet sorumlusuyla Azure Resource Manager hizmet bağlantısı oluşturma yönergelerini izleyin.

Dağıtım için Python'a özgü bir işlem hattı App Service

  1. Proje sayfanız sol gezinti bölmesinden Pipelines.

    Proje Pipelines seçerek

  2. İşlem Hattı Oluştur'a seçin:

    İşlem hatları listesinde yeni işlem hattı düğmesi.

  3. Kodunuz nerede? ekranında,Kod'GitHub. Oturum açmanız istendiğinde GitHub.

    Kod isteminiz nerede?

  4. Depo seçin ekranında, örnek uygulamanın mürekkepleri gibi, uygulamanın yer alan deposunu seçin.

    Depo seçme

  5. Onay olarak GitHub parolanızı yeniden girmeniz istendiğinde GitHub yüklemenizi Azure Pipelines:

    Azure Pipelines uzantısını GitHub

    Bu ekranda, Depo erişimi bölümüne inin, uzantıyı tüm depolara mı yoksa yalnızca seçili depolara mı yükley karar ve sonra Onayla ve yükle'yi seçin:

    Uzantıyı Azure Pipelines onay GitHub yükleme

  6. İşlem hattınızı yapılandırma ekranındaPython'dan Azure'da Linux Web Uygulaması'ne seçeneğini seçin.

    Yeni işlem hattınız görüntülenir. İstendiğinde, Web App'inizi oluşturduğunuz Azure aboneliğini seçin.

    • Web Uygulamasını seçin
    • Doğrula ve yapılandır'ı seçin

    Azure Pipelines, CI/CD işlem hattınızı aşamalar,İşler ve adımlar dizisi olarak tanımlayan bir azure-pipelines.yml dosyası oluşturur; burada her adım farklı görevler ve betiklerin ayrıntılarınıiçerir. İşlem hattının ne yaptığını görmek için işlem hattına göz at. Tüm varsayılan girişlerin kodunuz için uygun olduğundan emin olun.

YAML işlem hattı açıklaması

YAML dosyası aşağıdaki temel öğeleri içerir:

  • triggerEn üstte, dala işlemeler gibi işlem hattını tetikleyen işlemeleri main gösterir.

  • variablesYAML şablonunu parametreleştiren

    İpucu

    YAML dosyanıza belirli değişken değerlerinin sabit kod yazmaması için, bunun yerine değişkenleri işlem hattının web arabiriminde tanımlayabilirsiniz. Daha fazla bilgi için bkz. Değişkenler - Gizli Diziler.

  • stages

    • Projenizi derlemek için derleme ve Linux web uygulaması olarak stage Azure'a dağıtma aşaması.
    • Ayrıca, stage Web Uygulaması ile aynı varsayılan adla bir Ortam oluşturan dağıtın. Ortam adını değiştirmeyi seçebilirsiniz.
  • Her aşamada, işlem hattının çalıştır olduğu bir veya daha fazla sanal makineyi pool (VM) belirten bir öğesi steps vardır. Varsayılan olarak, öğesi pool Ubuntu VM için yalnızca tek bir giriş içerir. Derlemenin bir parçası olarak birden çok ortamda testleri çalıştırmak için bir havuz kullanabilirsiniz. Örneğin, paket oluşturmak için farklı Python sürümleri kullanabilirsiniz.

  • öğesi, rastgele bir komut kümesi çalıştıran , ve görev Azure Pipelines tanımlanan belirli bir görevi çalıştıran gibi stepstask children stepsscript içerebilir.

  • Derleme aşamasındaki ilk görev, derleme aracıda kullanmak üzere Python sürümünü belirten UsePythonVersiongörevidir. Son @<n> ek, görevin sürümünü gösterir. önizleme @0 sürümünü gösterir. Ardından, sanal ortam oluşturan ve dosyadan bağımlılıkları yüken betik tabanlı bir requirements.txt.

        steps:
        - task: UsePythonVersion@0
           inputs:
             versionSpec: '$(pythonVersion)'
             displayName: 'Use Python $(pythonVersion)'
        - script: |
             python -m venv antenv
             source antenv/bin/activate
             python -m pip install --upgrade pip
             pip install setup
             pip install -r requirements.txt
           workingDirectory: $(projectRoot)
           displayName: "Install requirements"
    
  • Sonraki adım, .zip dağıtım aşamasındaki adımların dağıt olduğu bir dosya oluşturur. Dosyanın .zip için YAML dosyasının sonuna bir ArchiveFiles görevi ekleyin:

    - task: ArchiveFiles@2
       inputs:
         rootFolderOrFile: '$(Build.SourcesDirectory)'
         includeRootFolder: false
         archiveType: 'zip'
         archiveFile: '$(Build.ArtifactStagingDirectory)/Application$(Build.BuildId).zip'
         replaceExistingArchive: true
         verbose: # (no value); this input is optional
    - publish: $(Build.ArtifactStagingDirectory)/Application$(Build.BuildId).zip
       displayName: 'Upload package'
       artifact: drop
    

    Değişkenlere $() başvuru yapmak için parametre değerinde kullanırsiniz. Yerleşik Build.SourcesDirectory değişken, işlem hattının uygulama kodunu kopyalanan derleme aracısı konumunu içerir. parametresi, archiveFile dosyanın nereye archiveFile.zipgösterir. Bu durumda parametresi archiveFile yerleşik değişkenlerini Build.ArtifactsStagingDirectory kullanır.

    Önemli

    Dağıtım Azure App Service, kullanmaya emin includeRootFolder: false olun. Aksi takdirde, .zip dosyasının içeriği, dosya üzerinde çoğaltılan "kaynaklar" için adlı bir klasöre App Service. Bu Linux üzerinde App Service kapsayıcısı uygulama kodunu bulamaz.

  • Ardından yapıtları karşıya yükleme görevini de yükleyebilirsiniz.

  • Dağıtım aşamasında, ortamını hedef alan deployment bir dağıtım işi tanımlamak için deployment sözcüğünü kullanırsınız. Şablon kullanılarak, Web uygulamasıyla aynı adla bir ortam, henüz yoksa otomatik olarak oluşturulur. Alternatif olarak ortamı önceden oluşturabilir ve environmentName

  • Dağıtım işi içinde ilk görev, derleme aracıda kullanmak üzere Python sürümünü belirten UsePythonVersiongörevidir.

  • Ardından AzureWebApp görevini kullanarak .zip dosyasını App Service işlem hattı dosyasının başındaki ve değişkenleri tarafından tanımlandı. Aşağıdaki kodu dosyanın sonuna yapıştırın:

    jobs:
    - deployment: DeploymentJob
    pool:
      vmImage: $(vmImageName)
    environment: $(environmentName)
    strategy:
      runOnce:
        deploy:
          steps:
    
          - task: UsePythonVersion@0
            inputs:
              versionSpec: '$(pythonVersion)'
            displayName: 'Use Python version'
    
          - task: AzureWebApp@1
            displayName: 'Deploy Azure Web App : {{ webAppName }}'
            inputs:
              azureSubscription: $(azureServiceConnectionId)
              appName: $(webAppName)
              package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip
    
              # The following parameter is specific to the Flask example code. You may
              # or may not need a startup command for your app.
    
              startUpCommand: 'gunicorn --bind=0.0.0.0 --workers=4 startup:app'
    

    Burada StartupCommand gösterilen parametre StartupCommand örnek koduna özeldir. Bu kod, uygulamayı startup.py tanımlar. Varsayılan olarak Azure App Service, flask uygulama nesnesini app.py veya application.py. Kodunuz bu desene uymazsa başlangıç komutunu özelleştirmeniz gerekir. Django uygulamalarının hiç özelleştirmeye ihtiyacı olabilir. Daha fazla bilgi için bkz. Python'i Azure App Service - Başlangıç komutunu özelleştirme.

    Ayrıca, python-vscode-flask-tutorial deposu startup.txtadlı bir dosyada aynı başlangıç komutunu içerdiğinden, kullanarak bu dosyayı komutu yerine parametresinde belirtebilirsiniz.

İşlem hattını çalıştırma

Artık denemek için hazır mısınız?

  1. Düzenleyicinin sağ üst kısmından Kaydet'i seçin ve açılan pencerede bir işleme iletisi ekleyin ve Kaydet'i seçin.

  2. İşlem hattı düzenleyicisinde Çalıştır'ı seçin ve İşlem hattını çalıştır iletişim kutusunda Yeniden çalıştır'ı seçin. Azure Pipelines işlem hattı çalıştırmalarını kuyruğa almak, kullanılabilir bir derleme aracısı almak ve bu derleme aracılarının işlem hattını çalıştırması gerekir.

    İşlem hattının tamamlanması, özellikle de dağıtım adımlarının tamamlanması birkaç dakika sürer. Adımların her biri yanında yeşil onay işaretleri görüyor gerekir.

    Bir hata varsa, sağ üst köşedeki dikey noktaları ve İşlem hattını düzenle'yi seçerek YAML düzenleyicisine hızlıca dönabilirsiniz:

    Derleme raporundan işlem hattı açıklaması düzenleme

  3. Derleme sayfasından, çıktısını görüntülemek için Azure Web Uygulaması görevini seçin. Dağıtılan siteyi ziyaret etmek için Ctrl tuşunu basılı tutun ve Uygulama URL'siniApp Service URL'yi seçin.

    Flask örneğini kullanıyorsanız, uygulama aşağıdaki gibi görün olmalıdır:

    App Service'da çalışan Flask örnek kodunun görünümü

Önemli

Uygulamanız eksik bir bağımlılık nedeniyle başarısız olursa,requirements.txt dosyanız dağıtım sırasında işlenmedi. Bu davranış, web uygulamasını bu makalede gösterildiği gibi komutunu kullanmak yerine doğrudan az webapp up portalda oluşturduysanız gerçekleşir.

Komutu az webapp up özellikle derleme eylemlerini olarak SCM_DO_BUILD_DURING_DEPLOYMENTtrue ayarlar. Ancak uygulama hizmetini portal üzerinden sağlarsanız bu eylem otomatik olarak ayarlanmaz.

Aşağıdaki adımlar eylemi ayarlayın:

  1. Uygulamanın Azure portal,dosyanızı seçin App Service yapılandırma'ya seçin.
  2. Uygulama Ayarları Ayarlar Yeni Uygulama Ayarı'ı seçin.
  3. Açılan pencerede Ad'ı olarak ayarlayın, Değer'i olarak ayarlayın ve Tamam'ı seçin.
  4. Yapılandırma sayfasının üst kısmında Kaydet'i seçin.
  5. İşlem hattını yeniden çalıştırın. Bağımlılıkların dağıtım sırasında yüklenmiş olması gerekir.

Dağıtım sonrası betik çalıştırma

Dağıtım sonrası betik, örneğin uygulama kodu tarafından beklenen ortam değişkenlerini tanımlayabilir. Betiği uygulama kodunun bir parçası olarak ekleyin ve başlangıç komutunu kullanarak yürütün.

YAML dosyanıza belirli değişken değerlerinin sabit kod yazmaması için, bunun yerine işlem hattının web arabiriminde değişkenleri tanımlayabilir ve ardından betikte değişken adına bakabilirsiniz. Daha fazla bilgi için bkz. Değişkenler - Gizli Diziler.

Django ile ilgili önemli noktalar

Bu makalede daha önce belirtildiği gibi, ayrı bir veritabanı Azure Pipelines Django Linux üzerinde Azure App Service dağıtmak için Linux üzerinde Azure App Service'yi kullanabilirsiniz. Veritabanı veritabanı db.sqlite3 dosyasını kilitleye App Service ve yazmaları önleyene kadar bir SQLite veritabanı kullanasınız. Bu davranış dış veritabanını etkilemez.

App Service üzerinde Python uygulamasını yapılandırma - Kapsayıcıbaşlatma işlemi altında açıklandığı gibi, App Service otomatik olarak uygulama kodunuzun içinde genellikle uygulama nesnesini içeren bir wsgi.py dosyası aramaz. Başlangıç komutunu herhangi bir şekilde özelleştirmeniz gerekirse, önceki bölümde açıklandığı gibi YAML işlem hattı dosyanız adımlarında StartupCommandAzureWebApp@1 parametresini kullanın.

Django kullanırken, genellikle uygulama kodunu dağıtınca kullanarak manage.py migrate veri modellerini geçirmek istersiniz. Bu amaçla startUpCommand dağıtım sonrası betik ile ekleme işlemi ebilirsiniz:

startUpCommand:  python3.6 manage.py migrate

Derleme aracısı üzerinde testleri çalıştırma

Derleme işleminizin bir parçası olarak, uygulama kodunuz üzerinde testler çalıştırmak istiyor olabilir. Testler derleme aracısı üzerinde çalıştırı, bu nedenle büyük olasılıkla önce bağımlılıklarınızı derleme aracısı bilgisayarına sanal bir ortama yüklemeniz gerekir. Testler çalıştırktan sonra, dağıtım için bir.zip önce sanal ortamı silin. Aşağıdaki betik öğeleri bu işlemi göstermektedir. Bunları ArchiveFiles@2ArchiveFiles@2 yer açın. Daha fazla bilgi için bkz. Platformlar arası betikleri çalıştırma.

# The | symbol is a continuation character, indicating a multi-line script.
# A single-line script can immediately follow "- script:".
- script: |
    python3.6 -m venv .env
    source .env/bin/activate
    pip3.6 install setuptools
    pip3.6 install -r requirements.txt

  # The displayName shows in the pipeline UI when a build runs
  displayName: 'Install dependencies on build agent'

- script: |
    # Put commands to run tests here
  displayName: 'Run tests'

- script: |
    echo Deleting .env
    deactivate
    rm -rf .env
  displayName: 'Remove .env before zip'

Test sonuçlarının işlem hattı sonuçları ekranında PublishTestResults@2 gibi bir görev de kullanabilirsiniz. Daha fazla bilgi için bkz. Python uygulamaları derleme - Testleri çalıştırma.

Tek komut App Service bir komut sağlama

Bu makalede daha önce kullanılan az webapp up komutu, uygulamanızı tek bir adımda App Service ve başlangıçta dağıtmak için kullanışlı bir yöntemdir. Dağıtım işlemi üzerinde daha fazla denetime sahip olmak için tek komutları kullanarak aynı görevleri gerçekleştirebilirsiniz. Örneğin, kaynak grubu için belirli bir ad kullanmak veya mevcut bir plan App Service plan içinde bir App Service oluşturabilirsiniz.

Aşağıdaki adımlar komutun eşdeğerini az webapp up gerçekleştirmektedir:

  1. Bir kaynak grubu oluşturun.

    Kaynak grubu, ilgili Azure kaynaklarının bir koleksiyonudur. Kaynak grubu oluşturmak, artık ihtiyacınız kalmadan tüm bu kaynakları aynı anda silmeyi kolaylaştırır. Azure Cloud Shell kaynak grubu oluşturmak için aşağıdaki komutu çalıştırın. değerini belirterek kaynak grubu için bir konum <your-region> ayarlayın. Komut başarıyla tamamlandığında Cloud Shell JSON çıktısı görüntülenir.

    az group create -l <your-region> -n <your-resource-group>
    
  2. Plan'App Service oluşturun.

    Bir App Service, App Service Plan tarafından tanımlanan bir VM içinde çalışır. Aşağıdaki komutu çalıştırarak ve değerlerini App Service plan <your-resource-group><your-appservice-plan> oluşturun. --is-linux, Python dağıtımları için gereklidir. Varsayılan F1 Ücretsiz planı dışında bir fiyatlandırma planı kullanmak için bağımsız değişkenlerini sku kullanın. --sku B1, VM için daha düşük fiyat işlem katmanını belirtir. Daha sonra kaynak grubunu silerek planı kolayca silebilirsiniz.

    az appservice plan create -g <your-resource-group> -n <your-appservice-plan> --is-linux --sku B1
    

    Komut başarıyla tamamlandığında JSON çıktısını Cloud Shell içinde yeniden görüyorsunuz.

  3. Plan App Service bir örnek oluşturun.

    Aşağıdaki komutu çalıştırarak App Service örneğini oluşturun ve yerine Azure genelinde benzersiz <your-appservice> bir ad yazın. Genellikle, gibi bir uygulama tanımlayıcısıyla birlikte kişisel veya şirket adı <your-name>-flaskpipelines kullanırsanız. Ad zaten kullanıyorsa komut başarısız olur. Kaynak grubunu App Service aynı kaynak grubuna atadığınız zaman tüm kaynakları aynı anda kolayca temizlebilirsiniz.

    az webapp create -g <your-resource-group> -p <your-appservice-plan> -n <your-appservice> --runtime "Python|3.6"
    

    Not

    Kodunuzu app service'i oluşturmakla aynı anda dağıtmak için komutunu kullanarak --deployment-source-url ve --deployment-source-branch bağımsız değişkenlerini az webapp create kullanabilirsiniz. Daha fazla bilgi için bkz. az webapp create.

    İpucu

    "Plan (ad) yok" hata iletisini görüyorsanız ve plan adının doğru olduğundan emin olursanız, bağımsız değişkenle belirtilen kaynak grubunun da doğru olduğundan ve tanım istediğiniz planın bu kaynak grubunun bir parçası olduğundan emin -g olun. Kaynak grubu adını yanlış okursanız, komut bu var olmayan kaynak grubunda planı bulamaz ve bu hatayı verir.

  4. Uygulamanıza özel başlangıç komutu gerekli ise, daha önce Hedef başlatmayı sağlama konusunda açıklandığı az webapp config setaz webapp config set Örneğin, kaynak grubunuz App Service uygulama adı ve başlangıç komutuyla uygulamayı özelleştirmek için şu komutu çalıştırın:

    az webapp config set -g <your-resource-group> -n <your-appservice> --startup-file <your-startup-command-or-file>
    

    Bu App Service uygulama kodu yalnızca varsayılan uygulama kodunu içerir. Artık uygulama kodunuzu Azure Pipelines için uygulama kodunu kullanabilirsiniz.

Kaynakları temizleme

Bu kılavuzda oluşturduğunuz B1 App Service Planı gibi Azure kaynaklarına sürekli ücret ödememek için App Service ve App Service Plan'ın yer alan kaynak grubunu silin. Kaynak grubunu kaynak grubundan silmek Azure portal sol gezinti bölmesinde Kaynak grupları'ı seçin. Kaynak grubu listesinde silmek istediğiniz kaynak grubunun sağ tarafından ... öğesini seçin, Kaynak grubunu sil'i seçinve yönergeleri izleyin.

Kaynak gruplarını silmek için az group delete Cloud Shell da kullanabilirsiniz.

Cloud Shell için dosya sistemini bulunduran ve aylık olarak küçük bir ücrete neden olan depolama hesabını silmek için cloud-shell-storage-ile başlayan kaynak grubunu silin.

Sonraki adımlar