Spring Boot项目GitHub Actions中Maven构建PostgreSQL密码验证失败求助
Spring Boot项目GitHub Actions构建PostgreSQL密码验证失败解决方案
问题根源
本地运行正常是因为使用docker-compose-test.yml启动的PostgreSQL容器,用户名为root、密码pgpwd4habr,与application-test.properties的配置完全匹配。而GitHub Actions构建失败的核心原因是:maven.yml中启动PostgreSQL时配置的用户是dev_sb_db_user、密码dev_sb_db_password,但测试用的application-test.properties仍使用root和pgpwd4habr,两者不匹配导致Flyway连接数据库时验证失败。
解决方案
方案1:直接统一CI环境与测试配置
修改maven.yml中的PostgreSQL启动参数,使其与application-test.properties的数据库用户、密码一致:
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Connect to PostgreSQL uses: harmon758/postgresql-action@v1 with: postgresql version: '11' postgresql db: 'dev_sb_db' postgresql user: 'root' # 改为测试配置的用户名 postgresql password: 'pgpwd4habr' # 改为测试配置的密码 - name: Set up JDK 11 uses: actions/setup-java@v3 with: java-version: '11' distribution: 'temurin' cache: maven - name: Build with Maven run: mvn -B package --file pom.xml
方案2:用环境变量统一管理(更推荐)
避免硬编码配置,让本地和CI环境保持一致:
- 修改
application-test.properties,使用环境变量+默认值的方式:
# PostgreSQL configurations: spring.datasource.url=jdbc:postgresql://localhost:5432/dev_sb_db spring.datasource.username=${BOT_DB_USERNAME:root} spring.datasource.password=${BOT_DB_PASSWORD:pgpwd4habr} spring.datasource.driver-class-name=org.postgresql.Driver
- 在
maven.yml中配置环境变量,同步PostgreSQL启动参数:
jobs: build: runs-on: ubuntu-latest env: BOT_DB_USERNAME: root BOT_DB_PASSWORD: pgpwd4habr steps: - uses: actions/checkout@v3 - name: Connect to PostgreSQL uses: harmon758/postgresql-action@v1 with: postgresql version: '11' postgresql db: 'dev_sb_db' postgresql user: '${{ env.BOT_DB_USERNAME }}' postgresql password: '${{ env.BOT_DB_PASSWORD }}' - name: Set up JDK 11 uses: actions/setup-java@v3 with: java-version: '11' distribution: 'temurin' cache: maven - name: Build with Maven run: mvn -B package --file pom.xml
内容的提问来源于stack exchange,提问作者xataaa
相关产品推荐
相关产品推荐

