You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

端到端Karate测试失败:GitHub无法连接AWS中的数据库

问题分析

本地连接VPN能正常运行数据库验证测试,但GitHub Actions的Ubuntu Runner无法建立JDBC连接,核心原因是GitHub Runner所在的公网环境未被AWS SQL Server的安全组/网络ACL允许访问,或者数据库本身部署在AWS私有网络内,公网无法直接触达。

解决方案

以下是几种可行的解决思路:

1. 为GitHub Runner IP段开放数据库访问权限

  • 获取GitHub官方公布的Runner出口IP范围(该列表会定期更新,需同步维护)。
  • 在AWS控制台的SQL Server安全组中添加入站规则,允许这些IP段访问数据库的JDBC端口(默认1433)。

2. 在工作流中临时建立AWS VPN连接

通过在GitHub Actions步骤中添加AWS VPN连接,让Runner接入AWS私有网络:

- name: Install VPN dependencies
  run: sudo apt-get install -y openvpn

- name: Connect to AWS VPN
  env:
    VPN_CONFIG: ${{ secrets.AWS_VPN_OVPN_CONFIG }}
    VPN_USER: ${{ secrets.VPN_USERNAME }}
    VPN_PASSWORD: ${{ secrets.VPN_PASSWORD }}
  run: |
    echo "$VPN_CONFIG" > aws-vpn.ovpn
    # 后台启动VPN连接
    sudo openvpn --config aws-vpn.ovpn --auth-user-pass <(echo -e "$VPN_USER\n$VPN_PASSWORD") --daemon
    # 等待连接稳定
    sleep 15

3. 使用AWS私有网络内的自托管Runner

将GitHub Runner部署在AWS私有网络的EC2实例上,让Runner与SQL Server处于同一网络环境:

  • 在AWS EC2实例中配置GitHub自托管Runner,确保实例所在子网能访问SQL Server。
  • 修改工作流指定使用该自托管Runner:
    jobs:
      build:
        runs-on: [self-hosted, aws-private-subnet-runner]
    

4. 验证环境变量传递正确性

虽然本地运行正常,仍需确认GitHub Secrets中的数据库参数是否正确传递:

- name: Validate DB parameters
  run: |
    echo "DB URL prefix: ${TEST_URL:0:20}..." # 仅打印前缀避免敏感信息泄露
    echo "DB Username: $TEST_USERNAME"

5. 确认JDBC驱动依赖

确保Gradle配置中包含SQL Server JDBC驱动,且适配Java 17版本:

// build.gradle 中的依赖配置
dependencies {
    testImplementation 'com.microsoft.sqlserver:mssql-jdbc:12.4.2.jre17'
}
临时调试步骤

在工作流中添加端口连通性测试,快速定位网络问题:

- name: Test DB port connectivity
  run: |
    sudo apt-get install -y telnet
    # 从TEST_URL中提取数据库主机和端口
    DB_HOST=$(echo $TEST_URL | awk -F'//' '{print $2}' | awk -F':' '{print $1}')
    DB_PORT=$(echo $TEST_URL | awk -F':' '{print $3}' | awk -F'/' '{print $1}')
    telnet $DB_HOST $DB_PORT

如果telnet连接失败,优先排查AWS安全组、网络ACL的入站规则配置。

内容的提问来源于stack exchange,提问作者Kavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:03:23