如何在GitHub Workflow中缓存JDK与Android SDK以缩短工作流运行耗时?
GitHub Actions缓存JDK和Android SDK配置方案
你现有配置里重复写了两次actions/checkout步骤,可删除第一次的,保留带fetch-depth: 0的即可,避免重复拉取代码。具体缓存配置如下:
完整工作流配置
jobs: deploy: runs-on: ubuntu-latest timeout-minutes: 60 steps: - name: Check out repository uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up JDK 11 uses: actions/setup-java@v2 with: distribution: "zulu" java-version: 11 # 按项目实际构建工具填写,可选值gradle、maven、sbt cache: 'gradle' - name: Cache Android SDK uses: actions/cache@v3 id: android-sdk-cache with: path: ${{ env.ANDROID_SDK_ROOT }} # 可自定义key规则,当前绑定build.gradle哈希,配置变更自动更新缓存 key: android-sdk-${{ hashFiles('**/build.gradle') }} restore-keys: android-sdk- - name: Setup Android SDK uses: android-actions/setup-android@v2 # 未命中缓存时才执行下载安装逻辑 if: steps.android-sdk-cache.outputs.cache-hit != 'true'
配置说明
- JDK缓存通过
actions/setup-java内置的cache参数实现,不仅会缓存JDK安装文件,还会同步缓存对应构建工具的依赖包,大幅缩减构建耗时。 - Android SDK缓存通过官方
actions/cache实现,将安卓SDK的全局安装目录整体缓存,命中缓存时会跳过后续的SDK下载安装步骤,直接复用已有文件。 - 你可以根据实际需求调整缓存key规则,如果不需要绑定构建配置,也可以直接写固定前缀加SDK版本号,比如
android-sdk-33。
内容的提问来源于stack exchange,提问作者shafayat hossain
相关产品推荐
相关产品推荐

