Ćwiczenie — tworzenie żądania ściągnięcia
W tej lekcji przećwiczysz proces przesyłania żądania ściągnięcia i scalania zmian w main
gałęzi, aby wszyscy mogli korzystać z pracy.
W obszarze Tworzenie potoku kompilacji za pomocą usługi Azure Pipelines utworzono gałąź Git o nazwie build-pipeline
, w której zdefiniowano podstawowy potok kompilacji dla witryny internetowej Space Game . Przypomnij sobie, że definicja kompilacji znajduje się w pliku o nazwie azure-pipelines.yml.
Mimo że gałąź generuje artefakt kompilacji, ta praca istnieje tylko w build-pipeline
gałęzi. Należy scalić gałąź z gałęzią main
.
Pamiętaj, że żądanie ściągnięcia informuje innych deweloperów, że masz gotowy kod do przejrzenia, w razie potrzeby, i chcesz, aby zmiany zostały scalone z inną gałęzią, taką jak main
gałąź.
Zanim rozpoczniemy, sprawdźmy, co robią Mara i Andy.
Andy: Cześć, Mara. Wiem, że masz uruchomiony potok kompilacji w usłudze Azure. Dodajemy funkcję do witryny internetowej i chcę zobaczyć proces kompilacji dla siebie. Czy możemy to zrobić?
Mara: Absolutnie. Utworzyłam potok dla gałęzi. Dlaczego nie tworzymy żądania ściągnięcia i nie scalamy go w main
taki sposób, aby można było również użyć potoku?
Andy: Brzmi świetnie. Zobaczmy.
Tworzenie gałęzi i dodawanie kodu początkowego
Chociaż możesz użyć potoku kompilacji utworzonego w poprzednim module, utwórzmy nową gałąź o nazwie code-workflow
. Ta gałąź jest oparta na metodzie main
, dzięki czemu można ćwiczyć proces od początku.
W programie Visual Studio Code otwórz zintegrowany terminal.
Przejdź do
main
gałęzi:git checkout main
Upewnij się, że masz najnowszą wersję kodu z usługi GitHub:
git pull origin main
Utwórz gałąź o nazwie
code-workflow
:git checkout -B code-workflow
Argument
-b
wskazuje, że jeśli nowa gałąź nie istnieje, należy ją utworzyć. Pomiń argument-b
, gdy chcesz przełączyć się na istniejącą gałąź.Domyślnie nowa gałąź jest oparta na poprzedniej gałęzi, w której uruchomiono polecenie
git checkout
. W tym miejscu gałąź nadrzędna tomain
, ale gałąź nadrzędna może być inna, na przykład gałąź funkcji uruchomiona przez inną osobę, z którą chcesz budować lub eksperymentować.Teraz możesz bezpiecznie wprowadzić wszelkie potrzebne zmiany, ponieważ jesteś we własnej gałęzi lokalnej. Jeśli chcesz zobaczyć, która gałąź jest włączona, uruchom polecenie
git branch -v
.W Eksploratorze plików otwórz azure-pipelines.yml i zastąp jego zawartość następującymi elementami:
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()
Ta konfiguracja przypomina podstawową utworzoną w poprzednim module. W przypadku zwięzłości kompiluje tylko konfigurację wydania projektu.
Wypychanie gałęzi do repozytorium GitHub
W tym miejscu wypchniesz gałąź code-workflow
do usługi GitHub i zobaczysz, jak usługa Azure Pipelines skompiluje aplikację.
W terminalu uruchom polecenie
git status
, aby zobaczyć, co istnieje w gałęzi niezatwierdzonej pracy:git status
Zobaczysz, że azure-pipelines.yml została zmodyfikowana. Wkrótce zatwierdzisz to w gałęzi, ale najpierw musisz upewnić się, że usługa Git śledzi ten plik, który jest nazywany przemieszczaniem pliku.
Zmiany etapowe są zatwierdzane tylko po uruchomieniu polecenia
git commit
. Następnie uruchom poleceniegit add
, aby dodać azure-pipelines.yml do obszaru przejściowego lub indeksu.Uruchom następujące
git add
polecenie, aby dodać azure-pipelines.yml do obszaru przejściowego:git add azure-pipelines.yml
Uruchom następujące
git commit
polecenie, aby zatwierdzić przygotowany plik wcode-workflow
gałęzi:git commit -m "Add the build configuration"
Argument
-m
określa komunikat dotyczący zatwierdzenia. Ten komunikat stanie się częścią historii zmienionego pliku. Pomaga on recenzentom zrozumieć zmianę i pomaga przyszłym opiekunom zrozumieć, jak plik zmienił się wraz z upływem czasu.Napiwek
Najlepsze komunikaty zatwierdzenia zakończą zdanie "Jeśli zastosujesz to zatwierdzenie, będziesz ..."
Jeśli pominiesz argument
-m
system Git uruchomi edytor tekstu, w którym można wprowadzić szczegóły zmiany. Ta opcja jest przydatna, gdy trzeba wprowadzić komunikat zawierający wiele wierszy tekstu. Tekst przed pierwszym pustym wierszem jest tytułem zatwierdzenia.Uruchom to
git push
polecenie, aby wypchnąć lub przekazaćcode-workflow
gałąź do repozytorium w usłudze GitHub:git push origin code-workflow
Opcjonalnie przejdź do projektu w usłudze Azure Pipelines i prześledź kompilację podczas jej uruchamiania.
Ta kompilacja jest nazywana kompilacją ciągłej integracji. Konfiguracja potoku używa wyzwalacza do kontrolowania gałęzi uczestniczących w procesie kompilacji. W tym miejscu "*" określa wszystkie gałęzie.
trigger: - '*'
Później zobaczysz, jak kontrolować konfigurację potoku w celu kompilacji tylko z potrzebnych gałęzi.
Zobaczysz, że kompilacja zakończy się pomyślnie i utworzy artefakt zawierający utworzoną aplikację internetową.
Tworzenie żądania ściągnięcia
W tym miejscu utworzysz żądanie ściągnięcia dla gałęzi:
W przeglądarce zaloguj się do usługi GitHub.
Przejdź do repozytorium mslearn-tailspin-spacegame-web .
Z listy rozwijanej Gałąź wybierz gałąź
code-workflow
.Aby rozpocząć żądanie ściągnięcia, wybierz pozycję Współtworzenie , a następnie otwórz żądanie ściągnięcia.
Upewnij się, że baza określa rozwidlenie repozytorium, a nie repozytorium firmy Microsoft.
Wybór wygląda następująco:
Ważne
Ten krok jest ważny, ponieważ nie można scalić zmian w repozytorium firmy Microsoft. Upewnij się, że repozytorium podstawowe wskazuje konto usługi GitHub, a nie MicrosoftDocs.
Jeśli skończysz z żądaniem ściągnięcia względem programu MicrosoftDocs, po prostu zamknij żądanie ściągnięcia i powtórz te kroki.
Ten proces obejmuje dodatkowy krok, ponieważ pracujesz z rozwidlenia repozytorium. Gdy pracujesz bezpośrednio z własnym repozytorium, a nie z rozwidleniem, domyślnie wybrana jest gałąź
main
.Wprowadź tytuł i opis żądania ściągnięcia.
Tytuł:
Konfigurowanie usługi Azure Pipelines
Opis rozwiązania:
Ta konfiguracja potoku kompiluje aplikację i tworzy kompilację dla konfiguracji wydania.
Aby ukończyć żądanie ściągnięcia, wybierz pozycję Utwórz żądanie ściągnięcia.
Ten krok nie powoduje scalenia kodu. Informuje inne osoby, że proponowane zmiany mają zostać scalone z gałęzią
main
.Zostanie wyświetlone okno żądania ściągnięcia. Stan kompilacji w usłudze Azure Pipelines jest skonfigurowany do wyświetlania w ramach żądania ściągnięcia. Dzięki temu ty i inni użytkownicy mogą wyświetlać stan kompilacji podczas jej działania.
Podobnie jak podczas wypychania gałęzi do usługi GitHub, żądanie ściągnięcia domyślnie wyzwala usługę Microsoft Azure Pipelines w celu skompilowania aplikacji.
Napiwek
Jeśli stan kompilacji nie zostanie wyświetlony od razu, zaczekaj chwilę lub odśwież stronę.
Opcjonalnie wybierz link Szczegóły , a następnie prześledzić kompilację podczas przechodzenia przez potok.
Możesz przekazać kompilację na następny etap procesu, na przykład do kontroli jakości. Później możesz skonfigurować potok, tak aby zmiany były wypychane aż do etapu kontroli jakości lub produkcji.
Wróć do żądania ściągnięcia w usłudze GitHub.
Poczekaj na zakończenie kompilacji. Teraz możesz scalić żądanie ściągnięcia.
Wybierz pozycję Scal żądanie ściągnięcia, a następnie wybierz pozycję Potwierdź scalanie.
Aby usunąć
code-workflow
gałąź z usługi GitHub, wybierz pozycję Usuń gałąź.Po scaleniu żądania ściągnięcia można całkowicie bezpiecznie usunąć gałąź z usługi GitHub. W rzeczywistości jest to powszechna praktyka, ponieważ gałąź nie jest już potrzebna. Zmiany zostały scalone, a szczegółowe informacje o zmianach można nadal znaleźć w usłudze GitHub lub za pomocą wiersza polecenia. Usunięcie scalonej gałęzi pomaga również innym osobom wyświetlać tylko pracę, która jest obecnie aktywna.
Gałęzie usługi Git mają być krótkotrwałe. Po scaleniu gałęzi nie wypchniesz do niej dodatkowych zatwierdzeń ani nie scalisz jej po raz drugi. W większości przypadków za każdym razem, gdy uruchamiasz nową funkcję lub poprawkę usterek, zaczynasz od czystej gałęzi opartej
main
na gałęzi.Usunięcie gałęzi w usłudze GitHub nie powoduje usunięcia jej z systemu lokalnego. Aby to zrobić, należy dodać przełącznik
-d
do poleceniagit branch
.
Ile razy zmiany są kompilowane?
Zależy to od zdefiniowanej konfiguracji kompilacji. Usługa Azure Pipelines umożliwia określenie wyzwalaczy, które wskazują zdarzenia uruchamiające kompilację. W ten sposób można zdecydować, które gałęzie mają być kompilowane oraz które pliki wyzwalają proces kompilacji.
Załóżmy na przykład, że chcesz, aby kompilacja miała miejsce, gdy zmiana zostanie wypchnięta do usługi GitHub w dowolnej gałęzi git. Nie chcesz jednak, aby kompilacja miała miejsce, gdy jedynymi zmianami są pliki w folderze dokumentacji projektu. Możesz uwzględnić tę trigger
sekcję w konfiguracji kompilacji:
trigger:
branches:
include:
- '*' # build all branches
paths:
exclude:
- docs/* # exclude the docs folder
Domyślnie kompilacja jest wyzwalana po wypchnięciu zmiany do dowolnego pliku w dowolnej gałęzi.
Kompilacja ciągłej integracji to kompilacja uruchamiana podczas wypychania zmiany do gałęzi.
Kompilacja żądania ściągnięcia to kompilacja uruchamiana podczas otwierania żądania ściągnięcia lub wypychania dodatkowych zmian do istniejącego żądania ściągnięcia.
Zmiany wprowadzone w code-workflow
gałęzi są tworzone w trzech warunkach:
- Kompilacja CI uruchamia się po wypchnięciu zmian do gałęzi
code-workflow
. - Kompilacja PR ma miejsce po otwarciu żądania ściągnięcia w gałęzi
code-workflow
dla gałęzimain
branch. - Ostateczna kompilacja ciągłej integracji odbywa się po scaleniu żądania ściągnięcia z gałęzią
main
.
Kompilacje żądania ściągnięcia ułatwiają sprawdzenie, czy proponowane zmiany będą działać poprawnie po scaleniu z main
inną gałęzią docelową lub inną.
Końcowa kompilacja CI pozwala upewnić się, że zmiany są prawidłowe po scaleniu wersji PR.
Opcjonalnie przejdź do usługi Azure Pipelines i obejrzyj ostatnią kompilację main
ciągłej integracji w gałęzi.