2017-03-06 165 views
0

在我们的办公室,员工使用yocto进行项目开发活动&所有将从源存储库下载。Yocto本地存储库

我想设置一个存储库类型的服务器(就像apt-cacher),其中所有的客户机将连接本地存储库&下载任何所需的。这可能吗?

如果我提出错误或错误理解,请更正。

回答

0

一个想法是创建本地云驱动器并将其作为文件夹附加到计算机。

/conf/local.conf,改变

SSTATE_DIR = "/path/to/your/sstate-repository" 
DL_DIR ?= "/path/to/your/download/repository" 

请注意,sstate将时间累积到时间,从而创建一个cron作业来删除该文件中有使用这个命令:

find ${sstate_dir} -name 'sstate*' -atime +3 -delete; fi

更多信息请参见第27页HERE

0

假设您唯一关心的是h ere是源代码(而不是构建包),你应该看看PREMIRRORS variable。在你的问题中,我不清楚的一件事是“源代码库”(伴随着git标签),你的项目通常由许多组件构建,其中大约95%来自外部来源,而另一些来自内部存储库(混帐/ SVN /不管)。内部存储库通常不是一个大问题,你有他们附近,他们倾向于工作,并且无论如何,涉及的每个人都应该有一些访问权限。大多数问题实际上都是在外部读取时发生的,这就是镜像很方便的地方。

我通常设置的东西WRT源文件管理的方法如下:

  • 设置一些内部FTP服务器,说“ftp://oe-src.example.com/”(匿名只读访问)
  • 使用DL_DIR ?= "${HOME}/sources"在你的local.conf(这是它回到OE Classic时代的方式),这不是必须的,只是我喜欢有能力清理构建目录而不同时擦除下载的源文件
  • 设置PREMIRRORS v良莠不齐的local.conf这样的:

    PREMIRRORS = "\ 
         git://.*/.* ftp://oe-src.example.com/ \n \ 
         ftp://.*/.* ftp://oe-src.example.com/ \n \ 
         http://.*/.* ftp://oe-src.example.com/ \n \ 
         https://.*/.* ftp://oe-src.example.com/ \n \ 
    " 
    
  • 添加动作到你的CI工具来同步(在“添加到”模式,而不是删除旧源)~/sources与构建之后您的FTP(通过FTP/SCP/rsync的/不管)

这样,你总是有一个很好的一套源文件(BTW的,也包括你的内部软件VCS检出的压缩包,所以它有点帮助FTP和减少内部VCS负载)最的源文件请求满足于这个FTP,所以你不再有缺失源/校验和/缓慢下载等问题。

我看到的唯一不足就是这个FTP向所有人开放,它拥有包括内部资源在内的所有资源,根据您的安全策略,这可能是也可能不是问题。这可以通过使用每个项目的SFTP镜像来缓解,这会导致额外的用户密钥管理开销,但我在实践中也做了这样的设置,所以在需要时可以完成。