日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Github之深入解析Ruby Gems缓存

發布時間:2024/5/21 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Github之深入解析Ruby Gems缓存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

  • 當執行 bundle install 時,需要根據 Gemfile 或者 Gemfile.lock 下載指定的 ruby gems。當在 Github CI 進行構建時,可以把需要下載的 ruby gems 通過使用 Github action 緩存到當前的 CI 服務器,這樣當進行構建時,就能更快的加載需要的 gems。
  • Github 一共提供了兩種 action 完成緩存操作:
    • actions/cache:最流行的緩存 Ruby gem 方案,僅緩存;
    • ruby/setup-ruby:可以安裝指定版本的 Ruby 并且使用 bundler 緩存 Ruby gem。

二、actions/cache

  • actions/cache 將 ruby gems 保存到緩存中并在下一次 CI 構建期間恢復它。如果要指定 Ruby 版本,需要在當前的倉庫目錄,創建一個 .ruby-version 文件,將依賴的 ruby 版本寫入該文件,Kingfisher/.ruby-version:
2.7.0
  • 再來看一下 Kingfisher 中的設置:
# 1- uses: actions/cache@v1id: bundler-cachewith:path: vendor/bundle # 2key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} # 3restore-keys: |${{ runner.os }}-gems- # 4# 5- name: Bundle setup run: bundle config path vendor/bundle- name: Bundle installif: steps.bundler-cache.outputs.cache-hit != 'true' # 6run: bundle install --jobs 4 --retry
  • 對于 actions/cache 的 v1 版本,僅支持單個路徑,它必須是一個目錄,不能緩存單個文件。使用 actions/cache 的 v2 版本,可以指定單個路徑,也可以在單獨的行上添加多個路徑;
  • 輸入參數 path 必要,指定緩存或還原的文件路徑。路徑可以是絕對路徑或相對于工作目錄的路徑,當前是 vendor/bundle;
  • 輸入參數 key,必要。根據當前的操作系統和 Gemfile.lock 文件哈希的表達式生成緩存 key 作為搜索緩存的鍵。當操作系統或者 Gemfile.lock 發生改變時,重新生成 key 值;當 key 匹配現有緩存時,被稱為緩存命中,并且操作會將緩存的文件還原到 path 目錄;
  • restore-keys:可選。key 沒有發生緩存命中時用于查找緩存的其他密鑰順序列表;
    • 如果提供 restore-keys,actions/cache 將按順序搜索與 restore-keys 列表匹配的任何緩存;
    • 當精確匹配時,操作會將緩存中的文件恢復至設置 path 的目錄;
    • 如果沒有精確匹配,操作將會搜索恢復鍵值的部分匹配。當操作找到部分匹配時,最近的緩存將恢復到設置 path 目錄。
  • bundle config path vendor/bundle 配置 bundle,將需要的 ruby gems 安裝到 vendor/bundle 目錄;
  • cache-hit 是 actions/cache 的輸出參數。獲取緩存命中的結果。
    • 當 key 不匹配現有緩存時,則被稱為緩存錯過,在 job 成功完成時將創建一個新緩存。
    • 發生緩存錯過時,操作將搜索 restore-keys 設置的替代鍵值。
  • –jobs 4 --retry 3,并行安裝 ruby gems,如果當前有網絡問題,將嘗試 3 次。

三、ruby/setup-ruby

  • 如果使用 ruby/setup-ruby 來管理 gem 緩存和 ruby 版本就更加直觀和簡潔。首先,在 Github 中 fork Kingfisher 到自己的倉庫。把 .github/workflows 中的 build.ymal 修改為:
name: buildon: [push, pull_request]jobs:run-test:runs-on: macOS-lateststrategy:matrix:destination: ['macOS', 'iOS Simulator,name=iPhone 8', 'tvOS Simulator,name=Apple TV', 'watchOS Simulator,name=Apple Watch Series 5 - 40mm']swift-version: [5.0]steps:- uses: actions/checkout@v1- uses: ruby/setup-ruby@v1with:ruby-version: 2.7bundler-cache: true - name: Run testsenv:DESTINATION: platform=${{ matrix.destination }}SWIFT_VERSION: ${{ matrix.swift-version }}run: bundle exec fastlane test_ci
  • 接下來,將修改的代碼 push 到自己的倉庫中,此時已經觸發 Github CI 服務器,開始執行 workflow:

  • 一共有四個任務,分別對應著,配置在構建矩陣中的參數:

  • 實際執行的命令信息:

  • 可以看到,僅僅需要設置 bundler-cache: true,同時不再需要文件去指定 ruby 版本,相對來說就可以避免手動設置緩存時帶來的問題。

總結

以上是生活随笔為你收集整理的Github之深入解析Ruby Gems缓存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。