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

通过GitHub Action部署SpringBoot到Azure Web App时遇测试错误

解决方案:GitHub Action部署SpringBoot到Azure Web App测试失败问题

问题根源

当前错误出现在build阶段的Maven测试环节:执行mvn clean install时,Spring Boot测试类SchoolManagementAppApplicationTests尝试加载ApplicationContext,但GitHub Action的build runner中未运行MySQL服务,导致数据库连接失败,测试报错。你在deploy阶段启动MySQL的操作对build阶段的测试没有作用。

修复方案

方案1:临时跳过测试(快速解决)

修改build步骤中的Maven命令,跳过测试阶段直接构建打包:

- name: Build with Maven
  run: mvn clean install -DskipTests

方案2:在build阶段启动MySQL服务(保留测试)

在build job中添加MySQL服务,让测试能正常连接数据库:

jobs:
  build:
    runs-on: ubuntu-latest
    services:
      mysql:
        image: mysql:8.0
        ports:
          - 3306:3306
        env:
          MYSQL_ROOT_PASSWORD: '@Swasti123456'
          MYSQL_DATABASE: 'school'
        options: --health-cmd="mysqladmin ping -h mysql --silent" --health-interval=10s --health-timeout=5s --health-retries=3
    steps:
      - uses: actions/checkout@v4

      - name: Set up Java version
        uses: actions/setup-java@v4
        with:
          java-version: '17'
          distribution: 'microsoft'

      - name: Wait for MySQL to be ready
        run: |
          until docker exec mysql mysqladmin -u root -p@Swasti123456 ping --silent; do
            echo "Waiting for MySQL to be ready..."
            sleep 5
          done

      - name: Build with Maven
        run: mvn clean install

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v4
        with:
          name: java-app
          path: '${{ github.workspace }}/target/*.jar'

同时需要调整测试环境的数据库连接配置:

  1. 添加application-test.properties配置文件:
spring.datasource.url=jdbc:mysql://mysql:3306/school
spring.datasource.username=root
spring.datasource.password=@Swasti123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
spring.jpa.hibernate.ddl-auto=update
  1. 在测试类上指定使用测试配置:
@SpringBootTest
@ActiveProfiles("test")
class SchoolManagementAppApplicationTests {
    // 测试代码
}

方案3:部署后的数据库连接注意事项

部署到Azure Web App后,当前配置的localhost:3306MySQL无法被云服务访问,需额外处理:

  • 若使用本地MySQL:需暴露公网IP和端口,修改Azure Web App的数据库连接配置为你的公网IP,并确保本地防火墙允许Azure IP访问
  • 推荐方案:将MySQL托管到Azure Database for MySQL,连接更稳定且无需暴露本地服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:12:33