Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С помощью GitHub Actions можно создать автоматизированный рабочий процесс разработки программного обеспечения. Вы можете использовать действие веб-развертывания Azure для автоматизации рабочего процесса и развертывания пользовательских контейнеров в Службе приложений Azure.
Рабочий процесс определяется файлом YAML (.yml) по пути /.github/workflows/ в вашем репозитории. Это определение содержит разные шаги и параметры рабочего процесса.
Для рабочего процесса контейнера службы приложений файл содержит три раздела:
| Раздел | Задачи |
|---|---|
| Аутентификация | 1. Получение субъекта-службы или профиля публикации. 2. Создание секрета GitHub. |
| Сборка | 1. Создание среды. 2. Создание образа контейнера. |
| Развертывание | 1. Развертывание образа контейнера. |
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Учетная запись GitHub. Если у вас ее нет, зарегистрируйтесь бесплатно. Для развертывания в Службе приложений Azure необходимо иметь код в репозитории GitHub.
- Рабочий реестр контейнеров и приложение “Служба приложений Azure” для контейнеров. В этом примере используется Реестр контейнеров Azure. Обязательно завершите полное развертывание в Службе приложений Azure для контейнеров. В отличие от обычных веб-приложений, веб-приложения для контейнеров не имеют целевой страницы по умолчанию. Опубликуйте контейнер, чтобы получить рабочий пример.
- Выполните следующие задачи. Узнайте, как создать контейнерное приложение Node.js с помощью Docker, отправить образ контейнера в реестр, а затем развернуть образ в Службе приложений Azure.
Создание учетных данных для развертывания.
Рекомендуется пройти проверку подлинности в Службах приложений Azure для GitHub Actions с помощью OpenID Connect. Вы также можете выполнить проверку подлинности с помощью учетной записи службы или профиля публикации.
Чтобы выполнить проверку подлинности с помощью Azure, сохраните учетные данные профиля публикации или сервисный принципал в виде секрета GitHub. Вы получаете доступ к секрету в рабочем процессе.
Профиль публикации — это учетные данные уровня приложения. Настройте профиль публикации в качестве секрета GitHub.
Перейдите в службу приложений на портале Azure.
На панели "Обзор" выберите "Получить профиль публикации".
Примечание.
По состоянию на октябрь 2020 г. пользователи должны задать параметр приложения для веб-приложений
WEBSITE_WEBDEPLOY_USE_SCMLinux,trueпрежде чем скачать файл. Чтобы узнать, как настроить общие параметры веб-приложения, перейдите к разделу "Настройка приложения службы приложений" на портале Azure.Сохраните скачанный файл. Содержимое файла используется для создания секрета GitHub.
Настройка секрета GitHub для проверки подлинности
В GitHub найдите нужный репозиторий. Выберите Настройки>Безопасность>Секреты и переменные>Действия>Новый секрет репозитория.
Чтобы использовать учетные данные уровня приложения, вставьте содержимое скачанного файла профиля публикации в поле значения секрета. Присвойте этому секрету имя AZURE_WEBAPP_PUBLISH_PROFILE.
При настройке рабочего процесса GitHub используйте секрет AZURE_WEBAPP_PUBLISH_PROFILE при выполнении действия по развертыванию веб-приложения Azure. Например:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Настройка секретов GitHub для реестра
Определите секреты, которые будут использоваться действием входа в Docker. В этом примере используется реестр контейнеров Azure для реестра контейнеров.
Перейдите к контейнеру на портале Azure или Docker и скопируйте имя пользователя и пароль. Имя пользователя и пароль Реестра контейнеров Azure можно найти на портале Azure в разделе Параметры>Ключи доступа для вашего реестра.
Задайте новый секрет для имени пользователя
REGISTRY_USERNAMEреестра.Задайте новый секрет для пароля
REGISTRY_PASSWORDреестра.
Создание образа контейнера
В следующем примере показана часть рабочего процесса, создающего образ Docker Node.js. Используйте Docker Login для входа в частный реестр контейнеров. В этом примере используется Реестр контейнеров Azure, но то же действие работает для других реестров.
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 }}
Вы также можете использовать вход Docker для входа в несколько реестров контейнеров одновременно. Этот пример включает два новых секрета GitHub для проверки подлинности с помощью docker.io. В этом примере предполагается, что файл 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 }}
В следующем примере показана часть рабочего процесса, создающего образ Windows Docker. Используйте Docker Login для входа в частный реестр контейнеров. В этом примере используется Реестр контейнеров Azure, но то же действие работает для других реестров.
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 }}
Вы также можете использовать вход Docker для входа в несколько реестров контейнеров одновременно. Этот пример включает два новых секрета GitHub для проверки подлинности с помощью docker.io. В этом примере предполагается, что файл 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 }}
Развертывание в контейнере Службы приложений
Чтобы развернуть образ в настраиваемом контейнере Службы приложений, используйте действие azure/webapps-deploy@v2. У этого действия семь параметров:
| Параметр | Описание |
|---|---|
app-name |
(обязательно) Имя приложения службы приложений. |
publish-profile |
(Необязательно) Используется с веб-приложениями (Windows и Linux) и контейнерами веб-приложений (Linux). Сценарий с несколькими контейнерами не поддерживается. Публикация содержимого файла профиля \*.publishsettings с секретами Web Deploy. |
slot-name |
(Необязательно) Введите существующий слот, отличный от рабочего слота. |
package |
(Необязательно) Используется только с веб-приложениями: путь к пакету или папке.
\*.zip, \*.war, \*.jar или папка для развертывания. |
images |
(обязательно) Используется только с контейнерами веб-приложений: укажите полное имя образа контейнера. Например, myregistry.azurecr.io/nginx:latest или python:3.12.12-alpine/. Для приложения с несколькими контейнерами можно указать несколько имен образов контейнеров (разделенные несколькими строками). |
configuration-file |
(Необязательно) Используется только с контейнерами веб-приложений: путь к файлу Docker Compose. Это должен быть полный путь или путь относительно рабочего каталога по умолчанию. Требуется для приложений с несколькими контейнерами. |
startup-command |
(Необязательно) Введите команду запуска. Пример: dotnet run или 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 }}'
Связанный контент
Наш набор действий можно найти в разных репозиториях на GitHub. Каждый репозиторий содержит документацию и примеры, помогающие использовать GitHub для CI/CD и развертывать приложения в Azure.