Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Za pomocą funkcji GitHub Actions można utworzyć zautomatyzowany przepływ pracy tworzenia oprogramowania. Możesz użyć akcji Azure Web Deploy , aby zautomatyzować przepływ pracy i wdrożyć kontenery niestandardowe w usłudze Azure App Service.
Przepływ pracy jest definiowany przez plik YAML (.yml) w /.github/workflows/ ścieżce w repozytorium. Ta definicja zawiera różne kroki i parametry, które znajdują się w przepływie pracy.
W przypadku przepływu pracy kontenera usługi App Service plik zawiera trzy sekcje:
| Sekcja | Zadania |
|---|---|
| Authentication | 1. Pobierz jednostkę usługi lub profil publikowania. 2. Utwórz wpis tajny usługi GitHub. |
| Kompilacja | 1. Utwórz środowisko. 2. Skompiluj obraz kontenera. |
| Wdróż | 1. Wdróż obraz kontenera. |
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Konto usługi GitHub. Jeśli nie masz takiego konta, zarejestruj się bezpłatnie. Musisz mieć kod w repozytorium GitHub, aby wdrożyć go w usłudze aplikacja systemu Azure Service.
- Działający rejestr kontenerów i aplikacja usługi aplikacja systemu Azure Service dla kontenerów. W tym przykładzie użyto usługi Azure Container Registry. Pamiętaj, aby ukończyć pełne wdrożenie w usłudze Azure App Service dla kontenerów. W przeciwieństwie do zwykłych aplikacji internetowych aplikacje internetowe dla kontenerów nie mają domyślnej strony docelowej. Opublikuj kontener, aby mieć przykład roboczy.
- Wykonaj następujące zadania: Dowiedz się, jak utworzyć konteneryzowaną aplikację Node.js przy użyciu platformy Docker, wypchnąć obraz kontenera do rejestru, a następnie wdrożyć obraz w usłudze Azure App Service.
Generowanie poświadczeń wdrożenia
Zalecamy uwierzytelnianie za pomocą usługi Azure App Services for GitHub Actions przy użyciu narzędzia OpenID Connect. Możesz również uwierzytelnić się za pomocą jednostki usługi lub profilu publikowania.
Aby przeprowadzić uwierzytelnianie za pomocą platformy Azure, zapisz poświadczenia profilu publikowania lub obiekt zabezpieczeń jako tajne dane GitHub. Uzyskujesz dostęp do sekretu w swoim przepływie pracy.
Profil publikowania to poświadczenia na poziomie aplikacji. Skonfiguruj profil publikowania jako wpis tajny usługi GitHub.
Przejdź do usługi App Service w witrynie Azure Portal.
W okienku Przegląd wybierz pozycję Pobierz profil publikowania.
Uwaga
Od października 2020 r. użytkownicy muszą ustawić ustawienie aplikacji dla aplikacji
WEBSITE_WEBDEPLOY_USE_SCMinternetowych systemu Linuxtrueprzed pobraniem pliku. Aby dowiedzieć się, jak skonfigurować typowe ustawienia aplikacji internetowej, przejdź do tematu Konfigurowanie aplikacji usługi App Service w witrynie Azure Portal.Zapisz pobrany plik. Zawartość pliku służy do stworzenia sekretu GitHub.
Konfigurowanie wpisu tajnego usługi GitHub na potrzeby uwierzytelniania
W usłudze GitHub przejrzyj repozytorium. Wybierz Ustawienia>Zabezpieczenia>Wpisy tajne i zmienne>Akcje>Nowy wpis tajny repozytorium.
Aby użyć poświadczeń na poziomie aplikacji, wklej zawartość pobranego pliku profilu publikowania w polu wartości wpisu tajnego. Nadaj kluczowi nazwę wpisu tajnego AZURE_WEBAPP_PUBLISH_PROFILE.
Podczas konfigurowania przepływu pracy GitHub użyj sekretu AZURE_WEBAPP_PUBLISH_PROFILE w akcji wdrażania aplikacji sieciowej Azure. Na przykład:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Konfigurowanie wpisów tajnych usługi GitHub dla rejestru
Zdefiniuj wpisy tajne do użycia z akcją Logowanie do platformy Docker. W przykładzie w tym artykule użyto usługi Azure Container Registry dla rejestru kontenerów.
Przejdź do kontenera w witrynie Azure Portal lub na platformie Docker i skopiuj nazwę użytkownika i hasło. Nazwę użytkownika i hasło usługi Azure Container Registry można znaleźć w witrynie Azure Portal w obszarze Ustawienia>Klucze dostępu dla rejestru.
Zdefiniuj nowy wpis tajny dla nazwy użytkownika rejestru o nazwie
REGISTRY_USERNAME.Zdefiniuj nowy wpis tajny dla hasła rejestru o nazwie
REGISTRY_PASSWORD.
Kompilowanie obrazu kontenera
W poniższym przykładzie przedstawiono część przepływu pracy, który tworzy obraz platformy Docker Node.js. Zaloguj się do prywatnego rejestru kontenerów przy użyciu usługi Docker Login . W tym przykładzie użyto usługi Azure Container Registry, ale ta sama akcja działa w przypadku innych rejestrów.
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Możesz również użyć logowania do platformy Docker , aby zalogować się do wielu rejestrów kontenerów w tym samym czasie. Ten przykład obejmuje dwa nowe wpisy tajne usługi GitHub do uwierzytelniania za pomocą docker.io. W przykładzie przyjęto założenie, że na poziomie głównym rejestru znajduje się plik Dockerfile.
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- uses: azure/docker-login@v1
with:
login-server: index.docker.io
username: ${{ secrets.DOCKERIO_USERNAME }}
password: ${{ secrets.DOCKERIO_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
W poniższym przykładzie przedstawiono część przepływu pracy, który tworzy obraz platformy Docker systemu Windows. Zaloguj się do prywatnego rejestru kontenerów przy użyciu usługi Docker Login . W tym przykładzie użyto usługi Azure Container Registry, ale ta sama akcja działa w przypadku innych rejestrów.
name: Windows Container Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Możesz również użyć logowania do platformy Docker , aby zalogować się do wielu rejestrów kontenerów w tym samym czasie. Ten przykład obejmuje dwa nowe wpisy tajne usługi GitHub do uwierzytelniania za pomocą docker.io. W przykładzie przyjęto założenie, że na poziomie głównym rejestru znajduje się plik Dockerfile.
name: Windows Container Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- uses: azure/docker-login@v1
with:
login-server: index.docker.io
username: ${{ secrets.DOCKERIO_USERNAME }}
password: ${{ secrets.DOCKERIO_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Wdrażanie w kontenerze usługi App Service
Aby wdrożyć obraz w kontenerze niestandardowym w usłudze App Service, użyj azure/webapps-deploy@v2 akcji . Ta akcja ma siedem parametrów:
| Parametr | Wyjaśnienie |
|---|---|
app-name |
(Wymagane) Nazwa aplikacji usługi App Service. |
publish-profile |
(Opcjonalnie) Używane z aplikacjami internetowymi (Windows i Linux) i kontenerami aplikacji internetowych (Linux). Scenariusz z wieloma kontenerami nie jest obsługiwany. Opublikuj zawartość pliku profilu \*.publishsettings z tajnymi danymi Web Deploy. |
slot-name |
(Opcjonalnie) Wprowadź istniejące gniazdo inne niż gniazdo produkcyjne. |
package |
(Opcjonalnie) Używane tylko w przypadku aplikacji internetowych: ścieżka do pakietu lub folderu.
\*.zip, \*.war, \*.jar, lub folder do wdrożenia. |
images |
(Wymagane) Używane tylko z kontenerami aplikacji internetowej: określ w pełni kwalifikowaną nazwę obrazu kontenera. Na przykład: myregistry.azurecr.io/nginx:latest lub python:3.12.12-alpine/. W przypadku aplikacji z wieloma kontenerami można podać wiele nazw obrazów kontenera (rozdzielonych wieloma wierszami). |
configuration-file |
(Opcjonalnie) Używane tylko z kontenerami aplikacji internetowej: ścieżka pliku Docker Compose. Powinna być w pełni kwalifikowaną ścieżką lub w stosunku do domyślnego katalogu roboczego. Wymagane w przypadku aplikacji wielokontenerowych. |
startup-command |
(Opcjonalnie) Wprowadź polecenie uruchamiania. Na przykład: dotnet run lub dotnet filename.dll. |
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'myapp'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'
name: Windows_Container_Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'myapp'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'
Treści powiązane
Nasz zestaw akcji pogrupowanych w różne repozytoria można znaleźć w witrynie GitHub. Każde repozytorium zawiera dokumentację i przykłady ułatwiające korzystanie z GitHub do realizacji procesów ciągłej integracji i ciągłego wdrażania oraz wdrażanie aplikacji na platformie Azure.