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.
https://portal.azure.com adresinden Azure portalında oturum açın.
Portalın araç çubuğundaki Cloud Shell düğmesini seçerek Azure CLI'yi açın:

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

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-tutorialyerine 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.
Komut Cloud Shell Python uygulamanızı içeren depo klasörüne dönüştürebilirsiniz. Bu nedenle komut,
az webapp upuygulamayı Python olarak tanıyacak.cd python-sample-vscode-flask-tutorialBu Cloud Shell kullanarak bir
az webapp upApp 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>-flaskpipelineskullanı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 updaha sonra app service planı Windows çalışır ve başarısız olur.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.
Ö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 upKaynak grubu adı, app service adınız ( ) ve başlangıç dosyanızı veya komutunu () kullanarak
<your-appservice>aşağıdaki komutustartup.txtgirin.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.
Ç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 upsağlama makalesineaz webapp upbakı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.
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.
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.

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.
Yeni proje sayfasında sol gezinti bölmesinden Project ayarları seçin.

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

Hizmet bağlantısı Azure Resource Manager ekle iletişim kutusunda:
- Bağlantı için bir ad girin. İşlem hattında daha sonra kullanmak üzere adı not etmek.
- Kapsam düzeyi içinAbonelik'i seçin.
- Abonelik açılan listesinden App Service aboneliğinizi seçin.
- Kaynak Grubu altında,açılan listeden kaynak grubu seçin.
- 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 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
Proje sayfanız sol gezinti bölmesinden Pipelines.

İşlem Hattı Oluştur'a seçin:
Kodunuz nerede? ekranında,Kod'GitHub. Oturum açmanız istendiğinde GitHub.

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

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

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:

İş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şlemelerimaingö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
stageAzure'a dağıtma aşaması. - Ayrıca,
stageWeb Uygulaması ile aynı varsayılan adla bir Ortam oluşturan dağıtın. Ortam adını değiştirmeyi seçebilirsiniz.
- Projenizi derlemek için derleme ve Linux web uygulaması olarak
Her aşamada, işlem hattının çalıştır olduğu bir veya daha fazla sanal makineyi
pool(VM) belirten bir öğesistepsvardır. Varsayılan olarak, öğesipoolUbuntu 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
stepstaskchildrenstepsscriptiç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@0sü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: dropDeğişkenlere
$()başvuru yapmak için parametre değerinde kullanırsiniz. YerleşikBuild.SourcesDirectorydeğişken, işlem hattının uygulama kodunu kopyalanan derleme aracısı konumunu içerir. parametresi,archiveFiledosyanın nereyearchiveFile.zipgösterir. Bu durumda parametresiarchiveFileyerleşik değişkenleriniBuild.ArtifactsStagingDirectorykullanır.Önemli
Dağıtım Azure App Service, kullanmaya emin
includeRootFolder: falseolun. 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
deploymentbir dağıtım işi tanımlamak içindeploymentsö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 veenvironmentNameDağı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
StartupCommandgösterilen parametreStartupCommandö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?
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.
İş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 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:

Ö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:
- Uygulamanın Azure portal,dosyanızı seçin App Service yapılandırma'ya seçin.
- Uygulama Ayarları Ayarlar Yeni Uygulama Ayarı'ı seçin.
- Açılan pencerede Ad'ı olarak ayarlayın, Değer'i olarak ayarlayın ve Tamam'ı seçin.
- Yapılandırma sayfasının üst kısmında Kaydet'i seçin.
- İş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:
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>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şkenleriniskukullanı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 B1Komut başarıyla tamamlandığında JSON çıktısını Cloud Shell içinde yeniden görüyorsunuz.
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>-flaskpipelineskullanı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-urlve--deployment-source-branchbağımsız değişkenleriniaz webapp createkullanabilirsiniz. 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
-golun. Kaynak grubu adını yanlış okursanız, komut bu var olmayan kaynak grubunda planı bulamaz ve bu hatayı verir.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.