我正在努力简化我的iOS开发版本,并阅读有关Docker的文章.
如果我理解正确,我可以创建一个包含所有依赖项的映像,而我的开发伙伴可以直接将其拉出来并在其中构建.
现在的问题是,这是否也适用于Fastlane(我认为它使用Xcode cli工具)和"Docker for Mac"?
此外,我使用的是React Native,它似乎启动了第二个绑定JavaScript的过程,该过程将在以后的native版本中包含,我读到Docker只允许一个过程,这是一个问题吗?
我正在努力简化我的iOS开发版本,并阅读有关Docker的文章.
如果我理解正确,我可以创建一个包含所有依赖项的映像,而我的开发伙伴可以直接将其拉出来并在其中构建.
现在的问题是,这是否也适用于Fastlane(我认为它使用Xcode cli工具)和"Docker for Mac"?
此外,我使用的是React Native,它似乎启动了第二个绑定JavaScript的过程,该过程将在以后的native版本中包含,我读到Docker只允许一个过程,这是一个问题吗?
使用Docker的问题是,即使使用Docker for mac,也无法访问基于macOS的图像.Docker运行在一个名为xhyve的轻量级虚拟机中——至少如果您通过Docker for Mac软件包安装Docker,该虚拟机在Mac上运行Linux.
本质上,这意味着docker容器将仅限于非Xcode功能.以下是你肯定做不到的事情,至少如果没有大量的工作:
codesign
签名完成应用程序以下是您可能会使用docker容器进行的操作:
deliver
)match
、cert
、pem
和sigh
)总而言之,你可能会非常有限.相反,建议使用Gemfile
和Brewfile
之类的东西列出所有依赖项,并使用一个运行brew bundle
和bundle install
的小setup.sh
脚本将它们安装到同事的机器上.您还可以将其设置为在构建过程中运行(使用Xcode的脚本构建阶段),这样就不会有人意外忘记安装构建所需的东西.
这就是说,有一个fastlane docker图像正在here上工作,也可以在Docker Hub上使用.请注意,它只被测试过运行fastlane测试(不依赖于仅macOS的软件),因此它实际上并不声称可靠地运行fastlane.
我读到Docker只允许一个进程
Docker允许多个进程,只是不允许多个主进程.如果你的主进程停止了其他一切,容器也随之停止.如果您只是想使用它来安装依赖项,以便可以运行使用它们的一次性命令,而不是托管长期运行的服务,那么您始终可以使用docker run
:
docker run <repo/image:tag> <your_command>
或者在容器中启动一个交互式shell :
docker run -it <repo/image:tag> /bin/bash