我正在尝试在 GitHub Action 中安装 Flyway CLI,但是,安装后我无法找到该包。
我的期望是文件夹
flyway-9.21.1
位于我的当前目录中,然后我可以用它来做flyway的事情。
如果我在安装后在当前目录上执行
ls
,则该文件夹不存在。
>Run ls ./
README.md
flyway.toml
migrations
这会导致以下错误:
flyway-9.21.1/flyway:没有这样的文件或目录
我一直在使用 ACT 工具在本地运行该操作,并且该文件夹存在。
[Development deploy/Re-build] ⭐ Run Main LS
[Development deploy/Re-build] 🐳 docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/4] user= workdir=
| README.md flyway-9.21.1 flyway.toml migrations
我还尝试通过以下方式引用该工具:
基于这个示例,看来我所做的应该是有效的。我想避免使用任何其他工具,即 Docker 或第三方其他操作。
如有任何帮助,我们将不胜感激。
完整动作:
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: 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
- name: Set Flyway Path
run: PATH=/flyway:$PATH
- name: Checkout
uses: actions/[email protected]
- name: LS
run: ls ./
- name: Clean
run: flyway-9.21.1/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/[email protected]
- 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
如果我将
ls
步骤移至 check out
步骤上方,您可以看到目录中存在该工具。
Run ls ./
flyway-9.21.1
我只能假设
check out
步骤覆盖了目录,从而删除了该工具。将 checkout
步骤移至操作中的第一个步骤解决了该问题。
- name: Checkout # Moved to the top
uses: actions/[email protected]
- 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
# Moved from here
- 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
etc...