If statement Github操作如果表达式语法有问题
我需要检查steps.get_acc.outputs.acc是否小于1,但是现在steps.get_acc.outputs.acc是一个字符串,如何使其成为整数 cml.yamlIf statement Github操作如果表达式语法有问题,if-statement,github-actions,If Statement,Github Actions,我需要检查steps.get_acc.outputs.acc是否小于1,但是现在steps.get_acc.outputs.acc是一个字符串,如何使其成为整数 cml.yaml name: MOPS on: [push] jobs: run: runs-on: [ubuntu-latest] steps: - uses: actions/checkout@v2 - uses: iterative/setup-cml@v1 - uses:
name: MOPS
on: [push]
jobs:
run:
runs-on: [ubuntu-latest]
steps:
- uses: actions/checkout@v2
- uses: iterative/setup-cml@v1
- uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: cml
id: get_acc
shell: pwsh
env:
repo_token: ${{ secrets.GITHUB_TOKEN }}
run: |
pip3 install -r requirements.txt
python train.py
$firstLine = Get-Content -Path 'metrics.txt' -TotalCount 1
$digits = $firstline.Split(':')[-1]
$acc = [int]$digits
Write-Output "::set-output name=acc::$acc"
- name: Check acc
if: ${{steps.get_acc.outputs.acc <1 }}
uses: actions/github-script@v3
with:
script: |
core.setFailed('Accuracy dropped')
名称:MOPS
on:[推]
工作:
运行:
运行于:[ubuntu最新版本]
步骤:
-用途:行动/checkout@v2
-用途:迭代/设置-cml@v1
-用途:操作/设置-python@v2
与:
python版本:“3.x”
-姓名:cml
id:get_acc
外壳:pwsh
环境:
repo_令牌:${{secrets.GITHUB_令牌}
运行:|
pip3安装-r requirements.txt
python train.py
$firstLine=获取内容-路径'metrics.txt'-TotalCount 1
$digits=$firstline.Split(“:”)[-1]
$acc=[int]$digits
写入输出“::设置输出名称=acc::$acc”
-名称:检查acc
if:${{steps.get_acc.outputs.acc说明:
输出参数将映射到的值可以设置为字符串或具有上下文的表达式。例如,可以使用步骤上下文将输出值设置为步骤的输出值
看一看,我们可以注意到:
作为表达式的一部分,我们可以使用boolean、null、number
或string数据类型。boolean文本不区分大小写,因此我们可以使用true或true
因此,这完全取决于设置输出变量的方式
将数字设置为输出的示例:
outputs:
random-number:
description: "Random number"
value: ${{ steps.random-number-generator.outputs.random-id }}
runs:
using: "composite"
steps:
- id: random-number-generator
run: echo "::set-output name=random-id::$(echo $RANDOM)"
shell: bash
job:
runs-on: ubuntu-latest
steps:
- name: step-1
id: xyz
run: echo "::set-output name=acc::$(echo $RANDOM)"
- name: step-2
if: steps.xyz.outputs.acc < 1
run: |
echo "Number lower than 1"
echo "${{ steps.xyz.outputs.acc }}"
- name: step-3
if: steps.xyz.outputs.acc > 1
run: |
echo "Number higher than 1"
echo "${{ steps.xyz.outputs.acc }}"
编辑:
outputs:
random-number:
description: "Random number"
value: ${{ steps.random-number-generator.outputs.random-id }}
runs:
using: "composite"
steps:
- id: random-number-generator
run: echo "::set-output name=random-id::$(echo $RANDOM)"
shell: bash
job:
runs-on: ubuntu-latest
steps:
- name: step-1
id: xyz
run: echo "::set-output name=acc::$(echo $RANDOM)"
- name: step-2
if: steps.xyz.outputs.acc < 1
run: |
echo "Number lower than 1"
echo "${{ steps.xyz.outputs.acc }}"
- name: step-3
if: steps.xyz.outputs.acc > 1
run: |
echo "Number higher than 1"
echo "${{ steps.xyz.outputs.acc }}"
此外,如果条件使用的语法不正确,则需要删除${{
}
,以使其正常工作
带有if条件的示例:
outputs:
random-number:
description: "Random number"
value: ${{ steps.random-number-generator.outputs.random-id }}
runs:
using: "composite"
steps:
- id: random-number-generator
run: echo "::set-output name=random-id::$(echo $RANDOM)"
shell: bash
job:
runs-on: ubuntu-latest
steps:
- name: step-1
id: xyz
run: echo "::set-output name=acc::$(echo $RANDOM)"
- name: step-2
if: steps.xyz.outputs.acc < 1
run: |
echo "Number lower than 1"
echo "${{ steps.xyz.outputs.acc }}"
- name: step-3
if: steps.xyz.outputs.acc > 1
run: |
echo "Number higher than 1"
echo "${{ steps.xyz.outputs.acc }}"
作业:
运行于:ubuntu最新版本
步骤:
-名称:步骤1
id:xyz
运行:echo:::设置输出名称=acc::$(echo$随机)
-名称:步骤2
如果:steps.xyz.outputs.acc<1
运行:|
回显“数字小于1”
回显“${steps.xyz.outputs.acc}”
-名称:步骤3
如果:steps.xyz.outputs.acc>1
运行:|
回显“数字大于1”
回显“${steps.xyz.outputs.acc}”
看起来您已经得到了关于如何将其作为整数处理的答案,但前提是您正在通过代码设置输出。为什么不在代码中计算整数,然后设置真/假布尔值或Y/N字符串?如果您只需要将该值用作If条件,为什么还要费心设置整数值?您可以这样做只需计算它并在源代码处设置条件。我很困惑,你能告诉我如何生成if:${{steps.get_acc.outputs.acc没有问题,我在job5
中做了一个示例:基本上,你不需要if条件中的${{/code>}
。我将用正确的语法更新上面的答案。