Site icon Mr. 沙先生

Travis CI 跑兩個 deploy 的時候 before_depoly 重複執行

最近在解一個在 Travis CI 遇到的一個很奇怪的問題,原先是把 docker build 放到 before_deploy 會出現 docker build already exits 的問題,原本以為是 Travis 對 Docker 的問題所以把 docker build 移掉後就正常了,然後這兩天發現 Travis CI 的 before_deploy 還是會重複打包的動作。

 

查了一下資料在 Travis 的一張 Issues 單提到「(before|after)_deploy should be run only once before and after all deployment providers」 這個問題從 2014 討論到最近 (Travis 根本沒有想解決!!)

 

重複 before_deploy 除了會讓 CI 時間拉長以外,如果 before_deploy 無法被二次執行的話就會失敗 (docker build same images and tag),不過在下面的討論是可以用 “變數” 的方式來避免重複執行:

before_deploy:
  - >
    if ! [ "$BEFORE_DEPLOY_RUN" ]; then
      export BEFORE_DEPLOY_RUN=1;
      my_cmd 1;
      my_cmd 2;
      ...
    fi

 

順便 tag 一下這篇文章追蹤 Travis 針對這個問題的進度

 

 

 

Exit mobile version