我一直在使用 Github Actions 来部署数据工程项目的更改。我收到警告称 set-output 命令已被弃用,并尝试使用 $GITHUB_OUTPUT 但我无法使用它来设置作业的输出。
if_merged:
runs-on: ubuntu-latest
if: github.event.pull_request.merged == true
name: check diff changed
steps:
- name: Checkout
uses: actions/checkout@v3
with:
# Checkout as many commits as needed for the diff
fetch-depth: 2
- shell: pwsh
id: check_file_changed
run: |
# Diff HEAD with the previous commit
# filters out deleted files
$diff = git diff --name-only --diff-filter=d HEAD^ HEAD
# Check what files were in the diff
echo $diff
# Check if a file Pipfile.lock or Dockerfile has changed (added, modified, deleted)
$BuildDiff = $diff | Where-Object { $_ -match 'Pipfile.lock' -or $_ -match 'Dockerfile'}
$HasBuildDiff = $BuildDiff.Length -gt 0
# Check if k8s job has changed
$K8sDiff = $diff | Where-Object { $_ -match 'kubernetes_job.py'}
$HasK8sDiff = $K8sDiff.Length -gt 0
# Check if sql file has changed
$SqlDiff = $diff | Where-Object { $_ -match '.sql'}
$HasSqlDiff = $SqlDiff.Length -gt 0
# Check if flow file has changed
$FlowDiff = $diff | Where-Object { $_ -match 'flow.py'}
$HasFlowDiff = $FlowDiff.Length -gt 0
# Check value of matched object
echo BuildDiff $BuildDiff ---
echo K8sDiff $K8sDiff ---
# echo DeploymentDiff $DeploymentDiff ---
echo FlowDiff $FlowDiff ---
# Set the outputs
Write-Host "::set-output name=build_changed::$HasBuildDiff"
Write-Host "::set-output name=k8s_changed::$HasK8sDiff"
Write-Host "::set-output name=sql_changed::$HasSqlDiff"
Write-Host "flow_changed=$HasFlowDiff" >> $GITHUB_OUTPUT
# Write-Host "::set-output name=flow_changed::$HasFlowDiff"
outputs:
build_changed: ${{ steps.check_file_changed.outputs.build_changed }}
k8s_changed: ${{ steps.check_file_changed.outputs.k8s_changed }}
sql_changed: ${{ steps.check_file_changed.outputs.sql_changed }}
flow_changed: ${{ steps.check_file_changed.outputs.flow_changed }}
Run Code Online (Sandbox Code Playgroud)
我注释掉了“设置输出”步骤的一部分并将其更新为 $GITHUB_OUTPUT。但是,当作业运行时,未设置 flow_changed 输出。我无法发布图像,但是如果我在未设置 $GITHUB_OUTPUT flow_changed 的操作运行后查看完整的作业部分。当我使用旧的 set-output 命令时它被设置。
小智 15
当运行程序在 PowerShell 中执行命令时,您需要格式化新的输出设置,如下所示:
echo "flow_changed=$flow_changed" >> $env:GITHUB_OUTPUT
Run Code Online (Sandbox Code Playgroud)
请注意其他示例中缺少的 $env: 。
| 归档时间: |
|
| 查看次数: |
8806 次 |
| 最近记录: |