如何防止Travis-CI终止工作?

时间:2017-12-08 11:59:05

标签: bash macos shell travis-ci

我有一堆文件需要复制到tmp/目录然后压缩。

我尝试cp -rf $SRC $DST但是在命令完成之前终止了作业。 verbose选项int可以帮助,因为日志文件超出了大小限制。

我写了一个小函数来打印一个百分比条,但我遇到了与日志大小限制相同的问题所以我可能需要将stdout重定向到stderr但是我不确定。

这是具有以下功能的片段:

function cp_p() {
  local files=0
  while IFS= read -r -d '' file; do ((files++)); done < <(find -L $1 -mindepth 1 -name '*.*' -print0)
  local duration=$(tput cols)
  duration=$(($duration<80?$duration:80-8))
  local count=1
  local elapsed=1
  local bar=""

  already_done() {
    bar="\r|"
    for ((done=0; done<$(( ($elapsed)*($duration)/100 )); done++)); do
      printf -v bar "$bar▇"
    done
  }
  remaining() {
    for ((remain=$(( ($elapsed)*($duration)/100 )); remain<$duration; remain++)); do
      printf -v bar "$bar "
    done
    printf -v bar "$bar|"
  }
  percentage() {
    printf -v bar "$bar%3d%s" $elapsed '%%'
  }

  mkdir -p "$2/$1"
  chmod `stat -f %A "$1"` "$2/$1"

  while IFS= read -r -d '' file; do
    file=$(echo $file | sed 's|^\./\(.*\)|"\1"|')
    elapsed=$(( (($count)*100)/($files) ))
    already_done
    remaining
    percentage
    printf "$bar"
    if [[ -d "$file" ]]; then
      dst=$2/$file
      test -d "$dst" || (mkdir -p "$dst" && chmod `stat -f %A "$file"` "$dst")
    else
      src=${file%/*}
      dst=$2/$src
      test -d "$dst" || (mkdir -p "$dst" && chmod `stat -f %A "$src"` "$dst")
      cp -pf "$file" "$2/$file"
    fi
    ((count++))
  done < <(find -L $1 -mindepth 1 -name '*.*' -print0)

  printf "\r"
}

这是我得到的错误

packaging files (this may take several minutes) ...

|▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ | 98%

The log length has exceeded the limit of 4 MB (this usually means that the test suite is raising the same exception over and over).

The job has been terminated

1 个答案:

答案 0 :(得分:1)

你试过travis_wait cp -rf $SRC $DST吗?有关详细信息,请参阅https://docs.travis-ci.com/user/common-build-problems/#Build-times-out-because-no-output-was-received

另外,我认为通常磁盘操作在macOS构建上相当慢。在触摸文件时,最好还是压缩文件结构。假设你想要gzip这件事:

travis_wait tar -zcf $DST.tar.gz $SRC