【问题标题】:Using git pull within run in github actions main.yml在 github 操作 main.yml 中使用 git pull
【发布时间】:2022-11-10 02:38:09
【问题描述】:

我正在尝试更新运行我公司某些站点的一些非生产版本的本地服务器,以便在主存储库合并拉取请求时进行更新。但是,当操作到达git pul ... 行时,操作会停止。日志不提供任何信息,该过程似乎停止了。我可以在命令提示符下运行相同的命令。任何建议表示赞赏。

主要的.yml

name: CI
    
    on:
       
      push:
        branches: [ master ]
    
       
      workflow_dispatch:
    
     
    jobs:
       
      deployment:
         
        runs-on: self-hosted
    
         
        steps:
           
          - uses: actions/checkout@v2
    
           
          - name: Test
            shell: cmd
            run: actions.cmd

动作.cmd

cd path\to\stuff
git pull remoteName master

更新,遇到了一些奇怪的缓存问题,但能够清理一下并收到一些错误消息:

nothing to commit, working tree clean
fatal: 'github' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
success
Error: Process completed with exit code 1.

github 是远程的名称。同样,我可以正常运行这些脚本,但也许工作流程需要一些额外的身份验证?

【问题讨论】:

  • 据我所知,当您使用actions/checkout@v2 时,您不必从远程仓库中提取。
  • 请记住,pull = fetch + 2nd-command-of-your-choice。在脚本中,避免使用更冗长的两个命令序列,以便完全控制并提高调试能力。在这种情况下,获取步骤失败:GitHub 用于运行此操作的克隆没有名为 github 的远程。大概你需要一个git remote add 步骤,尽管 GitHub 使用的克隆是首先是 GitHub 克隆,所以这看起来有点奇怪。
  • 如果你需要 fetch 步骤(如果您进行完整克隆,则不会;请记住,checkout@v2 默认情况下会进行浅层单分支克隆),您只需运行第二直接执行step命令。这很可能是要走的路。

标签: git github-actions git-pull github-actions-self-hosted-runners


【解决方案1】:

原来这是一个身份验证问题。不幸的是,在运行器上执行操作时进行调试(即使是自托管的)非常令人沮丧。如果有人知道更好的方法,请随时更新我。

基本上,跑步者没有与托管跑步者的服务器相同的访问权限,所以我只需要在脚本中添加一些身份验证步骤。我认为它会因为我已经将服务器配置为手动成功运行相同的命令,但这似乎是一个很好的安全措施。

【讨论】:

    【解决方案2】:

    为了支付它并可能为其他人节省一些悲伤,我将对此进行更多说明。我遇到了类似的问题。我想在自托管运行器上运行 git pull 命令。

    要在运行器上执行拉取命令,您需要在命令中提供身份验证。您可以使用个人访问令牌进行身份验证。使用令牌认证,命令看起来像:git pull https://<token>@github.com/<repo_url.git>

    我将整个命令封装在一个名为 PULL 的秘密中。

    我的最终工作流程如下所示:

    name: CI
    
    on:
      push:
        branches: [ master ]
    
    jobs:
      deployment:
        runs-on: self-hosted
        steps:
        - name: Test
          working-directory: <path to repo>
          shell: cmd
          run: ${{ secrets.PULL }}
    

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 2020-11-26
      • 1970-01-01
      • 2023-02-23
      • 2021-07-25
      • 2021-05-02
      • 2020-07-27
      • 1970-01-01
      • 2016-03-11
      相关资源
      最近更新 更多