GitLab CI Yocto Build - 如何使用 SSTATE 和 DL_DIR
GitLab CI Yocto Build - How to use SSTATE and DL_DIR
如何配置 GitLab CI 来存储多个作业之间的 SSTATE_DIR
和 DL_DIR
?目前,bitbake 每次都重新构建完整的项目,非常耗时。所以我想再次使用 stage。我尝试了缓存,但由于 zip/unzip 开销很大,构建时间实际上增加了。
我什至不需要在多个项目之间共享 sstate,只需要一种在作业之间存储输出的方法。
我正在使用 Gitlab 11.2.3 和一个 shell 执行器作为运行器。
非常感谢!
如果您为此只使用一个运行器,您可能会使用 GIT_STRATEGY: none
,它将为以下工作重新使用项目工作区; relevant documentation。但是,如果您有多个需要运行程序的作业 运行,这就不会非常准确,因为如果作业是从不同的管道启动的,它可能会稀释存储库。
另一种方式,如果您仍在使用一个运行器,您可以将目录复制出来并复制回您需要的作业中。
否则,您可能会运气不好,必须等待 sticky runners 问题。
您可以简单地在作业之间重用共享状态缓存,如下所示:
Specify 到你的 .yml
文件中的 sstate-cache 目录的路径
gitlab-ci 管道。来自我的一个示例片段:
myrepo.yml
stages:
...
...
variables:
...
TCM_MACHINE: buzby2
...
SSTATE_CACHE: /sstate-cache/$TCM_MACHINE/PLAT3/
PURGE_SSTATE_CACHE: N
...
在我的例子中 /sstate-cache/$TCM_MACHINE/PLAT3/
是 docker 容器中的一个目录
运行构建。此路径安装在 docker 容器中
构建服务器文件系统上的永久 sstate 缓存目录,/var/bitbake/sstate-cache/<machine-id>/PLAT3
.
PURGE_SSTATE_CACHE
可被私有变量覆盖
在管道计划设置中,以便我可以选择删除缓存以进行干净利落
构建。
确保 SSTATE_CACHE
的设置附加到 bitbake conf/local.conf
构建文件,例如
.build_image: &build_image
stage: build
tags:
...
before_script:
...
script:
- echo "SSTATE_DIR ?= \"$SSTATE_CACHE\"" >> conf/local.conf
...
如果您使用相同的模式,请将其应用于 DL_DIR
。
你在.yml
文件中使用的变量可以被gitlab-ci触发器覆盖
或时间表变量。参见 Priority of variables
在11.10版本中,添加了GIT_CLEAN_FLAGS,可以用来实现你想用shell执行器做的事情。
为了完整性:当使用 docker 执行器时,这可以通过使用 docker 卷来实现,这些卷在构建中是持久的。
如何配置 GitLab CI 来存储多个作业之间的 SSTATE_DIR
和 DL_DIR
?目前,bitbake 每次都重新构建完整的项目,非常耗时。所以我想再次使用 stage。我尝试了缓存,但由于 zip/unzip 开销很大,构建时间实际上增加了。
我什至不需要在多个项目之间共享 sstate,只需要一种在作业之间存储输出的方法。
我正在使用 Gitlab 11.2.3 和一个 shell 执行器作为运行器。
非常感谢!
如果您为此只使用一个运行器,您可能会使用 GIT_STRATEGY: none
,它将为以下工作重新使用项目工作区; relevant documentation。但是,如果您有多个需要运行程序的作业 运行,这就不会非常准确,因为如果作业是从不同的管道启动的,它可能会稀释存储库。
另一种方式,如果您仍在使用一个运行器,您可以将目录复制出来并复制回您需要的作业中。
否则,您可能会运气不好,必须等待 sticky runners 问题。
您可以简单地在作业之间重用共享状态缓存,如下所示:
Specify 到你的 .yml
文件中的 sstate-cache 目录的路径
gitlab-ci 管道。来自我的一个示例片段:
myrepo.yml
stages:
...
...
variables:
...
TCM_MACHINE: buzby2
...
SSTATE_CACHE: /sstate-cache/$TCM_MACHINE/PLAT3/
PURGE_SSTATE_CACHE: N
...
在我的例子中 /sstate-cache/$TCM_MACHINE/PLAT3/
是 docker 容器中的一个目录
运行构建。此路径安装在 docker 容器中
构建服务器文件系统上的永久 sstate 缓存目录,/var/bitbake/sstate-cache/<machine-id>/PLAT3
.
PURGE_SSTATE_CACHE
可被私有变量覆盖
在管道计划设置中,以便我可以选择删除缓存以进行干净利落
构建。
确保 SSTATE_CACHE
的设置附加到 bitbake conf/local.conf
构建文件,例如
.build_image: &build_image
stage: build
tags:
...
before_script:
...
script:
- echo "SSTATE_DIR ?= \"$SSTATE_CACHE\"" >> conf/local.conf
...
如果您使用相同的模式,请将其应用于 DL_DIR
。
你在.yml
文件中使用的变量可以被gitlab-ci触发器覆盖
或时间表变量。参见 Priority of variables
在11.10版本中,添加了GIT_CLEAN_FLAGS,可以用来实现你想用shell执行器做的事情。
为了完整性:当使用 docker 执行器时,这可以通过使用 docker 卷来实现,这些卷在构建中是持久的。