你的遠端倉庫總是拉不到包,一個小妙招教你解決
Artifactory 作為外網代理倉庫時,使用者有時候是否會有經常拉不到包最新版本的包?或者拉包失敗後一段時間內始終是失敗,找不到原因,過了一會自己又恢復了?這篇文件帶你詳細瞭解一下代理倉庫一些策略配置,讓你更好的瞭解倉庫的機制。
l 場景1 :拉包失敗後一直重複同樣的錯誤
有一種情況是當你去請求一個不再快取中的包時候,由於當時可能不確定的原因出現了失敗的情況,但是當你再次嘗試,並且確定伺服器已經可以正常下載的這個包時,去遠端倉庫請求,始終是下載不下來。正當你排查了一段時間,百思不得其解時,抱著死馬當活馬醫的心態嘗試下載時,奇蹟般的發現居然可以下載了。
這個問題的原因當Artifactory 去遠端下載包失敗後,會快取這個失敗的狀態一段時間,避免頻繁去外網惡意請求。假設我們網路穩定的情況這個情況是比較少見的,但是由於目前很多公網源都在國外,導致國內使用者使用國外源,網路穩定性使用無法保證。這也就是為什麼會出現我們前面說的那個問題出現的原因。
不過,這個快取的狀態的時間是可以調整的,具體位置在倉庫配置頁面的advance→cache→Missed Retrieval Cache Period (Sec) ,這個引數為快取失敗狀態的時間,倉庫如果沒有做任何配置的話預設是1800 秒,也就是半小時。當出現上面情況的問題是,將這個引數調整為0 ,就可以立刻觸發重新去外網下載。
當然常規時間還是建議配置一定的快取時間,減少去外網的請求頻率。一定程度上可以提高倉庫的工作效率。
l 場景2 :外網有新包,下載時無法獲取到
這種情況尤其是在Npm 使用時很常見,由於Npm 快速迭代的特性,很多開發者不喜歡在自己引用的包上指定版本號,預設使用latest 版本。這樣在自己本地開發和使用公司內網開發時會發現,使用本地連線外網開發的版本和內網連線製品庫獲取的版本不一致。假設版本不同版本間沒有明顯的功能差異還好,但是如果剛好是元件迭代了一個新的功能或者方法,本地開發時候引用到了,這時候會導致整個專案的Bug 。
這個問題主要原因是製品庫獲取遠端倉庫是有索引的,而這個索引在製品庫中也是同樣有快取的,比如當前更新過一次索引,那麼倉庫一段時間內是不會再次去更新的,這個目的也是為了減少倉庫去外網請求的頻率。
當然這個與上面的內容一樣,也是可以配置的,具體位置在倉庫配置頁面的advance→cache→Metada Retrieval Cache Period (Sec) ,就是倉庫更新索引快取的時間,倉庫如果沒有做任何配置的話預設是7200 秒,也就是兩個小時。當出現上面情況的問題是,將這個引數調整為0 ,就可以立刻觸發重新去外網更新索引,這樣就可以獲取到最新版本了。
l 場景3 :使用的代理,但是無法獲取到包
配置代理後發現無法拉包,但是測試代理下載沒有問題。一般情況下來說,這之後需要去確認代理是否支援Head 請求,遠端倉庫代理下載時為了會使用Head 去校驗包是否存在,但是由於代理不支援Head ,導致請求失敗,無法觸發下載。
當確認下載無問題時,並且公司內代理由於安全管理問題,無法支援Head 請求,可以使用引數配置跳過,直接觸發包的下載。具體引數如下圖。
以上幾個問題是使用Artifactory 作為遠端倉庫代理時常見的幾個場景。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69954434/viewspace-2766465/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Git使用小技巧之多個遠端倉庫Git
- 教你玩轉Git-提取遠端倉庫Git
- 教你玩轉Git-刪除遠端倉庫Git
- git倉庫修改遠端倉庫Git
- 一個專案push到多個遠端Git倉庫Git
- git一個專案設定多個遠端倉庫Git
- git 遠端倉庫Git
- git連線多個遠端倉庫Git
- git 修改本地倉庫的遠端倉庫地址Git
- Maven遠端倉庫的配置Maven
- 我的第一個遠端程式碼庫房:建立Github倉庫 心得Github
- SourceTree使用詳解(連線遠端倉庫,克隆,拉取,提交,推送,新建/切換/合併分支,衝突解決)
- Maven推送本地jar包到遠端私有倉庫配置MavenJAR
- git本地倉庫關聯遠端倉庫Git
- 本地倉庫推送到遠端倉庫的git操作Git
- Git 使用遠端倉庫Git
- git-遠端倉庫Git
- Git同步兩個遠端倉庫的分支程式碼Git
- Maven遠端倉庫的認證Maven
- 如何完整遷移git倉庫到另一個遠端地址Git
- git push到遠端倉庫Git
- 與遠端倉庫保持同步
- pod遠端私有倉庫建立
- maven遠端倉庫配置及含義解釋Maven
- Git多分支 遠端倉庫 協同開發以及解決衝突Git
- git克隆遠端倉庫的指定分支Git
- git連線遠端倉庫的方式Git
- 配置多個 Git 賬號來管理遠端倉庫Git
- Maven deploy部署jar包到遠端私倉MavenJAR
- git 本地push到遠端倉庫Git
- GIT切換遠端地址倉庫Git
- 如何修改 Git 遠端倉庫 URLGit
- 在本地用命令列建立一個git倉庫,並推送到遠端命令列Git
- 實時數倉是一個產品還是解決方案?
- Git 系列教程(8)- 遠端倉庫的使用Git
- 拉取遠端分支
- git版本控制器 中新建遠端倉庫連線 或者 刪除舊的遠端倉庫的連線 建立新的遠端連線Git
- sourceTree這是一個無效的倉庫