我需要检查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: 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')发布于 2021-05-27 19:47:45
Github Documentation for output解释说:
输出参数将映射到的值可以设置为字符串或带有上下文的表达式。例如,可以使用步骤上下文将输出值设置为步骤的输出值。
看一下Literals Github documentation,我们可以注意到:
作为表达式的一部分,我们可以使用boolean、null、number__或string数据类型。布尔型文字不区分大小写,因此我们可以使用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编辑:
此外,您用于if条件的语法不正确,您需要删除${{ }}才能使其正常工作。
带有if条件的示例:
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 }}"发布于 2021-05-27 21:27:40
看起来你已经得到了一个关于如何将其作为一个整数处理的答案,但是考虑到你是通过代码设置输出的。为什么不直接计算代码中的整数,然后设置true/false布尔值或Y/N字符串呢?如果您只需要使用该值作为If条件,为什么还要设置整数值呢?您可以只对其进行评估,并在源代码中设置条件。
https://stackoverflow.com/questions/67719416
复制相似问题