GitHub Actions 完成后如何实际清理自托管运行器上的存储库?

Lew*_*uce 9 github github-actions

在 GitHub 操作的工作流程结束时,“隐藏”“发布”作业似乎正在运行,而且我似乎不知道如何忽略覆盖它。例如,该actions/checkout@v2操作完成后似乎会运行以下内容:

Post job cleanup.
/usr/bin/git version
git version 2.25.1
/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :
/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
http.https://github.com/.extraheader
/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :
Run Code Online (Sandbox Code Playgroud)

但是,我只想从我的自托管运行器中删除整个存储库。只是一个简单的rm -rf目录。

我尝试将此作为一个步骤添加到我的.yml文件中,但这似乎破坏了actions/checkout@v2我的整个工作流程完成后运行的步骤。

工作流程完成后,如何在自托管运行时完全清理存储库?

Rob*_*dec 13

在使用它之前我能够删除整个存储库actions/checkout@v2

   steps:

    - name: 'Cleanup build folder'
      run: |
        ls -la ./
        rm -rf ./* || true
        rm -rf ./.??* || true
        ls -la ./

    - uses: actions/checkout@v2
Run Code Online (Sandbox Code Playgroud)

我已经添加了ls -la ./之前和之后的内容,因此我可以在操作日志中仔细检查一切是否真的消失了。

诀窍是.??*同时删除所有文件,因为rm -rf ./*不会删除以点开头的文件,这意味着该.git文件夹不会被删除。

通过运行,rm -rf ./.??*我们删除所有以点作为第一个字符的隐藏文件,包括.git文件夹,然后actions/checkout@v2将正确克隆存储库,就像在 github runner 上运行一样。

-H


Von*_*onC 12

查看结账操作的来源,我没有找到覆盖后期工作的方法

自 2022 年 4 月起可以采用另一种方法(目前仍处于测试阶段):

GitHub Actions:自托管运行器的作业管理挂钩

如果您管理 GitHub Actions 的自托管运行器,您现在可以指定在运行器开始运行工作流程中的作业之前以及作业完成之后运行的 shell 脚本。

这允许您在作业开始之前和作业结束之后在自托管运行器上执行任务,因此您可以设置执行环境并在工作流运行后进行清理,以确保运行器本身的状态一致,而无需用户将其添加到他们的工作流程中。

了解有关在作业之前或之后运行脚本的更多信息

在您的情况下,“执行环境清理”步骤现在可以是作业前脚本。