Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
CI/CD işleminizi geliştirme döngünüzün farklı bölümlerini temsil eden aşamalara bölmek için bir Azure DevOps çok aşamalı işlem hattı kullanın. Çok aşamalı işlem hattı, dağıtım sürecinize daha fazla görünürlük sağlar ve onayları ve denetimleri tümleştirmeyi kolaylaştırır.
Bu makalede iki App Service örneği oluşturacak ve üç aşamalı bir YAML işlem hattı oluşturacaksınız:
Gerçek dünya senaryosunda DevOps işleminize bağlı olarak üretime dağıtım için başka bir aşamanız olabilir.
Bu alıştırmadaki örnek kod, yüksek puanlar göstermek için puan tablosu içeren bir rol yapma alanı oyununa yönelik bir .NET web uygulamasına yöneliktir. Linux için Azure Web App'in hem geliştirme hem de hazırlama örneklerine dağıtacaksınız.
Önkoşullar
ürün | Gereksinimler |
---|---|
Azure DevOps | - Azure DevOps kuruluşu ve projesi.
Ücretsiz bir tane oluşturun. - İzinler: - Projedeki tüm işlem hatlarına erişim vermek için: - Hizmet bağlantıları oluşturmak için: - Microsoft tarafından barındırılan ajanlarda pipeline'ları çalıştırma yeteneği. Paralel bir iş satın alabilir veya ücretsiz katman isteyebilirsiniz. |
GitHub (İngilizce) | - GitHub hesabı. |
Projeyi kopyala ve geliştir
GitHub'da aşağıdaki örnek depoyu forkla.
https://github.com/MicrosoftDocs/mslearn-tailspin-spacegame-web-deploy
App Service örneklerini oluşturma
İşlem hattınızı dağıtabilmeniz için önce dağıtım için bir App Service örneği oluşturmanız gerekir. Örneği oluşturmak için Azure CLI kullanacaksınız.
Azure Portal’ında oturum açın.
Menüden Cloud Shell ve Bash deneyimi'ni seçin.
Web uygulamanızın etki alanı adını benzersiz hale getiren rastgele bir sayı oluşturun. Benzersiz bir değere sahip olmanın avantajı, App Service örneğinizin bu öğreticiyi tamamlayan diğer öğrencilerle bir ad çakışması olmamasıdır.
webappsuffix=$RANDOM
Bir komut istemi açın ve komutu kullanarak
az group create
tüm App Service örneklerinizi içeren tailspin-space-game-rg adlı bir kaynak grubu oluşturun.location
Değeri en yakın bölgenizi kullanacak şekilde güncelleştirin.az group create --location eastus --name tailspin-space-game-rg
App Service planı oluşturmak için komut istemini kullanın.
az appservice plan create \ --name tailspin-space-game-asp \ --resource-group tailspin-space-game-rg \ --sku B1 \ --is-linux
Komut isteminde, komutuyla
az webapp create
her örnek (Geliştirme ve Hazırlama) için birer tane olan iki App Service örneği oluşturun.az webapp create \ --name tailspin-space-game-web-dev-$webappsuffix \ --resource-group tailspin-space-game-rg \ --plan tailspin-space-game-asp \ --runtime "DOTNET|8.0" az webapp create \ --name tailspin-space-game-web-staging-$webappsuffix \ --resource-group tailspin-space-game-rg \ --plan tailspin-space-game-asp \ --runtime "DOTNET|8.0"
Komut istemiyle,
az webapp list
komutunu çalıştırarak çalıştıklarını doğrulamak için her iki App Service örneğini de listeleyin.az webapp list \ --resource-group tailspin-space-game-rg \ --query "[].{hostName: defaultHostName, state: state}" \ --output table
Sonraki bölümde değişken olarak kullanmak için App Service örneklerinin adlarını kopyalayın.
Azure DevOps projenizi ve değişkenlerinizi oluşturma
Azure DevOps projenizi ve derleme işlem hattınızı ayarlayın. Ayrıca geliştirme ve hazırlama örnekleriniz için değişkenler de ekleyeceksiniz.
Derleme işlem hattınız:
- Dalda kod değişikliği olduğunda çalışan bir tetikleyici içerir
- İki değişken
buildConfiguration
tanımlar vereleaseBranchName
- Web uygulamasını oluşturan Build adlı bir aşama içerir
- Daha sonraki bir aşamada kullanacağınız bir yapıtı yayımlar
Derleme aşamasını ekleme
Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
İşlem Hatları'na gidin ve ardından yeni işlem hattı veya İlk işlem hattınızı oluşturuyorsanız işlem hattı oluştur'u seçin.
İlk olarak kaynak kodunuzun konumu olarak GitHub'ı seçerek sihirbazın adımlarını uygulayın.
Oturum açmak için GitHub'a yönlendirilebilirsiniz. Öyleyse GitHub kimlik bilgilerinizi girin.
Depo listesini gördüğünüzde deponuzu seçin.
Azure Pipelines uygulamasını yüklemek için GitHub'a yönlendirilebilirsiniz. Öyleyse Onayla ve yükle'yi seçin.
Yapılandır sekmesi görüntülendiğinde, Başlangıç işlem hattı'nı seçin.
azure-pipelines.yml içeriğini bu kodla değiştirin.
trigger: - '*' variables: buildConfiguration: 'Release' releaseBranchName: 'release' stages: - stage: 'Build' displayName: 'Build the web application' jobs: - job: 'Build' displayName: 'Build job' pool: vmImage: 'ubuntu-22.04' demands: - npm variables: wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '8.x' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK $(dotnetSdkVersion)' inputs: version: '$(dotnetSdkVersion)' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' displayName: 'Compile Sass assets' - task: gulp@1 displayName: 'Run gulp tasks' - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' displayName: 'Write build info' workingDirectory: $(wwwrootDir) - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build the project - $(buildConfiguration)' inputs: command: 'build' arguments: '--no-restore --configuration $(buildConfiguration)' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Publish the project - $(buildConfiguration)' inputs: command: 'publish' projects: '**/*.csproj' publishWebProjects: false arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' zipAfterPublish: true - publish: '$(Build.ArtifactStagingDirectory)' artifact: drop
Hazır olduğunuzda Kaydet ve çalıştır'ı seçin.
Örnek değişkenleri ekleme
Azure DevOps'ta İşlem Hatları>Kitaplığı'na gidin.
+ Değişken grubunu seçin.
Özellikler altında, değişken grubu adı için Release ekleyin.
Geliştirme ve test ana bilgisayar adlarınıza referans almak için iki değişken oluşturun. değerini
1234
örneğiniz için doğru değerle değiştirin.Değişken adı Örnek değer WebAppNameDev tailspin-space-game-web-dev-1234 WebAppNameStaging tailspin-space-game-web-staging-1234 Değişkenlerinizi kaydetmek için Kaydet'i seçin.
Geliştirme aşamasını ekleme
Ardından derlemenizi Geliştirme aşamasına yükseltmek için işlem hattınızı güncelleştireceksiniz.
Azure Pipelines'da İşlem Hatları>İşlem Hatları bölümüne gidin.
İşlem hattınızı düzenlemek için bağlam menüsünde Düzenle'yi seçin.
azure-pipelines.yml Geliştirme aşaması içerecek şekilde güncelleştirin. Geliştirme aşamasında işlem hattınız şunları yapacaktır:
- Bir koşul nedeniyle Derleme aşaması başarılı olduğunda çalıştırma
- Bir yapıtı şu kaynaktan indirme:
drop
- Azure Resource Manager hizmet bağlantısıyla Azure Uygulaması Hizmeti'ne dağıtma
trigger: - '*' variables: buildConfiguration: 'Release' releaseBranchName: 'release' stages: - stage: 'Build' displayName: 'Build the web application' jobs: - job: 'Build' displayName: 'Build job' pool: vmImage: 'ubuntu-22.04' demands: - npm variables: wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '8.x' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK $(dotnetSdkVersion)' inputs: version: '$(dotnetSdkVersion)' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' displayName: 'Compile Sass assets' - task: gulp@1 displayName: 'Run gulp tasks' - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' displayName: 'Write build info' workingDirectory: $(wwwrootDir) - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build the project - $(buildConfiguration)' inputs: command: 'build' arguments: '--no-restore --configuration $(buildConfiguration)' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Publish the project - $(buildConfiguration)' inputs: command: 'publish' projects: '**/*.csproj' publishWebProjects: false arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' zipAfterPublish: true - publish: '$(Build.ArtifactStagingDirectory)' artifact: drop - stage: 'Dev' displayName: 'Deploy to the dev environment' dependsOn: Build condition: succeeded() jobs: - deployment: Deploy pool: vmImage: 'ubuntu-22.04' environment: dev variables: - group: Release strategy: runOnce: deploy: steps: - download: current artifact: drop - task: AzureWebApp@1 displayName: 'Azure App Service Deploy: dev website' inputs: azureSubscription: 'your-subscription' appType: 'webAppLinux' appName: '$(WebAppNameDev)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'
AzureWebApp@1
Aboneliğinizi kullanmak için görevi değiştirin.Görev için Ayarlar'ı seçin.
your-subscription
Azure Aboneliği değerini kendi aboneliğinizi kullanacak şekilde güncelleştirin. Bu işlemin bir parçası olarak erişimi yetkilendirmeniz gerekebilir. YAML düzenleyicisinde kaynağınızı yetkilendirmeyle ilgili bir sorunla karşılaşırsanız alternatif bir yaklaşım hizmet bağlantısı oluşturmaktır.Uygulama türünü Linux üzerinde Web App olarak ayarlayın.
Görevi güncelleştirmek için Ekle'yi seçin.
İşlem hattınızı kaydedin ve çalıştırın.
Hazırlama aşamasını ekleme
Son olarak Geliştirme evresini Hazırlık'a yükselteceksiniz. Geliştirme ortamından farklı olarak, hazırlama ortamında daha fazla denetim sahibi olmak istiyorsanız, el ile onay ekleyeceksiniz.
Hazırlık ortamı oluşturma
Azure Pipelines'da Ortamlar'ı seçin.
Yeni ortam'ı seçin.
Staging adıyla ve Kaynak ayarı Yok olarak ayarlanmış yeni bir ortam oluşturun.
Hazırlama ortamı sayfasında Onaylar ve denetimler'i seçin.
Onaylar'ı seçin.
Onaylayanlar'da Kullanıcılar ve gruplar ekle'yi seçin, ve ardından hesabınızı seçin.
Onaylayanlara yönelik yönergeler bölümünde Hazırlamaya hazır olduğunda Bu değişikliği onayla yazın.
Kaydet'i seçin.
İşlem hattına yeni aşama ekleme
İşlem hattına el ile onay içeren yeni bir aşama Staging
ekleyeceksiniz.
İşlem hattı dosyanızı düzenleyin ve
Staging
bölümünü ekleyin.trigger: - '*' variables: buildConfiguration: 'Release' releaseBranchName: 'release' stages: - stage: 'Build' displayName: 'Build the web application' jobs: - job: 'Build' displayName: 'Build job' pool: vmImage: 'ubuntu-22.04' demands: - npm variables: wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '8.x' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK $(dotnetSdkVersion)' inputs: version: '$(dotnetSdkVersion)' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' displayName: 'Compile Sass assets' - task: gulp@1 displayName: 'Run gulp tasks' - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' displayName: 'Write build info' workingDirectory: $(wwwrootDir) - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build the project - $(buildConfiguration)' inputs: command: 'build' arguments: '--no-restore --configuration $(buildConfiguration)' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Publish the project - $(buildConfiguration)' inputs: command: 'publish' projects: '**/*.csproj' publishWebProjects: false arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' zipAfterPublish: true - publish: '$(Build.ArtifactStagingDirectory)' artifact: drop - stage: 'Dev' displayName: 'Deploy to the dev environment' dependsOn: Build condition: succeeded() jobs: - deployment: Deploy pool: vmImage: 'ubuntu-22.04' environment: dev variables: - group: Release strategy: runOnce: deploy: steps: - download: current artifact: drop - task: AzureWebApp@1 displayName: 'Azure App Service Deploy: dev website' inputs: azureSubscription: 'your-subscription' appType: 'webAppLinux' appName: '$(WebAppNameDev)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip' - stage: 'Staging' displayName: 'Deploy to the staging environment' dependsOn: Dev jobs: - deployment: Deploy pool: vmImage: 'ubuntu-22.04' environment: staging variables: - group: 'Release' strategy: runOnce: deploy: steps: - download: current artifact: drop - task: AzureWebApp@1 displayName: 'Azure App Service Deploy: staging website' inputs: azureSubscription: 'your-subscription' appType: 'webAppLinux' appName: '$(WebAppNameStaging)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'
AzureWebApp@1
Hazırlama aşamasındaki görevi aboneliğinizi kullanacak şekilde değiştirin.Görev için Ayarlar'ı seçin.
your-subscription
Azure Aboneliği değerini kendi aboneliğinizi kullanacak şekilde güncelleştirin. Bu işlemin bir parçası olarak erişimi yetkilendirmeniz gerekebilir.Uygulama türünü Linux üzerinde Web App olarak ayarlayın.
Görevi güncelleştirmek için Ekle'yi seçin.
İşlem hattı çalışmasına gidin. Derleme işlemi çalışırken izleyin. ulaştığında
Staging
işlem hattı el ile yayın onayını bekler. Ayrıca onay bekleyen bir işlem hattına sahip olduğunuzu belirten bir e-posta alırsınız.Onayı gözden geçirin ve işlem hattının çalışmasına izin verin.
Kaynakları temizleme
Bu uygulamayı kullanmaya devam etmeyecekseniz aşağıdaki adımları izleyerek Azure portalda kaynak grubunu ve Azure DevOps'taki projeyi silin:
Kaynak grubunuzu temizlemek için:
Azure portalına gidin ve oturum açın.
Menü çubuğunda Cloud Shell'i seçin. İstendiğinde Bash deneyimini seçin.
Kullandığınız kaynak grubunu silmek için aşağıdaki
tailspin-space-game-rg
komutunu çalıştırın.az group delete --name tailspin-space-game-rg
Azure DevOps projenizi, derleme işlem hattı da dahil olmak üzere, silmek için bkz. Projeyi silme.