Ejercicio: Publicación de una especificación de plantilla
El equipo ha creado algunos archivos de Bicep protegidos por la seguridad que son compatibles con el nuevo modelo de gobernanza de su empresa. Uno de los archivos de Bicep protegidos implementa una aplicación de Azure App Service basada en Linux. En este ejercicio usará un flujo de trabajo de implementación para publicar el archivo de Bicep como especificación de plantilla.
Durante el proceso, hará lo siguiente:
- Agregue un trabajo de lint al flujo de trabajo.
- Agregue un trabajo de flujo de trabajo para publicar la especificación de plantilla.
- Ejecute manualmente el flujo de trabajo y compruebe que finaliza correctamente.
- Compruebe la especificación de plantilla publicada en Azure.
Añade un trabajo de lint al flujo de trabajo
El repositorio contiene un borrador de un flujo de trabajo que puede usar como punto de partida.
En Visual Studio Code expanda la carpeta .github/workflows en la raíz del repositorio.
Abra el archivo template-spec-linux-app-service.yml.
La definición del flujo de trabajo incluye dos desencadenadores. En este ejercicio no modifica el archivo de Bicep para la especificación de plantilla, por lo que el desencadenador
push
nunca se activa. Para probar el flujo de trabajo, invóquelo manualmente mediante el desencadenadorworkflow_dispatch
.En la parte inferior del archivo, donde se ve el comentario
# To be added
, agregue la siguiente definición de trabajo de lint:jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }}
El repositorio contiene un archivo bicepconfig.json que configura el linter para que emita errores en lugar de advertencias. Cualquier error durante el trabajo de lint hará que se produzca un error en el flujo de trabajo.
Sugerencia
Los archivos YAML son sensibles a la sangría. Tanto si escribe o pega este código, asegúrese de que la sangría es correcta. Más adelante en este ejercicio, verá la definición de flujo de trabajo de YAML completa para que pueda comprobar que el archivo coincide.
Agregación de un trabajo de publicación al flujo de trabajo
Ahora puede agregar un segundo trabajo para publicar la especificación de plantilla en Azure.
Agregue el código siguiente al final del archivo template-spec-linux-app-service.yml:
publish: runs-on: ubuntu-latest needs: [ lint ] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/cli@v1 name: Publish template spec with: inlineScript: | az ts create \ --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \ --name ${{ env.TEMPLATE_SPEC_NAME }} \ --version ${{ github.run_number }} \ --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \ --location ${{ env.AZURE_REGION }} \ --yes
Este trabajo extrae el código del repositorio e inicia sesión en Azure mediante los secretos de GitHub que ha creado. A continuación, ejecuta el comando
az ts create
para publicar la especificación de plantilla en Azure.Sugerencia
Para simplificar las cosas, el flujo de trabajo usa el número de ejecución del flujo de trabajo como número de versión de la especificación de plantilla. En la unidad siguiente obtendrá información sobre un sistema de control de versiones más complejo.
Guarde los cambios en el archivo.
Comprobación y confirmación de la definición de flujo de trabajo
Compruebe que el archivo template-spec-linux-app-service.yml tiene un aspecto similar al del ejemplo siguiente:
name: template-spec-linux-app-service concurrency: template-spec-linux-app-service on: workflow_dispatch: push: branches: - main paths: - 'template-specs/linux-app-service/**' permissions: id-token: write contents: read env: AZURE_RESOURCEGROUP_NAME: ToyReusable AZURE_REGION: westus3 TEMPLATE_SPEC_NAME: linux-app-service TEMPLATE_SPEC_FILE_PATH: template-specs/linux-app-service/main.bicep jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }} publish: runs-on: ubuntu-latest needs: [ lint ] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/cli@v1 name: Publish template spec with: inlineScript: | az ts create \ --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \ --name ${{ env.TEMPLATE_SPEC_NAME }} \ --version ${{ github.run_number }} \ --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \ --location ${{ env.AZURE_REGION }} \ --yes
Si no es así, actualícelo para que coincida con este ejemplo y después guárdelo.
Confirme e inserte los cambios en el repositorio de Git mediante la ejecución de los comandos siguientes en el terminal de Visual Studio Code:
git add . git commit -m "Add lint and publish jobs to Linux App Service template spec workflow" git push
Esta es la primera vez que inserta contenido este repositorio, por lo que es posible que se le pida que inicie sesión.
En Windows escriba 1 para autenticarse mediante un explorador web y seleccione Entrar.
En macOS, seleccione Autorizar.
Aparece una ventana del explorador. Puede que tenga que volver a iniciar sesión en GitHub. Seleccione Autorizar.
Desencadenador del flujo de trabajo
En el explorador, seleccione la pestaña Acciones.
Las ejecuciones de flujo de trabajo con errores ya aparecen en la lista, pero debe preocuparse por ellas. Las ejecuciones no se pudieron realizar porque las definiciones de flujo de trabajo aún no estaban completas cuando se creó el repositorio.
Seleccione el flujo de trabajo template-spec-linux-app-service, seleccione el botón Ejecutar flujo de trabajo y, a continuación, seleccione Ejecutar flujo de trabajo.
GitHub comienza una nueva ejecución de un flujo de trabajo. Es posible que tenga que actualizar la ventana del explorador para ver que aparece la ejecución.
Seleccione la última ejecución de la lista.
Espere a que finalice la ejecución del flujo de trabajo. La especificación de plantilla se publica en Azure.
Observe el número de ejecución del flujo de trabajo, que probablemente sea 2.
Revisar la especificación de plantilla en Azure
También puede ver la especificación de plantilla publicada en el Portal de Azure.
En el explorador, vaya a Azure Portal.
Vaya al grupo de recursos ToyReusable y seleccione la especificación de plantilla linux-app-service.
Examine los detalles de la especificación de plantilla.
Observe que la versión más reciente y el número de versión son los mismos que el número de ejecución del flujo de trabajo. El flujo de trabajo usa el número de ejecución para el número de versión de la especificación de plantilla.