在我的github actions jobs中,我希望有n个jobs。
- 作业1将运行
gradle assembleDebug
- job 2到job n将运行
gradle connectedCheck
。每个job之间的区别在于在android模拟器上使用的映像(每个都有不同的android API)
这个想法是在job1中构建项目,而job2到jobn将重用job1中已经构建的内容,并且只构建测试(由connectedCheck运行的任务进行),这是为了避免在job2到jobn中从头构建所有内容。
我已经:
- 将
app/build
app/.cxx
文件保存到job1的github缓存中 - 将作业2中缓存还原到作业n。
在再次运行gradle之前,我尝试对app/build
和app/.cxx
中的文件执行touch
操作(这样我就可以确定这些文件都比源文件旧)。
但这仍然无法节省构建时间,换句话说,系统仍然会重新构建所有内容,gradle会再次运行在job1中完成的任务。
你知道如何做到这一点吗?
1条答案
按热度按时间zwghvu4y1#
我发现:
touch
没有用$PROJECT_DIR/.gradle
目录。除此之外,通过运行:
-i
选项的gradle
-d explain -v
选项的ninja
我发现:
app/build/
之外,我在其他地方也有其他的build/
目录,通常是在我使用的一些库中,例如additional_lib/my_lib/build/
~/.android/debug.keystore
ANDROID_SDK_ROOT/ndk/<version>
和ANDROID_SDK_ROOT/cmake/<version>
中的文件和目录在作业之间必须具有相同的时间戳。因此,在工作中,您必须:
注意:我还在缓存中添加了~/. gradle,但这可能不是强制性的