GitHub 在子目录中时不创建文件的操作

GitHub Actions not creating files when it's in a subdirectory

我正在尝试学习如何使用 GitHub 操作,但我 运行 遇到了一个小问题。当我在本地 运行 代码时,在 python training/train.py 为 运行ning 时创建的文件会创建在正确的文件夹中。但是,当我尝试用 GitHub 操作做同样的事情时,只有当我选择在根目录而不是 /training/outputs/ 中创建文件时,才会创建这些文件。有办法解决这个问题吗?

这是我的 GitHub 存储库:https://github.com/JayThibs/github-actions-ml-template

我已经想出了解决这个问题的方法,所以我想我应该在这里分享。

因为我使用的是 CML(连续机器学习),所以我可以简单地在我的 GitHub 操作 cml.yaml 文件中包含以下行:

cml-pr training/outputs/*

这是因为 cml 不会自动将输出推送到我的代码。

除了使用cml-pr,您还可以使用以下github手动推送:

git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"

git add training/outputs/*
git commit --message "Commit training outputs"
git push

请记住,如果多个同时运行之间存在竞争条件,后一种解决方案将无法妥善处理合并冲突。

由于该操作会将文件推送到您的存储库,因此如果您的操作在推送时触发,它将触发另一个 GitHub 操作。要解决此问题,只需在提交消息中添加类似 [skip ci] 的内容,GitHub 将阻止触发操作。您可以在这里了解更多信息:https://github.blog/changelog/2021-02-08-github-actions-skip-pull-request-and-push-workflows-with-skip-ci/

0x2b3bfa0 在 GitHub 上帮助我解决了这个问题,你可以在这里找到我们的对话:https://github.com/iterative/cml/issues/658