繁体   English   中英

如何自动将源代码和已编译代码(不包括git历史记录)部署到第三方开发人员?

[英]How to automate deployment of source & compiled code (excluding git history) to third-party developers?

我将设置一些工具/技术/环境,这样当我需要为第三方开发人员提供源代码时,我会在没有git历史记录的情况下使用已编译和剥离的敏感代码。 因此,我希望自动执行此过程,以便始终提供最新版本的操作,而无需每次都手动执行所有必要步骤。 我用bitbucket和git。

如何使用bitbucket和git实现我的目标? 我还需要其他工具吗?

PS如果不清楚这个想法,请随意编辑问题。 我希望这个问题不是太宽泛,不受限制

听起来你想写一些post-commit钩子。 但这可能对你来说太精细了。 只需将自动步骤.git/hooks/post-commit并制作该可执行文件。 您可以

git --work-tree PATH_FOR_THIRD_PARTY checkout HEAD -- PUBLIC_FILES

在PATH_FOR_THIRD_PARTY中为第三方开发人员更新PUBLIC_FILES,我假设您为第三方开发人员发布数据。

然后为了更新编译结果,你应该写一些Makefile(或类似的)来从隐藏文件中生成PATH_FOR_THIRD_PARTY中的输出。

如果为存储库选择了正确的布局,则只需使用PUBLIC_FILES目录,即可将所有PUBLIC_FILES签出到PATH_FOR_THIRD_PARTY/PUBLIC_FILES

请注意,使用此方法,目录布局在发布目录和存储库中将是相同的。

BTW。:如果第三方开发人员在其目录中更改PUBLIC_FILE,您可以简单地

git --work-tree PATH_FOR_THIRD_PARTY add -u

我经常使用这种方法从git存储库发布文件。 你可以简单

git config -g alias.public '!git --work-tree $(git config --get public.root) '
git config public.root 'PATH_FOR_THIRD_PARTY'

所以你可以说

git public diff --name-only

要么

git public status -s -uno

我认为这种方法被称为或类似于分离的工作树。

如果使用此方法,则需要在执行公共提交后签出本地存储库中的文件:

git public add -u; git public commit -m "John Doe changed something"
git checkout HEAD -- .

最后一行更新您的本地工作树以与您上面提交的提交一致。

我认为你需要的功能是带有交互式选项-i(git rebase -i)的git rebase。 请参阅以下链接中的详细信息: https//www.atlassian.com/git/tutorials/rewriting-history/git-rebase

这将创建一个新的基础,您可以访问第三方。 我不是rebase功能的专家。 请查看链接以获取更多详细信息。

如果您不想被锁定在特定服务中,那么您可以这样做:

  • 编写一个脚本,它可以提供所需的内容,提供源代码,已编译的二进制文件和其他资源(如果有)的存档
  • 您应该能够在自己的机器上执行此脚本,以便于测试/更改
  • 然后编写另一个脚本来创建这些包的方式(例如创建一个ZIP文件)并将其分发到FTP服务器,Amazon S3或您喜欢的任何其他服务
  • 现在你应该拥有一切为你自动化的东西。 您应该可以在自己的机器上执行此操作
  • 如果你想自动化整个过程,以便每次更改代码时执行它,那么使用此设置,您可以选择几乎任何持续集成/交付服务来为您运行,由Bitbucket webhook触发。

如果您使用此设置,您可以使用我们的服务( https://bitrise.io/ - 我是CTO),因为它内置了Bitbucket webhook支持,即使是免费帐户,但当然您可以选择任何其他CI / CD服务,因为这个设置不需要比Bitbucket钩子支持更多的东西以及运行脚本的能力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM