最近 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)
可以采取什么措施来修复或避免此错误?
我有一个 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)