【问题标题】:How to create and save files using PowerShell in GitHub action?如何在 GitHub 操作中使用 PowerShell 创建和保存文件?
【发布时间】:2023-02-02 17:23:53
【问题描述】:

我是 GitHub 操作的新手,我想使用 PowerShell 并将命令的输出保存到我​​的存储库中的文件中,但我不知道什么是正确的方法。

name: get hash
on: [workflow_dispatch]

jobs:
    build:
      name: Run Script
      runs-on: windows-latest
      steps:
        - uses: actions/checkout@v3
        - name: Script
          run: ./script.ps1
          shell: pwsh

并使用 get-filehash 命令我正在尝试学习创建一个简单的 Github 工作流,该工作流将文件的哈希值保存到我存储库中的文本文件中。

这是script.ps1文件内容

$wc = [System.Net.WebClient]::new()
$pkgurl = 'File on the web'
$FileHashSHA512 = Get-FileHash -Algorithm SHA512 -InputStream ($wc.OpenRead($pkgurl))    
$FileHashSHA512.Hash > .\sss.txt

我知道这不实用,但我想学习工作流程的基础知识。该命令在我的计算机上有效,但我只是不了解 Github 工作流程在我的存储库中保存文件时的工作方式。

我还想让这个命令在同一个工作流程中工作:

Invoke-WebRequest -Uri $pkgurl -OutFile .\file.zip

但同样不知道如何使工作流将文件保存在存储库的根目录中。

因为这些都是非常基础的,所以我尝试自己创建/编写工作流文件,而不是使用其他人的预制动作。

【问题讨论】:

    标签: powershell github github-actions


    【解决方案1】:

    actions runner 只是一台 PC,它克隆 repo 并在其中运行一些命令。因此,当您在运行器上创建一个新文件时,您必须将它添加到运行器上的存储库,创建一个提交并将其推送到 GitHub 上的存储库。

    这可能有助于理解 GitHub 中的 repo 和 GitHub 操作中的运行器是两个完全不同的东西。这不像 actions runner 以某种方式在您的 repo“内部”运行。

    所以保存文件管理器的一种方法是运行:

    git add fileyoujustcreated.txt
    git commit -m "updating file"
    git push
    

    这是一个示例 GitHub 操作,我使用它在每次内容更改时更新我的​​存储库中的文件:

    https://github.com/jessehouwing/jessehouwing/blob/3ff5f5567734197a945022d3544ab0ea8c32bef4/.github/actions/update-scrum-classes/action.yml

    或者,您可以使用 REST API 在 GitHub 中编辑文件,这样您就可以调用:

    curl 
      -X PUT 
      -H "Accept: application/vnd.github+json" 
      -H "Authorization: Bearer <YOUR-TOKEN>"
      -H "X-GitHub-Api-Version: 2022-11-28" 
      https://api.github.com/repos/OWNER/REPO/contents/PATH 
      -d '{"message":"my commit message","committer":{"name":"Monalisa Octocat","email":"octocat@github.com"},"content":"bXkgbmV3IGZpbGUgY29udGVudHM="}'
    

    或者 PowerShell 中的等效项。

    您可以使用 ${{ GitHub.token }} 变量进行身份验证。

    看:

    【讨论】:

    • 谢谢,只有当我将文件从 PowerShell 脚本保存到根文件夹时,git add fileyoujustcreated.txt 命令才有效,对吧?像这样$FileHashSHA512.Hash &gt; .sss.txt,例如,如果我这样做了$FileHashSHA512.Hash &gt; .older1older2sss.txt,那么我必须这样做git add older1olderfileyoujustcreated.txt
    猜你喜欢
    • 2020-03-29
    • 1970-01-01
    • 2022-11-11
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 2012-01-09
    • 2021-01-09
    相关资源
    最近更新 更多