Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede usar Acciones de GitHub para crear un flujo de trabajo de desarrollo de software automatizado. Puede usar la acción Azure Web Deploy para automatizar el flujo de trabajo e implementar contenedores personalizados en Azure App Service.
Un archivo YAML (.yml) define un flujo de trabajo en la ruta de acceso /.github/workflows/ de su repositorio. En esta definición se incluyen los diversos pasos y parámetros que se incluyen en el flujo de trabajo.
Para un flujo de trabajo de contenedor de App Service, el archivo tiene tres secciones:
| Sección | Tareas |
|---|---|
| Autenticación | 1. Recupere una entidad de servicio o un perfil de publicación. 2. Cree un secreto de GitHub. |
| Compilar | 1. Cree el entorno. 2. Compile la imagen de contenedor. |
| Implementación | 1. Implemente la imagen de contenedor. |
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Una cuenta de GitHub. Si no tiene ninguna, regístrese gratis. Debe tener código en un repositorio de GitHub para implementar en Azure App Service.
- Un registro de contenedor en funcionamiento y la aplicación de Azure App Service para contenedores. En este ejemplo, se utiliza Azure Container Registry. Asegúrese de finalizar la implementación completa en Azure App Service para contenedores. A diferencia de las aplicaciones web normales, las aplicaciones web para contenedores no tienen una página de aterrizaje predeterminada. Publique el contenedor para tener un ejemplo práctico.
- Complete estas tareas: aprenda a crear una aplicación de Node.js en contenedor mediante Docker, insertar la imagen de contenedor en un registro e implementar la imagen en Azure App Service.
Genere las credenciales de implementación.
Se recomienda autenticarse con Azure App Services para Acciones de GitHub mediante OpenID Connect. También puede autenticarse con una entidad de servicio o un perfil de publicación.
Para autenticarse con Azure, guarde la credencial del perfil de publicación o la entidad de servicio como secreto de GitHub. Accede al secreto de tu flujo de trabajo.
Un perfil de publicación es una credencial de nivel de aplicación. Configure el perfil de publicación como secreto de GitHub.
Vaya a App Service en Azure Portal.
En el panel Información general , seleccione Obtener perfil de publicación.
Nota:
A partir de octubre de 2020, los usuarios deben establecer la configuración de la aplicación para aplicaciones
WEBSITE_WEBDEPLOY_USE_SCMweb Linux entrueantes de descargar el archivo. Para obtener información sobre cómo configurar las opciones comunes de la aplicación web, vaya a Configuración de una aplicación de App Service en Azure Portal.Guarde el archivo descargado. Use el contenido del archivo para crear un secreto de GitHub.
Configuración del secreto de GitHub para la autenticación
En GitHub, examine el repositorio. Seleccione Configuración>Seguridad>Secretos y variables>Acciones>Nuevo secreto de repositorio.
Para usar las credenciales de nivel de aplicación, pegue el contenido del archivo del perfil de publicación descargado en el campo de valor del secreto. Asigne al secreto el siguiente nombre: AZURE_WEBAPP_PUBLISH_PROFILE.
Al configurar el flujo de trabajo de GitHub, use el AZURE_WEBAPP_PUBLISH_PROFILE secreto en la acción Desplegar aplicación web de Azure. Por ejemplo:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Configuración de secretos de GitHub para el registro
Defina los secretos que se usarán con la acción de inicio de sesión de Docker. En el ejemplo de este artículo se usa Azure Container Registry para el registro de contenedor.
Vaya al contenedor en Azure Portal o Docker y copie el nombre de usuario y la contraseña. Puede encontrar el nombre de usuario y la contraseña de Azure Container Registry en Azure Portal en Configuración>Claves de acceso para el registro.
Defina un nuevo secreto para el nombre de usuario del registro llamado
REGISTRY_USERNAME.Defina un nuevo secreto para la contraseña del registro llamada
REGISTRY_PASSWORD.
Compilación de la imagen del contenedor
En el ejemplo siguiente se muestra parte del flujo de trabajo que crea una imagen de Docker de Node.js. Usa Docker Login para iniciar sesión en un registro de contenedor privado. En este ejemplo se usa Azure Container Registry, pero la misma acción funciona para otros registros.
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 }}
También puede usar el inicio de sesión de Docker para iniciar sesión en varios registros de contenedor al mismo tiempo. Este ejemplo incluye dos nuevos secretos de GitHub para la autenticación con docker.io. En el ejemplo se da por supuesto que hay un Dockerfile en el nivel raíz del registro.
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 }}
En el ejemplo siguiente, se muestra parte del flujo de trabajo que compila una imagen de Docker de Windows. Utilice Docker Login para acceder a un registro de contenedor privado. En este ejemplo se usa Azure Container Registry, pero la misma acción funciona para otros registros.
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 }}
También puede usar el inicio de sesión de Docker para iniciar sesión en varios registros de contenedor al mismo tiempo. Este ejemplo incluye dos nuevos secretos de GitHub para la autenticación con docker.io. En el ejemplo se da por supuesto que hay un Dockerfile en el nivel raíz del registro.
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 }}
Implementación en un contenedor de App Service
Para implementar la imagen en un contenedor personalizado en App Service, use la acción azure/webapps-deploy@v2. Esta acción tiene siete parámetros:
| Parámetro | Explicación |
|---|---|
app-name |
(Obligatorio) Nombre de la aplicación de App Service. |
publish-profile |
(Opcional) Se usa con aplicaciones web (Windows y Linux) y contenedores de aplicaciones web (Linux). No se admite el escenario de varios contenedores. Publique el contenido del archivo de perfil \*.publishsettings con secretos de Web Deploy. |
slot-name |
(Opcional) Introduzca un espacio existente que no sea el espacio de producción. |
package |
(Opcional) Solo se usa con aplicaciones web: ruta de acceso al paquete o carpeta.
\*.zip, \*.war, \*.jaro una carpeta que se va a implementar. |
images |
(Obligatorio) Solo se usa con contenedores de aplicaciones web: especifique el nombre completo de la imagen de contenedor. Por ejemplo, myregistry.azurecr.io/nginx:latest o python:3.12.12-alpine/. Para una aplicación de varios contenedores, se pueden proporcionar varios nombres de imagen de contenedor (separados por varias líneas). |
configuration-file |
(Opcional) Solo se usa con contenedores de aplicaciones web: ruta del archivo Docker Compose. Debe ser una ruta de acceso completa o relativa al directorio de trabajo predeterminado. Se requiere para las aplicaciones de varios contenedores. |
startup-command |
(Opcional) Escriba el comando de inicio. Por ejemplo: dotnet run o 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 }}'
Contenido relacionado
Puede encontrar nuestro conjunto de acciones agrupadas en repositorios diferentes en GitHub. Cada repositorio contiene documentación y ejemplos que le ayudarán a usar GitHub para CI/CD e implementar las aplicaciones en Azure.