你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:使用 GitHub Actions 连接到 Azure Database for PostgreSQL 灵活服务器

适用于:Azure Database for PostgreSQL - 单一服务器 Azure Database for PostgreSQL - 灵活服务器

重要

Azure Database for PostgreSQL - 单一服务器即将停用。 强烈建议升级到 Azure Database for PostgreSQL 灵活服务器。 若要详细了解如何迁移到 Azure Database for PostgreSQL 灵活服务器,请参阅 Azure Database for PostgreSQL 单一服务器的最新动态

使用工作流将数据库更新部署到 Azure Database for PostgreSQL 灵活服务器,以开始使用 GitHub Actions

先决条件

需要:

工作流文件概述

GitHub Actions 工作流是由存储库中 /.github/workflows/ 路径中的 YAML (.yml) 文件定义的。 此定义包含组成工作流的各种步骤和参数。

此文件包含两个部分:

部分 任务
身份验证 1. 生成部署凭据。
部署 1.部署数据库。

生成部署凭据

Azure CLI 中使用 az ad sp create-for-rbac 命令创建服务主体。 请使用 Azure 门户中的 Azure Cloud Shell 或选择“试用”按钮运行此命令。

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

参数 --json-auth 在 Azure CLI 版本 >= 2.51.0 中可用。 此版本之前的版本使用 --sdk-auth,带有弃用警告。

在上面的示例中,请将占位符替换为你的订阅 ID、资源组名称和应用名称。 输出是一个 JSON 对象,包含的角色分配凭据可提供对应用服务应用的访问权限,如下所示。 复制此 JSON 对象供以后使用。

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

复制 Azure Database for PostgreSQL 灵活服务器连接字符串

在 Azure 门户中,转到 Azure Database for PostgreSQL 灵活服务器实例,并打开“设置”>“连接字符串”。 复制 ADO.NET 连接字符串。 将占位符值替换为 your_databaseyour_password。 连接字符串与此类似。

重要

  • 对于 Azure Database for PostgreSQL 单一服务器,请使用 user=adminusername@servername。 注意,@servername 是必需的。
  • 对于 Azure Database for PostgreSQL 灵活服务器,请在没有 @servername 的情况下使用 user= adminusername
psql host={servername.postgres.database.azure.com} port=5432 dbname={your_database} user={adminusername} password={your_database_password} sslmode=require

使用连接字符串作为 GitHub 机密。

配置 GitHub 机密

  1. GitHub 中,转到存储库。

  2. 转到导航菜单中的“设置”。

  3. 选择“安全性”>“机密和变量”>“操作”。

    添加机密的屏幕截图

  4. 选择“新建存储库机密”。

  5. 将 Azure CLI 命令的整个 JSON 输出粘贴到机密的值字段中。 为机密指定名称 AZURE_CREDENTIALS

  6. 选择“添加机密”。

添加工作流

  1. 转到 GitHub 存储库的“操作”。

  2. 选择“自己设置工作流”。

  3. 删除工作流文件 on: 部分后面的所有内容。 例如,剩下的工作流可能如下所示。

    name: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. 将工作流重命名为 PostgreSQL for GitHub Actions,并添加签出和登录操作。 这些操作会签出你的站点代码,并使用之前创建的 GitHub 机密向 Azure 进行身份验证。

    name: PostgreSQL for GitHub Actions
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
    jobs:
    build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v1
        - uses: azure/login@v1
        with:
            creds: ${{ secrets.AZURE_CREDENTIALS }}
    
  5. 使用 Azure PostgreSQL 部署操作连接到 Azure Database for PostgreSQL 灵活服务器实例。 将 POSTGRESQL_SERVER_NAME 替换为服务器的名称。 在存储库的根级别,应该有一个名为 data.sql 的 Azure Database for PostgreSQL 灵活服务器数据文件。

     - uses: azure/postgresql@v1
       with:
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        server-name: POSTGRESQL_SERVER_NAME
        plsql-file: './data.sql'
    
  6. 通过添加注销 Azure 的操作来完成工作流。 下面是已完成的工作流。 文件会显示在存储库的 .github/workflows 文件夹中。

    name: PostgreSQL for GitHub Actions
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
    
    jobs:
    build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v1
        - uses: azure/login@v1
        with:
            client-id: ${{ secrets.AZURE_CREDENTIALS }}
    
    - uses: azure/postgresql@v1
      with:
        server-name: POSTGRESQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        plsql-file: './data.sql'
    
        # Azure logout
    - name: logout
      run: |
         az logout
    

查看部署

  1. 转到 GitHub 存储库的“操作”。

  2. 打开第一个结果,查看工作流运行的详细日志。

    GitHub 操作运行的日志。

清理资源

如果不再需要 Azure Database for PostgreSQL 灵活服务器数据库和存储库,请删除资源组和 GitHub 存储库,来清理所部署的资源。

后续步骤