Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:Azure SQL Database
Kom igång med GitHub Actions med hjälp av ett arbetsflöde för att distribuera databasuppdateringar till Azure SQL Database.
Förutsättningar
Du behöver:
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- En GitHub-lagringsplats med ett dacpac-paket (
Database.dacpac). Om du inte har ett GitHub-konto registrerar du dig kostnadsfritt. - En Azure SQL Database. snabbstart: Skapa en enkel Azure SQL Database-databas.
- En .dacpac-fil att importera till databasen.
Översikt över arbetsflödesfil
Ett GitHub Actions-arbetsflöde definieras av en YAML-fil (.yml) i /.github/workflows/ sökvägen i ditt förvar. Den här filen innehåller de steg och parametrar som utgör arbetsflödet.
Filen har två avsnitt:
| Sektion | Uppgifter |
|---|---|
| Autentisering | 1. Generera autentiseringsuppgifter för distribution. |
| Distribuera | 2. Distribuera databasen. |
Generera autentiseringsuppgifter för distribution
Om du vill använda Azure Login-åtgärden med OIDC måste du konfigurera en federerad identitetsautentiseringsuppgift i ett Microsoft Entra-program eller en användartilldelad hanterad identitet.
Alternativ 1: Microsoft Entra-program
- Skapa ett Microsoft Entra-program med en tjänsthuvudman via Azure-portalen, Azure CLI eller Azure PowerShell.
- Kopiera värdena för klient-ID, prenumerations-ID och katalog-ID (klientorganisation) som ska användas senare i ditt GitHub Actions-arbetsflöde.
- Tilldela tjänstens principal en lämplig roll via Azure Portal, Azure CLI eller Azure PowerShell.
- Konfigurera en federerad identitetsautentiseringsuppgift i ett Microsoft Entra-program för att lita på token som utfärdats av GitHub Actions till din GitHub-lagringsplats.
Alternativ 2: Användartilldelad hanterad identitet
- Skapa en användartilldelad hanterad identitet.
- Kopiera värdena för klient-ID, prenumerations-ID och katalog-ID (klientorganisation) som ska användas senare i ditt GitHub Actions-arbetsflöde.
- Tilldela en lämplig roll till din användartilldelade hanterade identitet.
- Konfigurera en federerad identitetsautentiseringsuppgift för en användartilldelad hanterad identitet för att lita på token som utfärdats av GitHub Actions till din GitHub-lagringsplats.
Kopiera SQL-anslutningssträngen
I Azure-portalen går du till din Azure SQL Database och öppnar Inställningar>Anslutningssträngar. Exempel på ADO.NET-anslutningssträng. Ersätt platshållarvärdena för your_database och your_password.
Du anger anslutningssträngen som en GitHub-hemlighet AZURE_SQL_CONNECTION_STRING.
Konfigurera GitHub-hemligheterna
Du måste ange programmets klient-ID, katalog (tenant)-ID och prenumerations-ID för inloggningsåtgärden. Dessa värden kan antingen anges direkt i arbetsflödet eller lagras i GitHub-hemligheter och refereras till i arbetsflödet. Att spara värdena som GitHub-hemligheter är det säkrare alternativet.
Gå till din lagringsplats i GitHub.
Välj Säkerhetshemligheter > och variabler > Åtgärder.
Välj Ny lagringshemlighet.
Anmärkning
Om du vill förbättra arbetsflödets säkerhet på offentliga lagringsplatser använder du miljöhemligheter i stället för lagringsplatshemligheter. Om miljön kräver godkännande kan ett jobb inte komma åt miljöhemligheter förrän en av de nödvändiga granskarna godkänner det.
Skapa hemligheter för
AZURE_CLIENT_ID,AZURE_TENANT_IDochAZURE_SUBSCRIPTION_ID. Kopiera dessa värden från ditt Microsoft Entra-program eller användartilldelade hanterade identiteter för dina GitHub-hemligheter:GitHub-hemlighet Microsoft Entra-program eller användartilldelad hanterad identitet AZURE_CLIENT_ID Klient-ID AZURE_SUBSCRIPTION_ID Prenumerations-ID AZURE_TENANT_ID Katalog-ID (hyresgästsidentifierare) Anmärkning
Av säkerhetsskäl rekommenderar vi att du använder GitHub Secrets i stället för att skicka värden direkt till arbetsflödet.
Lägg till SQL-anslutningssträngens hemlighet
Gå till din lagringsplats i GitHub.
Gå till Inställningar i navigeringsmenyn.
Välj Säkerhetshemligheter > och variabler > Åtgärder.
Välj Ny lagringshemlighet.
Klistra in din SQL-anslutningssträng. Ge hemligheten namnet
AZURE_SQL_CONNECTION_STRING.Välj Lägg till hemlig.
Lägg till arbetsflödet
Gå till Åtgärder för din GitHub-lagringsplats.
Välj Konfigurera arbetsflödet själv.
Ta bort allt efter avsnittet i
on:arbetsflödesfilen. Ditt återstående arbetsflöde kan till exempel se ut så här.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ]Byt namn på arbetsflödet
SQL for GitHub Actionsoch lägg till utchecknings- och inloggningsåtgärderna. Dessa åtgärder checkar ut din webbplatskod och autentiserar med Azure med hjälp av GitHub-hemlighetenAZURE_CREDENTIALSsom du skapade tidigare.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
Använd åtgärden Azure SQL Deploy för att ansluta till din SQL-instans. Du bör ha ett dacpac-paket (
Database.dacpac) på rotnivån för lagringsplatsen. Använd denAZURE_SQL_CONNECTION_STRINGGitHub-hemlighet som du skapade tidigare.- uses: azure/sql-action@v2.3 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'publish'Slutför arbetsflödet genom att lägga till en åtgärd för utloggning av Azure. Här är det slutförda arbetsflödet. Filen visas i
.github/workflowsmappen i ditt arkiv.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/sql-action@v2.3 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'publish' # Azure logout - name: logout run: | az logout
Granska din utplacering
Gå till Åtgärder för din GitHub-lagringsplats.
Öppna det första resultatet om du vill se detaljerade loggar för arbetsflödets körning.
Rensa resurser
När din Azure SQL-databas och lagringsplats inte längre behövs rensar du de resurser som du har distribuerat genom att ta bort resursgruppen och din GitHub-lagringsplats.