问题描述
我使用Github Actions将git repo的子文件夹之一(包括
如何将带有添加/更改/删除的文件的S3(甚至更好的EFS)存储桶同步回Github上的git存储库?
- 我找不到任何可以提供此功能的Github动作
- 当我使用EC2挂载EFS时,我以为我可以git clone并创建一个指向EFS的符号链接。然后,我可以跳过S3的步骤并调用git pull / push。
- 我想我可以构建一个Lambda来启动EC2实例,该实例将自动从S3中提取这些文件并将提交推送到我的git存储库中。
- 我可以尝试弄清楚如何使用Lambda和/ tmp来制定提交
我无法全神贯注于实现这一目标的最佳方法。
你能把我推向正确的方向吗?
P.S。我对git不太熟练,整个实现过程有点超出我的范围。 :-)
解决方法
@vonc,谢谢您的提示,它使我朝着正确的方向前进。
我最终这样做了,这解决了我的最终目标,即通过GIT管理EFS。我可以完全跳过S3 / Lambda。
第1步:sudo mount -t efs -o tls MYFILESYSTEMID:/ efs
第2步:cd efs
第3步:git clone --depth 1 --no-checkout --filter=blob:none git@github.com:user/repo
步骤4:cd repo
步骤5:git sparse-checkout set subdirectory
第6步:git read-tree -mu HEAD
从这里开始,我可以在此特定的子目录中推送/拉动更改。
,如果在挂载AWS EFS后可以在同一EC2实例上克隆Git存储库,则可以执行以下操作:
cd /path/to/cloned/git/repository
git --work-tree=/path/to/mounted/EFS add .
这将检测EFS中添加/修改/删除的更改,并将这些更改导入到克隆的Git存储库中。
从那里,您可以提交并推送。