新手入门求助: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
相关产品推荐
相关产品推荐

