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

GitHub Action安装Flyway CLI后文件缺失问题求助

问题分析与解决方案

问题根源

  1. 步骤顺序错误:你先将Flyway安装到工作目录,再执行actions/checkout。而checkout默认会清空当前工作目录并克隆仓库代码,导致之前生成的flyway-9.21.1文件夹被删除。
  2. PATH环境变量设置无效:单独执行run: PATH=/flyway:$PATH仅在当前shell会话中生效,无法传递到后续步骤。
  3. 多Job环境隔离:GitHub Action的每个Job运行在独立虚拟机中,第一个Job的Flyway安装不会共享给第二个Job,直接调用flyway必然失败。

修正后的Action配置

name: "Development deploy"

on:
  push:
    branches:
      - development

env:
  SQLFLUFF_DIALECT: postgres
  DOCKER_IMAGE: redgate/flyway
  SCHEMAS: etslips

jobs:
  Re-build:
    name: Re-build
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v3.0.0

      - name: Set up Java
        uses: actions/setup-java@v2
        with:
          java-version: "11"
          distribution: "temurin"

      - name: Download and Install Flyway CLI
        run: |
          wget -qO- https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/9.21.1/flyway-commandline-9.21.1-linux-x64.tar.gz | tar -xvz
          ln -s $(pwd)/flyway-9.21.1/flyway /usr/local/bin/flyway
          # 验证安装有效性
          flyway -v

      - name: LS
        run: ls ./

      - name: Clean
        run: flyway clean -url="${{ secrets.DB_BUILD_URL }}" -user="${{ secrets.DB_BUILD_USERNAME}}" -password="${{ secrets.DB_BUILD_PASSWORD}}" -schemas="${{ env.SCHEMAS }}" -cleanDisabled=false

      - name: Migrate
        run: flyway migrate -url="${{ secrets.DB_BUILD_URL }}" -user="${{ secrets.DB_BUILD_USERNAME}}" -password="${{ secrets.DB_BUILD_PASSWORD}}" -schemas="${{ env.SCHEMAS }}" -outOfOrder=false

      - name: Info
        run: flyway info -url="${{ secrets.DB_BUILD_URL }}" -user="${{ secrets.DB_BUILD_USERNAME}}" -password="${{ secrets.DB_BUILD_PASSWORD}}" -schemas="${{ env.SCHEMAS }}" -outOfOrder=false

  Development-deploy:
    name: Development deployment
    needs: Re-build
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v3.0.0

      - name: Set up Java
        uses: actions/setup-java@v2
        with:
          java-version: "11"
          distribution: "temurin"

      - name: Download and Install Flyway CLI
        run: |
          wget -qO- https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/9.21.1/flyway-commandline-9.21.1-linux-x64.tar.gz | tar -xvz
          ln -s $(pwd)/flyway-9.21.1/flyway /usr/local/bin/flyway

      - name: Info
        run: flyway info -url="${{ secrets.DB_DEV_URL }}" -user="${{ secrets.DB_DEV_USERNAME}}" -password="${{ secrets.DB_DEV_PASSWORD}}" -schemas="${{ env.SCHEMAS }}" -outOfOrder=false

      - name: Migrate
        run: flyway migrate -url="${{ secrets.DB_DEV_URL }}" -user="${{ secrets.DB_DEV_USERNAME}}" -password="${{ secrets.DB_DEV_PASSWORD}}" -schemas="${{ env.SCHEMAS }}" -outOfOrder=false

      - name: Info
        run: flyway info -url="${{ secrets.DB_DEV_URL }}" -user="${{ secrets.DB_DEV_USERNAME}}" -password="${{ secrets.DB_DEV_PASSWORD}}" -schemas="${{ env.SCHEMAS }}" -outOfOrder=false

关键修改说明

  1. 调整步骤顺序:先拉取仓库代码,再安装Flyway,避免checkout清空工作目录导致Flyway文件丢失。
  2. 简化命令调用:通过软链接将flyway命令加入/usr/local/bin(该目录已在系统默认PATH中),后续直接使用flyway命令即可,无需指定路径。
  3. 第二个Job补充安装步骤:由于Job间环境完全隔离,第二个Job必须重新安装Flyway才能执行相关操作。
  4. 移除无效PATH设置:软链接到系统默认可执行目录已足够让系统找到flyway命令,无需额外设置PATH。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:40:54