| title | Quickstart: Connect to database with GitHub Actions |
|---|---|
| description | Use Azure SQL Database from a GitHub Actions workflow |
| author | juliakm |
| ms.author | jukullam |
| ms.reviewer | wiassaf, mathoma |
| ms.date | 08/05/2025 |
| ms.service | azure-sql-database |
| ms.subservice | connect |
| ms.topic | quickstart |
| ms.custom | github-actions-azure, mode-other, devx-track-azurecli |
[!INCLUDEappliesto-sqldb]
Get started with GitHub Actions by using a workflow to deploy database updates to Azure SQL Database.
You need:
- An Azure account with an active subscription. Create an account for free.
- A GitHub repository with a dacpac package (
Database.dacpac). If you don't have a GitHub account, sign up for free. - An Azure SQL Database. Quickstart: Create an Azure SQL Database single database.
- A .dacpac file to import into your database.
A GitHub Actions workflow is defined by a YAML (.yml) file in the /.github/workflows/ path in your repository. This file has the steps and parameters that make up the workflow.
The file has two sections:
| Section | Tasks |
|---|---|
| Authentication | 1. Generate deployment credentials. |
| Deploy | 2. Deploy the database. |
[!INCLUDE include]
In the Azure portal, go to your Azure SQL Database and open Settings > Connection strings. Copy the ADO.NET connection string. Replace the placeholder values for your_database and your_password.
You'll set the connection string as a GitHub secret, AZURE_SQL_CONNECTION_STRING.
[!INCLUDE include]
-
In GitHub, go to your repository.
-
Go to Settings in the navigation menu.
-
Select Security > Secrets and variables > Actions.
-
Select New repository secret.
-
Paste your SQL connection string. Give the secret the name
AZURE_SQL_CONNECTION_STRING. -
Select Add secret.
-
Go to Actions for your GitHub repository.
-
Select Set up your workflow yourself.
-
Delete everything after the
on:section of your workflow file. For example, your remaining workflow can look like this.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ]
-
Rename your workflow
SQL for GitHub Actionsand add the checkout and login actions. These actions check out your site code and authenticate with Azure using theAZURE_CREDENTIALSGitHub secret you created earlier.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 }}
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: creds: ${{ secrets.AZURE_CREDENTIALS }}
-
Use the Azure SQL Deploy action to connect to your SQL instance. You should have a dacpac package (
Database.dacpac) at the root level of your repository. Use theAZURE_SQL_CONNECTION_STRINGGitHub secret you created earlier.- uses: azure/sql-action@v2.3 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'publish'
-
Complete your workflow by adding an action to logout of Azure. Here's the completed workflow. The file appears in the
.github/workflowsfolder of your repository.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
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: creds: ${{ secrets.AZURE_CREDENTIALS }} - 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
-
Go to Actions for your GitHub repository.
-
Open the first result to see detailed logs of your workflow's run.
:::image type="content" source="media/quickstart-sql-github-actions/github-actions-run-sql.png" alt-text="Log of GitHub actions run":::
When your Azure SQL database and repository are no longer needed, clean up the resources you deployed by deleting the resource group and your GitHub repository.
[!div class="nextstepaction"] Learn about Azure and GitHub integration