使用Liquibase GitHub Status Action遇权限错误:AccessDeniedException
问题1:
AccessDeniedException 错误原因及解决办法 错误原因
GitHub Actions 运行 Liquibase Action 时,指定的 test.log 路径所在目录缺乏写入权限。Liquibase Action 通常以非 root 用户运行,直接写入工作根目录可能触发权限限制,或是路径写法问题导致无法创建文件。
解决办法
- 使用 GitHub Actions 临时目录:
${{ runner.temp }}是官方提供的默认拥有写入权限的临时目录,修改logFile参数为:logFile: '${{ runner.temp }}/test.log' - 创建有权限的子目录:先在工作目录下创建日志子目录,再指定路径:
- name: Create logs directory run: mkdir -p logs - name: Status id: status uses: liquibase-github-actions/status@v4.23.0 with: changeLogFile: 'migration/changelog.xml' username: username password: password url: url logLevel: FINE logFile: 'logs/test.log'
问题2:判断变更集是否需要执行的替代方法
无需解析日志文件,以下两种方式更直接可靠:
利用 Liquibase Status 命令的返回码
Liquibase status 命令的返回码有明确规则:
- 返回码
0:所有变更集已执行,无待运行变更 - 返回码
1:存在未执行的变更集 - 返回码非0且非1:命令执行出错
在 GitHub Actions 中可通过步骤退出码判断:
- name: Check Liquibase status id: liquibase-status uses: liquibase-github-actions/status@v4.23.0 continue-on-error: true # 让流水线继续执行,后续判断结果 with: changeLogFile: 'migration/changelog.xml' username: username password: password url: url logLevel: FINE - name: Execute pending changes if: steps.liquibase-status.outcome == 'success' && steps.liquibase-status.exitCode == 1 run: | echo "检测到未执行的变更集,开始执行更新..." # 此处添加 liquibase update 步骤 - name: Skip update (no changes) if: steps.liquibase-status.outcome == 'success' && steps.liquibase-status.exitCode == 0 run: echo "所有变更集已执行,无需操作" - name: Handle Liquibase error if: steps.liquibase-status.outcome == 'failure' run: | echo "Liquibase status 命令执行失败" exit 1
使用 Liquibase Update-SQL 命令
运行 update-sql 命令会输出所有待执行的SQL变更,若无可执行变更,输出文件为空。可通过文件大小判断:
- name: Generate update SQL id: generate-update-sql uses: liquibase-github-actions/update-sql@v4.23.0 with: changeLogFile: 'migration/changelog.xml' username: username password: password url: url outputFile: '${{ runner.temp }}/update.sql' - name: Check for pending changes run: | if [ -s "${{ runner.temp }}/update.sql" ]; then echo "存在未执行的变更集,启动更新流程" # 添加执行更新的步骤 else echo "无变更需要执行" fi
内容的提问来源于stack exchange,提问作者Nespony
相关产品推荐
相关产品推荐

