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

新手入门求助:Flyway与GitHub Action结合的示例工作流

Flyway + GitHub Action 入门示例工作流

下面是两个适合新手的示例工作流,分别基于Flyway CLI和Maven插件(如果你的项目用Maven管理),帮你快速实现代码推送后自动执行数据库迁移。

前置准备

  • 项目中已放置Flyway迁移脚本,默认路径为src/main/resources/db/migration(自定义路径可在配置中指定)
  • 在GitHub仓库的「Settings → Secrets and variables → Actions」中添加以下密钥:
    • DB_URL:数据库连接地址(例:jdbc:mysql://your-db-host:3306/your-db-name)
    • DB_USER:数据库用户名
    • DB_PASSWORD:数据库密码

示例1:使用Flyway CLI的工作流

创建.github/workflows/flyway-cli-migrate.yml文件,内容如下:

name: Flyway Database Migration (CLI)

on:
  push:
    branches: [ main ]  # 代码推送到main分支时触发
  workflow_dispatch:    # 支持手动触发

jobs:
  migrate:
    runs-on: ubuntu-latest
    steps:
      - name: 检出代码
        uses: actions/checkout@v4

      - name: 设置Java环境
        uses: actions/setup-java@v4
        with:
          java-version: '17'  # Flyway 9+推荐Java 11+
          distribution: 'temurin'

      - name: 下载并安装Flyway
        run: |
          FLYWAY_VERSION="9.22.3"  # 可替换为最新稳定版
          wget https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/${FLYWAY_VERSION}/flyway-commandline-${FLYWAY_VERSION}-linux-x64.tar.gz
          tar -xzf flyway-commandline-${FLYWAY_VERSION}-linux-x64.tar.gz
          sudo ln -s $(pwd)/flyway-${FLYWAY_VERSION}/flyway /usr/local/bin/flyway

      - name: 执行数据库迁移
        run: |
          flyway migrate \
            -url=${{ secrets.DB_URL }} \
            -user=${{ secrets.DB_USER }} \
            -password=${{ secrets.DB_PASSWORD }} \
            -locations=filesystem:./src/main/resources/db/migration  # 迁移脚本路径,可自定义

示例2:使用Maven Flyway插件的工作流

如果你的项目用Maven管理,直接用插件更简便,创建.github/workflows/flyway-maven-migrate.yml文件:

name: Flyway Database Migration (Maven)

on:
  push:
    branches: [ main ]
  workflow_dispatch:

jobs:
  migrate:
    runs-on: ubuntu-latest
    steps:
      - name: 检出代码
        uses: actions/checkout@v4

      - name: 设置Java环境
        uses: actions/setup-java@v4
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: 'maven'  # 缓存Maven依赖,加速构建

      - name: 执行Flyway迁移
        run: mvn flyway:migrate
        env:
          FLYWAY_URL: ${{ secrets.DB_URL }}
          FLYWAY_USER: ${{ secrets.DB_USER }}
          FLYWAY_PASSWORD: ${{ secrets.DB_PASSWORD }}

注:使用Maven插件时,需确保pom.xml中已配置Flyway插件,示例配置如下:

<plugin>
  <groupId>org.flywaydb</groupId>
  <artifactId>flyway-maven-plugin</artifactId>
  <version>9.22.3</version>
  <configuration>
    <url>${FLYWAY_URL}</url>
    <user>${FLYWAY_USER}</user>
    <password>${FLYWAY_PASSWORD}</password>
    <locations>
      <location>classpath:db/migration</location>
    </locations>
  </configuration>
</plugin>

关键注意事项

  • 建议先在测试环境验证工作流,确认迁移正常后再对接生产数据库
  • 不要在代码中硬编码数据库凭证,必须使用GitHub Secrets管理敏感信息
  • 根据你的数据库类型(MySQL、PostgreSQL等),确保Flyway版本支持对应的数据库驱动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:42:05