Skapa konfiguration för Azure Static Web Apps
Byggkonfigurationen för Azure Static Web Apps drivs antingen av GitHub Actions eller Azure Pipelines. Varje plats har en YAML-konfigurationsfil som styr hur en plats skapas och distribueras. I den här artikeln beskrivs filens struktur och alternativ.
I följande tabell visas de tillgängliga konfigurationsinställningarna.
Property | Beskrivning | Obligatoriskt |
---|---|---|
app_location |
Den här mappen innehåller källkoden för klientdelsprogrammet. Värdet är relativt lagringsplatsens rot i GitHub och den aktuella arbetsmappen i Azure DevOps. När det används med skip_app_build: true är det här värdet appens byggutdataplats. |
Ja |
api_location |
Den här mappen som innehåller källkoden för ditt API-program. Värdet är relativt lagringsplatsens rot i GitHub och den aktuella arbetsmappen i Azure DevOps. När det används med skip_api_build: true är det här värdet API:ets byggutdataplats. |
Inga |
output_location |
Om webbappen kör ett byggsteg är utdataplatsen den mapp där de offentliga filerna genereras. För de flesta projekt output_location är i förhållande till app_location . För .NET-projekt är platsen dock relativ till utdatamappen publicera. |
Inga |
app_build_command |
För Node.js-program kan du definiera ett anpassat kommando för att skapa det statiska innehållsprogrammet. Om du till exempel vill konfigurera en produktionsversion för ett Angular-program skapar du ett npm-skript med namnet build-prod för att köra ng build --prod och ange npm run build-prod som anpassat kommando. Om det lämnas tomt försöker arbetsflödet köra kommandona npm run build eller npm run build:azure . |
Inga |
api_build_command |
För Node.js-program kan du definiera ett anpassat kommando för att skapa Azure Functions API-programmet. | Inga |
skip_app_build |
Ange värdet till true för att hoppa över att skapa klientdelsappen. |
Inga |
skip_api_build |
Ange värdet till true för att hoppa över att skapa API-funktionerna. |
Inga |
cwd (Endast Azure Pipelines) |
Absolut sökväg till arbetsmappen. Standardvärdet är $(System.DefaultWorkingDirectory) . |
Inga |
build_timeout_in_minutes |
Ange det här värdet för att anpassa tidsgränsen för bygget. Standardvärdet är 15 . |
Inga |
Med de här inställningarna kan du konfigurera GitHub Actions eller Azure Pipelines för att köra kontinuerlig integrering/kontinuerlig leverans (CI/CD) för din statiska webbapp.
Filnamn och plats
Konfigurationsfilen genereras av GitHub och lagras i mappen .github/workflows med namnet med följande format: azure-static-web-apps-<RANDOM_NAME>.yml
.
Skapa konfiguration
Följande exempelkonfiguration övervakar lagringsplatsen för ändringar. När incheckningar skickas till grenen main
skapas programmet från app_location
mappen och filerna i output_location
hanteras på den offentliga webben. Dessutom är programmet i api-mappen tillgängligt under webbplatsens api
sökväg.
name: Azure Static Web Apps CI/CD
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- main
jobs:
build_and_deploy_job:
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
runs-on: ubuntu-latest
name: Build and Deploy Job
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Build And Deploy
id: builddeploy
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for GitHub integrations (i.e. PR comments)
action: "upload"
###### Repository/Build Configurations ######
app_location: "src" # App source code path relative to repository root
api_location: "api" # Api source code path relative to repository root - optional
output_location: "public" # Built app content directory, relative to app_location - optional
###### End of Repository/Build Configurations ######
close_pull_request_job:
if: github.event_name == 'pull_request' && github.event.action == 'closed'
runs-on: ubuntu-latest
name: Close Pull Request Job
steps:
- name: Close Pull Request
id: closepullrequest
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
action: "close"
I den här konfigurationen:
- Grenen
main
övervakas för incheckningar. - Ett GitHub Actions-arbetsflöde utlöses när en pull-begäran på grenen
main
öppnas, synkroniseras, öppnas igen eller stängs. - Körs
build_and_deploy_job
när du push-överför incheckningar eller öppnar en pull-begäran mot grenen som anges ion
egenskapen. - Pekar
app_location
på mappensrc
som innehåller källfilerna för webbappen. Om du vill ange det här värdet till lagringsplatsens rot använder du/
. - Pekar
api_location
på mappenapi
som innehåller Azure Functions-programmet för webbplatsens API-slutpunkter. Om du vill ange det här värdet till lagringsplatsens rot använder du/
. - Pekar
output_location
på mappenpublic
som innehåller den slutliga versionen av appens källfiler. Den är relativ tillapp_location
. För .NET-projekt är platsen relativ till mappen publicera utdata.
Ändra inte värdena för repo_token
, action
och azure_static_web_apps_api_token
som de har angetts för dig av Azure Static Web Apps.
Anpassade build-kommandon
För Node.js-program kan du ta detaljerad kontroll över vilka kommandon som körs under app- eller API-byggprocessen. I följande exempel visas hur du definierar build med värden för app_build_command
och api_build_command
.
Kommentar
För närvarande kan du bara definiera app_build_command
och api_build_command
för Node.js-versioner.
Om du vill ange node.js-versionen använder du fältet engines
i package.json
filen.
...
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: 'upload'
app_location: '/'
api_location: 'api'
output_location: 'dist'
app_build_command: 'npm run build-ui-prod'
api_build_command: 'npm run build-api-prod'
Hoppa över att skapa klientdelsapp
Om du behöver fullständig kontroll över bygget för klientdelsappen kan du kringgå den automatiska versionen och distribuera appen som skapades i ett tidigare steg.
Så här hoppar du över att skapa klientdelsappen:
- Ange
app_location
den plats som filerna du vill distribuera. - Ställ in
skip_app_build
påtrue
. - Ange
output_location
till en tom sträng (''
).
Kommentar
Kontrollera att du har kopierat filen staticwebapp.config.json
till utdatakatalogen.
...
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: 'upload'
app_location: 'src/dist'
api_location: 'api'
output_location: ''
skip_app_build: true
Hoppa över att skapa API:et
Om du vill hoppa över att skapa API:et kan du kringgå den automatiska versionen och distribuera API:et som skapades i ett tidigare steg.
Steg för att hoppa över att skapa API:et:
- I filen staticwebapp.config.json anger du
apiRuntime
till rätt körning och version. Se Konfigurera Azure Static Web Apps för listan över körnings- och versioner som stöds.{ "platform": { "apiRuntime": "node:16" } }
- Ställ in
skip_api_build
påtrue
. - Ange
api_location
till den mapp som innehåller den skapade API-appen som ska distribueras. Den här sökvägen är relativ till lagringsplatsens rot i GitHub Actions ochcwd
i Azure Pipelines.
...
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: 'upload'
app_location: "src" # App source code path relative to repository root
api_location: "api" # Api source code path relative to repository root - optional
output_location: "public" # Built app content directory, relative to app_location - optional
skip_api_build: true
Utöka tidsgränsen för bygge
Som standard är app- och API-versionerna begränsade till 15 minuter. Du kan utöka tidsgränsen för bygget genom att ange egenskapen build_timeout_in_minutes
.
...
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: 'upload'
app_location: 'src'
api_location: 'api'
output_location: 'public'
build_timeout_in_minutes: 30
Köra arbetsflöde utan distributionshemligheter
Ibland behöver du arbetsflödet för att fortsätta bearbeta även när vissa hemligheter saknas. SKIP_DEPLOY_ON_MISSING_SECRETS
Ange miljövariabeln till true
för att konfigurera arbetsflödet så att det fortsätter utan definierade hemligheter.
När den här funktionen är aktiverad kan arbetsflödet fortsätta utan att distribuera webbplatsens innehåll.
...
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: 'upload'
app_location: 'src'
api_location: 'api'
output_location: 'public'
env:
SKIP_DEPLOY_ON_MISSING_SECRETS: true
Miljövariabler
Du kan ange miljövariabler för din version via env
avsnittet i ett jobbs konfiguration.
...
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: 'upload'
app_location: 'src'
api_location: 'api'
output_location: 'public'
env: # Add environment variables here
HUGO_VERSION: 0.58.0
Stöd för monorepo
En monorepo är en lagringsplats som innehåller kod för mer än ett program. Som standard spårar arbetsflödet alla filer på en lagringsplats, men du kan justera konfigurationen så att den riktar sig mot en enda app.
Om du vill rikta en arbetsflödesfil till en enda app anger du sökvägar i avsnitten push
och pull_request
.
När du konfigurerar en monorepo begränsas varje konfiguration av statiska appar endast till filer för en enda app. De olika arbetsflödesfilerna finns sida vid sida i lagringsplatsens .github/workflows-mapp .
├── .github
│ └── workflows
│ ├── azure-static-web-apps-purple-pond.yml
│ └── azure-static-web-apps-yellow-shoe.yml
│
├── app1 👉 controlled by: azure-static-web-apps-purple-pond.yml
├── app2 👉 controlled by: azure-static-web-apps-yellow-shoe.yml
│
├── api1 👉 controlled by: azure-static-web-apps-purple-pond.yml
├── api2 👉 controlled by: azure-static-web-apps-yellow-shoe.yml
│
└── README.md
I följande exempel visas hur du lägger till en paths
nod i avsnitten push
och pull_request
i en fil med namnet azure-static-web-apps-purple-pond.yml.
on:
push:
branches:
- main
paths:
- app1/**
- api1/**
- .github/workflows/azure-static-web-apps-purple-pond.yml
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- main
paths:
- app1/**
- api1/**
- .github/workflows/azure-static-web-apps-purple-pond.yml
I det här exemplet utlöser endast ändringar som görs i följande filer en ny version:
- Alla filer i app1-mappen
- Alla filer i mappen api1
- Ändringar i appens arbetsflödesfil azure-static-web-apps-purple-pond.yml