首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Github Actions IF表达式语法问题

Github Actions IF表达式语法问题
EN

Stack Overflow用户
提问于 2021-05-27 17:31:09
回答 2查看 758关注 0票数 1

我需要检查steps.get_acc.outputs.acc是否小于1,但现在steps.get_acc.outputs.acc是一个字符串,如何使其成为整数?

cml.yaml

代码语言:javascript
复制
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')
EN

回答 2

Stack Overflow用户

发布于 2021-05-27 19:47:45

Github Documentation for output解释说:

输出参数将映射到的值可以设置为字符串或带有上下文的表达式。例如,可以使用步骤上下文将输出值设置为步骤的输出值。

看一下Literals Github documentation,我们可以注意到:

作为表达式的一部分,我们可以使用boolean、null、number__或string数据类型。布尔型文字不区分大小写,因此我们可以使用True或true。

因此,这完全取决于您设置输出变量的方式。

将数字设置为输出的示例:

代码语言:javascript
复制
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条件的示例:

代码语言:javascript
复制
  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 }}"
票数 2
EN

Stack Overflow用户

发布于 2021-05-27 21:27:40

看起来你已经得到了一个关于如何将其作为一个整数处理的答案,但是考虑到你是通过代码设置输出的。为什么不直接计算代码中的整数,然后设置true/false布尔值或Y/N字符串呢?如果您只需要使用该值作为If条件,为什么还要设置整数值呢?您可以只对其进行评估,并在源代码中设置条件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67719416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档