github 操作中的权限被拒绝错误
Permission denied error in github actions
我已经编写了一个 github 操作来检索更改的 sql 文件并使用 sqlfluff 对这些更改的文件进行 lint。
这是我的 github 操作代码:
name: files_lint
on:
- pull_request
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- name: Install Python
uses: "actions/setup-python@v2"
with:
python-version: "3.7"
- name: install sqlfluff
run: "pip install sqlfluff"
- name: Get changed .sql files
id: linting
run: some code to get the changed files
- name: Linting files started
id: sql_linting
if: steps.linting.outputs.lintees != ''
shell: bash -l {0}
run: ${{ steps.linting.outputs.lintees }} > sqlfluff fix --force
但是当我 运行 ${{ steps.linting.outputs.lintees }} > sqlfluff fix --force
在上面的 github 操作中更改 sql 文件时,我收到一个错误
/home/runner/work/_temp/a41i1c89a4.sh: line 1: test.sql: Permission denied
Error: Process completed with exit code 126.
您不能像这样重定向文件:
run: ${{ steps.linting.outputs.lintees }} > sqlfluff fix --force
这是在尝试写入该命令的输出 - 但我猜它是文件列表而不是命令?
你应该作为参数传递(假设它是一个文件列表):
run: sqlfluff fix --force ${{ steps.linting.outputs.lintees }}
另外我猜你之后会用它做些什么?如果不是,固定文件将不会执行任何操作。如果你只是想检查文件 sqlfluff lint
会比 sqlfluff fix
更好(并且捕获更多问题因为 sqlfluff fix
只查看它可以修复的规则)。
我已经编写了一个 github 操作来检索更改的 sql 文件并使用 sqlfluff 对这些更改的文件进行 lint。
这是我的 github 操作代码:
name: files_lint
on:
- pull_request
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- name: Install Python
uses: "actions/setup-python@v2"
with:
python-version: "3.7"
- name: install sqlfluff
run: "pip install sqlfluff"
- name: Get changed .sql files
id: linting
run: some code to get the changed files
- name: Linting files started
id: sql_linting
if: steps.linting.outputs.lintees != ''
shell: bash -l {0}
run: ${{ steps.linting.outputs.lintees }} > sqlfluff fix --force
但是当我 运行 ${{ steps.linting.outputs.lintees }} > sqlfluff fix --force
在上面的 github 操作中更改 sql 文件时,我收到一个错误
/home/runner/work/_temp/a41i1c89a4.sh: line 1: test.sql: Permission denied
Error: Process completed with exit code 126.
您不能像这样重定向文件:
run: ${{ steps.linting.outputs.lintees }} > sqlfluff fix --force
这是在尝试写入该命令的输出 - 但我猜它是文件列表而不是命令?
你应该作为参数传递(假设它是一个文件列表):
run: sqlfluff fix --force ${{ steps.linting.outputs.lintees }}
另外我猜你之后会用它做些什么?如果不是,固定文件将不会执行任何操作。如果你只是想检查文件 sqlfluff lint
会比 sqlfluff fix
更好(并且捕获更多问题因为 sqlfluff fix
只查看它可以修复的规则)。