小编Pat*_*tus的帖子

如何修复或避免错误:无法成功处理文件命令“输出”?

最近 github宣布更改命令echo "::set-output name=x::y"已弃用,应替换为echo "x=y" >> $GITHUB_OUTPUT

以前的命令能够处理多行值b,而新方法失败并出现以下错误

Error: Unable to process file command 'output' successfully.
Error: Invalid format
Run Code Online (Sandbox Code Playgroud)

message在我的脚本中,我使用应发送到 slack 的消息文本填充变量。我需要输出变量将该文本传递到执行发送操作的下一个作业步骤。

message="Coverage: $(cat coverage.txt). Covered: $(cat covered.txt). Uncovered: $(cat uncovered.txt). Coverage required: $(cat coverageRequires.csv)"
      
Run Code Online (Sandbox Code Playgroud)

消息的最后一部分包括csv多行文件的上下文

虽然该set-output命令能够处理此类多行参数

echo "::set-output name=text::$message"
Run Code Online (Sandbox Code Playgroud)

新版本失败

echo "text=$message" >> $GITHUB_OUTPUT
Run Code Online (Sandbox Code Playgroud)

可以采取什么措施来修复或避免此错误?

github-actions

39
推荐指数
3
解决办法
2万
查看次数

如何轻松地让 Github Actions 在某些条件下跳过后续作业执行?

我有一个 YAML Github Action 脚本,其中包含三个作业。每晚脚本应检查是否有任何用户提交(不是来自自动作业),然后执行每晚发布构建并将构建部署到测试环境。

我正在努力使用一个单点,如果存储库中除了自动提交之外没有最近的提交,我可以跳过整个第二个和第三个作业的执行。

据我了解,我应该要么使脚本失败以跳过任何进一步的操作,要么if为我所做的每项工作的每一步设置条件,这看起来不简洁。

我试图将if条件放在工作本身上,但它不起作用。if即使条件值为 false,作业也会执行。如果存储库过时,除了使工作失败之外,还有其他更好或更优雅的解决方案吗?

name: Nightly script

on:
  workflow_dispatch:
  schedule:
    - cron: "0 1 * * *"  

jobs:
  check-if-there-are-commits:
    runs-on: ubuntu-latest
    outputs:
      alive: ${{ steps.check.outputs.alive }}
    steps:
      ### Activity check
      ### uses GitHub API to check last non-automagic commit in repository
      ### if it's older than a week, all other steps are skipped
      - name: Activity check
        id: "check"
        run: |
          curl -sL  -H "Authorization: bearer ${{secrets.REPO_BEARER_TOKEN}}" https://api.github.com/repos/$GITHUB_REPOSITORY/commits?sha=dev | …
Run Code Online (Sandbox Code Playgroud)

jobs yaml skip devops github-actions

18
推荐指数
1
解决办法
2万
查看次数

标签 统计

github-actions ×2

devops ×1

jobs ×1

skip ×1

yaml ×1