Alıştırma - Çekme isteği oluşturma
Bu ünitede, herkesin çalışmanızdan yararlanabilmesi için çekme isteği gönderme ve değişikliklerinizi dalda main
birleştirme işlemini uygulayacaksınız.
Azure Pipelines ile derleme işlem hattı oluşturma bölümünde, Space Game web sitesi için temel bir derleme işlem hattı tanımladığınız adlı build-pipeline
bir Git dalı oluşturdunuz. Derleme tanımınızın azure-pipelines.yml adlı bir dosyada olduğunu hatırlayın.
Dalınız bir derleme yapıtı oluştursa da, bu çalışma yalnızca dalda build-pipeline
bulunur. Dalınızı dalla main
birleştirmeniz gerekir.
Çekme isteğinin diğer geliştiricilere gerekirse gözden geçirmeye hazır bir kodunuz olduğunu ve değişikliklerinizin dal gibi main
başka bir dalda birleştirilmesini istediğinizi söylediğini hatırlayın.
Başlamadan önce Mara ve Andy'ye bakalım.
Merhaba Mara. Azure'da çalışan bir derleme işlem hattınız olduğunu biliyorum. Web sitesine bir özellik ekliyorum ve derleme işlemini kendim görmek istiyorum. Bunu yapmaya hazır mısınız?
Kesinlikle. İşlem hattını bir dalda oluşturdum. Neden bir çekme isteği oluşturup işlem hattını da kullanabilmeniz için bunu birleştirmiyoruz main
?
Kulağa harika geliyor. Bir göz atalım.
Dal oluşturma ve başlangıç kodu ekleme
Önceki modülde oluşturduğunuz derleme işlem hattını kullanabilseniz de adlı code-workflow
yeni bir dal oluşturalım. Bu dal tabanlıdır main
, bu nedenle işlemi en baştan uygulayabilirsiniz.
Visual Studio Code'da tümleşik terminali açın.
Dala
main
geçin:git checkout main
GitHub'dan kodun en son sürümüne sahip olduğunuzdan emin olun:
git pull origin main
adlı
code-workflow
bir dal oluşturun:git checkout -B code-workflow
-b
bağımsız değişkeni, yoksa yeni bir dal oluşturulmasını belirtir. Var olan bir dala geçmek istediğinizde bağımsız değişkeni atlar-b
.Varsayılan olarak, yeni dalınız komutu çalıştırdığınız
git checkout
önceki dalda derlanır. Burada üst dal şeklindedirmain
, ancak üst dal, üzerinde derlemek veya denemek istediğiniz başka birinin başlattığı özellik dalı gibi başka bir dal olabilir.Artık kendi yerel dalınızda olduğunuzdan, ihtiyacınız olan değişiklikleri yapmak güvenlidir. Hangi dalda olduğunuzu görmek istiyorsanız komutunu çalıştırın
git branch -v
.Dosya gezgininden azure-pipelines.yml dosyasını açın ve içeriğini şununla değiştirin:
trigger: - '*' pool: vmImage: 'ubuntu-20.04' demands: - npm variables: buildConfiguration: 'Release' wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '6.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 - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact: drop' condition: succeeded()
Bu yapılandırma, önceki modülde oluşturduğunuz temel yapılandırmaya benzer. Kısa olması için yalnızca projenizin Yayın yapılandırmasını oluşturur.
Dalınızı GitHub'a gönderme
Burada dalınızı code-workflow
GitHub'a göndererek Azure Pipelines'ın uygulamayı derlemesini izleyeceksiniz.
Terminalde, dalınız üzerinde hangi uncommitted work'un mevcut olduğunu görmek için komutunu çalıştırın
git status
:git status
azure-pipelines.yml dosyasının değiştirildiğini göreceksiniz. Bunu kısa süre içinde dalınıza işlemeniz gerekir, ancak önce Git'in dosyayı hazırlama olarak adlandırılan bu dosyayı izlediğinden emin olmanız gerekir.
yalnızca çalıştırdığınızda
git commit
hazırlanmış değişiklikler işlenir. Ardından, hazırlama alanına veya dizine azure-pipelines.yml eklemek için komutunu çalıştırırsınızgit add
.Hazırlama alanına azure-pipelines.yml eklemek için aşağıdaki
git add
komutu çalıştırın:git add azure-pipelines.yml
git commit
Aşağıdaki komutu çalıştırarak hazırlanmış dosyanızı dala işleyincode-workflow
:git commit -m "Add the build configuration"
-m
bağımsız değişkeni işleme iletisini belirtir. İşleme iletisi, değiştirilen bir dosyanın geçmişinin bir parçası olur. Gözden geçirenlerin değişikliği anlamasına yardımcı olur ve gelecekteki bakımcıların dosyanın zaman içinde nasıl değiştiğini anlamasına yardımcı olur.Bahşiş
En iyi işleme iletileri "Bu işlemeyi uygularsanız,..." cümlesini tamamlar.
Bağımsız değişkeni atlarsanız
-m
Git, değişikliği ayrıntılı olarak belirtebileceğiniz bir metin düzenleyicisi getirir. Bu seçenek, birden çok satıra yayılan bir işleme iletisi belirtmek istediğinizde kullanışlıdır. İlk boş satıra kadar olan metin işleme başlığını belirtir.GitHub'daki deponuza dal göndermek veya karşıya yüklemek
code-workflow
için şugit push
komutu çalıştırın:git push origin code-workflow
İsteğe bağlı bir adım olarak Azure Pipelines'da projenize gidin ve çalıştırılırken derlemeyi takip edin.
Bu derlemeye CI derlemesi adı verilir. İşlem hattı yapılandırmanız, derleme işlemine hangi dalların katıldığını denetlemek için tetikleyici olarak adlandırılan öğeyi kullanır. Burada "*" tüm dalları belirtir.
trigger: - '*'
Daha sonra, yalnızca ihtiyacınız olan dallardan derlemek için işlem hattı yapılandırmanızı nasıl denetleyebileceğinizi göreceksiniz.
Derlemenin başarıyla tamamlandığını ve derlenmiş web uygulamasını içeren bir yapıt ürettiğini göreceksiniz.
Çekme isteği oluşturma
Burada, dalınız için bir çekme isteği oluşturacaksınız:
mslearn-tailspin-spacegame-web deponuza gidin.
Dal açılan listesinde dalınızı
code-workflow
seçin.Çekme isteğinizi başlatmak için Katkıda Bulun'a ve ardından Çekme isteğini aç'a tıklayın.
Tabanın Microsoft deposunu değil çatallanmış deponuzu belirttiğinden emin olun.
Seçiminiz şöyle görünür:
Önemli
Değişikliklerinizi Microsoft deposuyla birleştiremediğinizden bu adım önemlidir. Temel deponun MicrosoftDocs'u değil GitHub hesabınızı işaretdiğinden emin olun.
MicrosoftDocs'a karşı bir çekme isteğiyle sonuçlanırsa, çekme isteğini kapatmanız ve bu adımları yinelemeniz yeterlidir.
Çatallanmış bir depoda çalıştığınız için bu işlem fazladan bir adım içerir. Çatalla değil de doğrudan kendi deponuzla çalışırken
main
dalınız varsayılan olarak seçilir.Çekme isteğiniz için bir başlık ve açıklama girin.
Başlık:
Azure Pipelines'ı yapılandırma
Açıklama:
Bu işlem hattı yapılandırması uygulamayı oluşturur ve Yayın yapılandırması için bir derleme oluşturur.
Çekme isteğinizi tamamlamak için Çekme isteği oluştur'u seçin.
Bu adım hiçbir kodu birleştirmez. Diğer kişilere, dalda
main
birleştirilecek değişiklikler önerdiğinizi bildirir.Çekme isteği penceresi görüntülenir. Azure Pipelines'da derleme durumunun çekme isteğinin bir parçası olarak görünecek şekilde yapılandırıldığını görebilirsiniz. Bu şekilde, siz ve diğerleri derlemenin çalışır durumdaki durumunu görüntüleyebilirsiniz.
GitHub'a dal gönderdiğinizde olduğu gibi, çekme isteği varsayılan olarak Uygulamanızı derlemek için Microsoft Azure Pipelines'ı tetikler.
Bahşiş
Derleme durumunun hemen göründüğünü görmüyorsanız, birkaç dakika bekleyin veya sayfayı yenileyin.
İsteğe bağlı olarak Ayrıntılar bağlantısını seçin ve işlem hattında ilerledikçe derlemeyi takip edin.
Derlemenizi, soru-cevap gibi işlemdeki bir sonraki adıma devredebilirsiniz. Daha sonra işlem hattını, değişikliğinizi soru-cevap laboratuvarınıza veya üretim ortamınıza göndermek üzere yapılandırabilirsiniz.
GitHub'da çekme isteğinize geri dönün.
Derlemenin tamamlanmasını bekleyin. Artık çekme isteğinizi birleştirmeye hazırsınız.
Birleştirme çekme isteğini seçin ve ardından Birleştirmeyi onayla'yı seçin.
Dalı
code-workflow
GitHub'dan silmek için Dalı sil'i seçin.Çekme isteğinizi birleştirdikten sonra GitHub'dan bir dal silmek tamamen güvenlidir. Aslında bu yaygın bir uygulamadır çünkü dal artık gerekli değildir. Değişiklikler birleştirilir ve değişikliklerle ilgili ayrıntıları GitHub'da veya komut satırında bulabilirsiniz. Birleştirilmiş dalı silmek, başkalarının yalnızca etkin olan çalışmayı görmesine de yardımcı olur.
Git dalları kısa ömürlü olmalıdır. Bir dalı birleştirdikten sonra, dalın üzerine ek işlemeler göndermez veya ikinci kez birleştirmezsiniz. Çoğu durumda, yeni bir özellik veya hata düzeltmesiyle her başladığınızda, dalı temel alan
main
temiz bir dal ile başlarsınız.GitHub'da bir dal silindiğinde bu dal yerel sisteminizden silinmez. Bunu yapmak için anahtarı komutuna
git branch
geçirirsiniz-d
.
Değişiklik kaç kez oluşturulur?
Yanıt, derleme yapılandırmanızın nasıl tanımlandığına bağlıdır. Azure Pipelines, derlemelerin gerçekleşmesine neden olan olayları belirten tetikleyiciler tanımlamanızı sağlar. Hangi dalların derlenmesini, hatta derlemeyi tetikleyen dosyaları denetleyebilirsiniz.
Örneğin, herhangi bir Git dalında GitHub'a bir değişiklik gönderildiğinde derlemenin gerçekleşmesini istediğinizi varsayalım. Ancak yalnızca projenizin docs klasöründeki dosyalarda değişiklik yapıldığında derlemenin gerçekleşmesini istemezsiniz. Bu trigger
bölümü derleme yapılandırmanıza eklemek isteyebilirsiniz:
trigger:
branches:
include:
- '*' # build all branches
paths:
exclude:
- docs/* # exclude the docs folder
Varsayılan olarak, bir değişiklik herhangi bir daldaki herhangi bir dosyaya gönderildiğinde bir derleme tetikler.
Sürekli tümleştirme (CI) derlemesi, bir dala değişiklik gönderdiğinizde çalışan bir derlemedir.
Çekme isteği (PR) derlemesi, çekme isteğini açtığınızda veya mevcut bir çekme isteğine ek değişiklikler gönderdiğinizde çalışan bir derlemedir.
Dal aracılığıyla code-workflow
yaptığınız değişiklikler üç koşul altında oluşturulur:
- Bir CI derlemesi, değişiklikleri dalına gönderdiğinizde
code-workflow
gerçekleşir. - Bir çekme isteği derlemesi, dalda dal
main
üzerindecode-workflow
bir çekme isteği açtığınızda gerçekleşir. - Çekme isteği dalla birleştirildikten sonra son CI derlemesi
main
gerçekleşir.
Çekme isteği derlemeleri, önerilen değişikliklerinizin veya başka bir hedef dal ile main
birleştirildikten sonra düzgün çalışacağını doğrulamanıza yardımcı olur.
Son CI derlemesi, çekme isteği birleştirildikten sonra değişikliklerin hala iyi olduğunu doğrular.
İsteğe bağlı bir adım olarak Azure Pipelines'a gidin ve dalda son CI derlemesinin gerçekleşmesini main
izleyin.