Snabbstart: Skapa ett GitHub-arbetsflöde för att publicera en app
I den här snabbstarten får du lära dig hur du skapar ett GitHub-arbetsflöde för att publicera din .NET-app från källkoden. Att automatiskt publicera .NET-appen från GitHub till ett mål kallas för en kontinuerlig distribution (CD). Det finns många möjliga mål för att publicera ett program. I den här snabbstarten publicerar du till Azure.
Förutsättningar
- Ett GitHub-konto.
- En .NET-källkodslagringsplats.
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- En ASP.NET Core-webbapp.
- En Azure App Service-resurs.
Lägg till publiceringsprofil
Om du vill publicera appen till Azure öppnar du Azure-portalen för App Service-instansen av programmet. I resursöversikten väljer du Hämta publiceringsprofil och sparar *. PubliceraEtting-fil lokalt.
Varning
Publiceringsprofilen innehåller känslig information, till exempel autentiseringsuppgifter för åtkomst till din Azure App Service-resurs. Den här informationen bör alltid behandlas mycket noggrant.
I GitHub-lagringsplatsen navigerar du till Inställningar och väljer Hemligheter på den vänstra navigeringsmenyn. Välj Ny lagringsplatshemlighet för att lägga till en ny hemlighet.
Ange AZURE_PUBLISH_PROFILE
som Namn och klistra in XML-innehållet från publiceringsprofilen i textområdet Värde . Välj Add secret (Lägg till hemlighet). Mer information finns i Krypterade hemligheter.
Skapa en arbetsflödesfil
På GitHub-lagringsplatsen lägger du till en ny YAML-fil i katalogen .github/workflows . Välj ett meningsfullt filnamn, något som tydligt anger vad arbetsflödet är avsett att göra. Mer information finns i Arbetsflödesfil.
Viktigt!
GitHub kräver att arbetsflödets sammansättningsfiler placeras i katalogen .github/workflows .
Arbetsflödesfiler definierar vanligtvis en sammansättning av en eller flera GitHub-åtgärder via jobs.<job_id>/steps[*]
. Mer information finns i Arbetsflödessyntax för GitHub Actions.
Skapa en ny fil med namnet publish-app.yml, kopiera och klistra in följande YML-innehåll i den:
name: publish
on:
push:
branches: [ production ]
env:
AZURE_WEBAPP_NAME: DotNetWeb
AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Install dependencies
run: dotnet restore
- name: Build
run: |
cd DotNet.WebApp
dotnet build --configuration Release --no-restore
dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
- name: Test
run: |
cd DotNet.WebApp.Tests
dotnet test --no-restore --verbosity normal
- uses: azure/webapps-deploy@v2
name: Deploy
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
I föregående arbetsflödessammansättning:
Definierar
name: publish
namnet, "publicera" visas i statusmärken för arbetsflödet.name: publish
Noden
on
anger de händelser som utlöser arbetsflödet:on: push: branches: [ production ]
- Utlöses när en
push
inträffar på grenenproduction
.
- Utlöses när en
Noden
env
definierar namngivna miljövariabler (env var).env: AZURE_WEBAPP_NAME: DotNetWeb AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root: DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
- Miljövariabeln
AZURE_WEBAPP_NAME
tilldelas värdetDotNetWeb
. - Miljövariabeln
AZURE_WEBAPP_PACKAGE_PATH
tilldelas värdet'.'
. - Miljövariabeln
DOTNET_VERSION
tilldelas värdet'6.0.401'
. Miljövariabeln refereras senare till för att angedotnet-version
actions/setup-dotnet@v3
GitHub-åtgärden.
- Miljövariabeln
Noden
jobs
skapar de steg som arbetsflödet ska utföra.jobs: publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup .NET Core uses: actions/setup-dotnet@v3 with: dotnet-version: ${{ env.DOTNET_VERSION }} - name: Install dependencies run: dotnet restore - name: Build run: | cd DotNet.WebApp dotnet build --configuration Release --no-restore dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true - name: Test run: | cd DotNet.WebApp.Tests dotnet test --no-restore --verbosity normal - uses: azure/webapps-deploy@v2 name: Deploy with: app-name: ${{ env.AZURE_WEBAPP_NAME }} publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }} package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
- Det finns ett enda jobb med namnet
publish
som körs på den senaste versionen av Ubuntu. actions/setup-dotnet@v3
GitHub-åtgärden används för att konfigurera .NET SDK med den angivna versionen frånDOTNET_VERSION
miljövariabeln.- Kommandot
dotnet restore
anropas. - Kommandot
dotnet build
anropas. - Kommandot
dotnet publish
anropas. - Kommandot
dotnet test
anropas. azure/webapps-deploy@v2
GitHub-åtgärden distribuerar appen med angivetpublish-profile
ochpackage
.publish-profile
Tilldelas från lagringsplatsensAZURE_PUBLISH_PROFILE
hemlighet.
- Det finns ett enda jobb med namnet
Skapa ett statusmärke för arbetsflödet
Det är vanligt att GitHub-lagringsplatser har en README.md fil i roten i lagringsplatsens katalog. På samma sätt är det bra att rapportera den senaste statusen för olika arbetsflöden. Alla arbetsflöden kan generera ett statusmärke som är visuellt tilltalande i README.md-filen . Så här lägger du till statusikonen för arbetsflödet:
Från GitHub-lagringsplatsen väljer du navigeringsalternativet Åtgärder .
Alla arbetsflöden för lagringsplatser visas till vänster, välj önskat arbetsflöde och ellipsknappen (...).
- Ellipsknappen (...) expanderar menyalternativen för det valda arbetsflödet.
Välj menyalternativet Skapa statusikon .
Välj knappen Kopiera statusikonen Markdown.
Klistra in Markdown i filen README.md , spara filen, checka in och push-överföra ändringarna.
Mer information finns i Lägga till ett statusmärke för arbetsflödet.
Exempel på statusmärke för publiceringsarbetsflöde
Passerar | Misslyckas | Ingen status |
---|---|---|