From 49bcfb3665c732176e975390992478057b7ebc23 Mon Sep 17 00:00:00 2001 From: Lantao Liu Date: Tue, 5 Sep 2017 05:43:25 +0000 Subject: [PATCH] Upload node e2e test log to gcs Signed-off-by: Lantao Liu --- .travis.yml | 24 ++++++++++++++++++++++-- Makefile | 2 +- gcp-secret.json.enc | Bin 0 -> 2368 bytes hack/test-e2e-node.sh | 11 +++++++++++ hack/test-utils.sh | 25 +++++++++++++++++++++++++ 5 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 gcp-secret.json.enc diff --git a/.travis.yml b/.travis.yml index d43c1a20e..004a57756 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,10 +5,21 @@ sudo: required services: - docker +cache: + directories: + - "${HOME}/google-cloud-sdk/" + before_install: + # Workaround to make gsutil work (see travis-ci#7940). + # TODO(random-liu): Remove this after travis-ci#7940 is fixed. + - sudo rm -f /etc/boto.cfg # libseccomp in trusty is not new enough, need backports version. - sudo sh -c "echo 'deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse' > /etc/apt/sources.list.d/backports.list" - sudo apt-get update + # Encrypted data is not available for pull request for security concern. + - if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then + openssl aes-256-cbc -K $encrypted_b5f8c391f742_key -iv $encrypted_b5f8c391f742_iv -in gcp-secret.json.enc -out gcp-secret.json -d; + fi install: - sudo apt-get install btrfs-tools @@ -17,9 +28,19 @@ install: - sudo apt-get install libapparmor-dev - sudo apt-get install socat - docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter + # Pull request test doesn't need google cloud sdk. + - if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ ! -d ${HOME}/google-cloud-sdk ]; then + rm -rf "${HOME}/google-cloud-sdk"; + export CLOUDSDK_CORE_DISABLE_PROMPTS=1; + curl https://sdk.cloud.google.com | bash; + gcloud version; + fi before_script: - export PATH=$HOME/gopath/bin:$PATH + - if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then + gcloud auth activate-service-account --key-file gcp-secret.json --project=k8s-cri-containerd; + fi jobs: include: @@ -52,6 +73,5 @@ jobs: script: - test "${TRAVIS_EVENT_TYPE}" != "cron" && exit 0 || true - make install.deps - - make test-e2e-node - # TODO(random-liu): Upload log to GCS. + - UPLOAD_LOG=true make test-e2e-node go: 1.8.x diff --git a/Makefile b/Makefile index fef989b7b..d3ca165d4 100644 --- a/Makefile +++ b/Makefile @@ -78,7 +78,7 @@ test-cri: binaries @./hack/test-cri.sh test-e2e-node: binaries - @./hack/test-e2e-node.sh + @VERSION=$(VERSION) ./hack/test-e2e-node.sh clean: rm -rf $(BUILD_DIR)/* diff --git a/gcp-secret.json.enc b/gcp-secret.json.enc new file mode 100644 index 0000000000000000000000000000000000000000..aca21bbc1b396f35b3519257ce7fc5f810d689d3 GIT binary patch literal 2368 zcmV-G3BUF!;kF)ZVFQ@A9UG@@w}3;P;-s&uw>HCj@nXQoO`mB{jfGgty8QKuYx`sY zClaOQu-wE6mEHNBX(%b+_kj2 z%UjZy^SA$8mh^$Gz{^$3xxJO20c^qwRf(^0mln;dn~+-;-NuhI4u7&X`=UMLVn`|55W+S63q^eftrKIX&0T3c|_Nmab2@P^@9~#3#kW zj1(4x8-t*2fFVpQ z57*laYZ1pq*lQFUo$c2mylfKX6VPjbht#i*$fBASjK=P z==Ar?j7@K|NnjtheL&WZe++h=xQXFUsM#sK5=AQ3hdl>M=lo(w3nH4sLaW0r|Bi_A1{IcFKb8k~~Y0{E z^m8dAI$o@)46bb!G~OA|DNoY3gb?G8|hMwYdcCaWm*5a|Au9f zaa^iC|2$(t2$sA=mprBOO%8&}p$_Hgy`4_XGc%2Z+Ddy167*hH@v!mQ_%cgDtMAA%o6%fL9(5U>aNUmVg=#qL0aA5 zPCbCnldV$#XkvyNY+lg?B|5yIVIHoUa*l*0^`i9JV4*MHb>y@NR*+_%x->x*kmzWq zZFT2>vjYE1fj8>sy^%35&QO(-;AK~x2-5k*e*4)^Tw{B2`~ zwCyicgJ4DW(!f#Q+Bv53?lChXC$wd&U<)Rex^EaJ!p$X>1!2v|m zJPw_ij{0TXnT*!$*zX+nz#wB>gX20PzfVf1T@UFiuCq{oUWLIqK9+U6;h4vZw~yGb zc>8hLijHo<#5~%&l?YN4MR4iQuaI@XBR5@~%#0+N-k}-jp-ql5df2%7>?AD}%(G3Z zXZ^N7KCUI6?*sqN)OC{nEfCOMNPRollDMs%2;7joA;Y6c92zlgAis0~G_qkW6q899 zAx-X{O~%;DZMhLy2A^CG3SHLPy^L+N&!-+XpWtW;psCDsbnh6AG4GFs%kRT#>gBwq zZx)Cr&gg=&hKG9{1J;*gGWwb4c%rf0OT5H{V0IV|2s5S_kz9mWG33P7q9FR!V57j< zO`Xip9(s7Hsmu=I_>_BOypVAX~s>;=n*5@5E2cto{ zGDeB>(j%#CWWX4qYrflDb+bvsDj$r7SH*7d8G#B1q;VSvCt*Xv#4|L7&e38oo_ysp z%8hS00^pyZA|2L9SxE{6b8;6!;ASU^^@85|1;mPj%=Zpl%S!cPH1xS8FRl4>xN$B+ zPe9noz5@T|F{Dv9f;W(1_*H>(2*+)GZ%2J|e`;3XfcB@`%^mQPFmDQ+REshRzp( z|D`11;C!(Gu@q{QT?H!To>8j2iKalCFWM&gScxvfLj>B;wbs^Ai! z;&!dqXMUpZuh;CJ8|P7wTqheG@!d*C)3Ha!Qe*;tbBt#?d$VB6D>0HhHu6@qV0`Y( zcB*}%!*u6Uw{jGBllt(l~!`cv+Jj|xE3&B%rw0xV6^o?SC681y#v520n##YSU& zwr{$8I7fv=zQPqZTDUy|JlT!JwAy27+MFxFP>K|EXp7Uf27rC}5Zk1De+aDz9dWLF zp+2ab`wxAv&(lQ=JS_=?q8nKy$o}FDX`d>3M(;^Cx)#y9`M~O7r{O$ANxP@09>>S> zLQ$jg#CT?SzYE7pgfu;BEYE3j>Wb}VLkv@Q)fRc^eVF2D`}Gti{ce?7kh5#nf2&Zye0{#9jB+Wf)N?M70Ari1JE60bSRC1r#7OSM{nVkg mu=Wd17l=!Sr~i3GkA>e*l0lASvX4(Ri0cAtR%EnGRf{l1ucw*- literal 0 HcmV?d00001 diff --git a/hack/test-e2e-node.sh b/hack/test-e2e-node.sh index 10fe7a540..6b9a2a308 100755 --- a/hack/test-e2e-node.sh +++ b/hack/test-e2e-node.sh @@ -27,6 +27,7 @@ export FOCUS=${FOCUS:-""} # SKIP skips the test to skip. export SKIP=${SKIP:-${DEFAULT_SKIP}} REPORT_DIR=${REPORT_DIR:-"/tmp/test-e2e-node"} +UPLOAD_LOG=${UPLOAD_LOG:-false} # Check GOPATH if [[ -z "${GOPATH}" ]]; then @@ -78,3 +79,13 @@ kill_cri_containerd sudo iptables-restore < ${ORIGINAL_RULES} rm ${ORIGINAL_RULES} + +# UPLOAD_LOG_PATH is bucket to upload test logs. +UPLOAD_LOG_PATH=cri-containerd_test-e2e-node +if ${UPLOAD_LOG}; then + if [ -z "${VERSION}" ]; then + echo "VERSION is not set" + exit 1 + fi + upload_logs_to_gcs "${UPLOAD_LOG_PATH}" "${VERSION}-$(date +%Y%m%d-%H%M%S)" "${REPORT_DIR}" +fi diff --git a/hack/test-utils.sh b/hack/test-utils.sh index 8104f6cc1..2f94764b2 100644 --- a/hack/test-utils.sh +++ b/hack/test-utils.sh @@ -51,3 +51,28 @@ start_cri_containerd() { kill_cri_containerd() { sudo pkill containerd } + +# upload_logs_to_gcs uploads test logs to gcs. +# Var set: +# 1. Bucket: gcs bucket to upload logs. +# 2. Dir: directory name to upload logs. +# 3. Test Result: directory of the test result. +upload_logs_to_gcs() { + local -r bucket=$1 + local -r dir=$2 + local -r result=$3 + if ! gsutil ls "gs://${bucket}" > /dev/null; then + gsutil mb "gs://${bucket}" + gsutil -m acl ch -g all:R "gs://${bucket}" + gsutil defacl set public-read "gs://${bucket}" + local -r bucket_rule=$(mktemp) + # Set 30 day TTL for logs inside the bucket. + echo '{"rule": [{"action": {"type": "Delete"},"condition": {"age": 30}}]}' > ${bucket_rule} + gsutil lifecycle set "${bucket_rule}" "gs://${bucket}" + rm "${bucket_rule}" + fi + local -r upload_log_path=${bucket}/${dir} + gsutil cp -r "${REPORT_DIR}" "gs://${upload_log_path}" + echo "Test logs are uploaed to: + http://gcsweb.k8s.io/gcs/${upload_log_path}/" +}