2016-08-22 69 views
0

對於我的https://github.com/bkimminich/juice-shop項目,我使用Sourceforge提供的webhook(https://sourceforge.net/p/juice-shop/files/github_webhook)在GitHub激發Release事件時在那裏創建發佈。這個webhook獲取所有附在發佈版本上的文件(在GitHub上),並將它們上傳到Sourceforge。到現在爲止還挺好。GitHub不會重新觸發發佈變化

我現在的問題是,我在CI/CD過程期間將更多文件附加到版本,即在Tavis-CI和Appveyor上構建的預封裝分發檔案文件。這些不會讓它成爲Sourceforge,,因爲它們在webhook最初執行時還不存在。看起來,在一個變更(即附加更多文件)到GitHub發行版時,沒有自動重新觸發webhook。

Sourceforge release after manually redelivering

此問題的解決方法是手動重新觸發的最後一個電話網絡掛接,然後將拿起所有文件,包括後來加入的,並將其上傳到Sourceforge上。

Redeliver button for webhook on GitHub

但是,這是一個手工工藝,所以那種打破了我的自動化鏈中的最後一步。有沒有一種方法可以正確自動化?

回答

0

這是GitHub的支持團隊,明確建議的正式答覆去的第一個選項:

  • 不公佈釋放你在它的所有文件之前。相反,創建預發佈或草稿版本,然後觸發 Travis/Appveyor來構建所需的文件,然後將這些文件添加到 版本,最後發佈發佈。 webhook將在發佈發佈時觸發 ,此時將出現所有文件 。

  • 在您使用其他文件更新發行版之後,使用API​​來獲取這些文件並將它們上載到SourceForge。我不確定是否 SourceForge提供了完成這些操作所需的API,因此 您需要向他們諮詢意見。

  • 在您使用附加文件更新發行版之後,取消發佈發行版並再次發佈。這應該會再次觸發webhook ,您可以通過API執行此步驟。

+0

不幸的是GitHub的觸發SourceForge上也對網絡掛接版本標記爲預發行和Sourceforge上不從「真實」版本區分這些,並創建自己的最終釋放。 另一種方法可能是自動點擊GitHub上最後一個版本的「Redeliver」按鈕,因爲這是一個簡單的GET-URL例如https://github.com/bkimminich/juice-shop/settings/hooks/ #redeliver- 。 唯一可變的部分是最後的調用散列。假設你需要發送auth頭文件,否則這將是一個很大的CSRF漏洞。 – bkimminich

+0

在草稿狀態下保持發佈的技巧。至少AppVeyor有一個標誌來保留草稿版本,對於Travis-CI這個沒有記錄。見https://github.com/travis-ci/travis-ci/issues/6132 – bkimminich

相關問題