diff --git a/hack/verify-flags/known-flags.txt b/hack/verify-flags/known-flags.txt index b9dd7fcb57d..2e775f22b98 100644 --- a/hack/verify-flags/known-flags.txt +++ b/hack/verify-flags/known-flags.txt @@ -214,6 +214,7 @@ input-dirs insecure-bind-address insecure-port insecure-skip-tls-verify +instance-metadata instance-name-prefix iptables-masquerade-bit iptables-sync-period diff --git a/test/e2e_node/jenkins/e2e-node-jenkins.sh b/test/e2e_node/jenkins/e2e-node-jenkins.sh index 862fb088fd2..15b7969d5cd 100755 --- a/test/e2e_node/jenkins/e2e-node-jenkins.sh +++ b/test/e2e_node/jenkins/e2e-node-jenkins.sh @@ -38,4 +38,4 @@ go run test/e2e_node/runner/run_e2e.go --logtostderr --vmodule=*=2 --ssh-env="g --zone="$GCE_ZONE" --project="$GCE_PROJECT" --image-project="$GCE_IMAGE_PROJECT" \ --hosts="$GCE_HOSTS" --images="$GCE_IMAGES" --cleanup="$CLEANUP" \ --results-dir="$ARTIFACTS" --ginkgo-flags="$GINKGO_FLAGS" \ - --setup-node="$SETUP_NODE" + --setup-node="$SETUP_NODE" --instance-metadata="$GCE_INSTANCE_METADATA" diff --git a/test/e2e_node/jenkins/gci-init.yaml b/test/e2e_node/jenkins/gci-init.yaml new file mode 100644 index 00000000000..1227c73e019 --- /dev/null +++ b/test/e2e_node/jenkins/gci-init.yaml @@ -0,0 +1,9 @@ +#cloud-config + +runcmd: + - ETCD_VERSION=v2.2.5 + - curl -L https://github.com/coreos/etcd/releases/download/${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz -o /tmp/etcd.tar.gz + - tar xzvf /tmp/etcd.tar.gz -C /tmp + - sudo mv /tmp/etcd-${ETCD_VERSION}-linux-amd64/etcd* /usr/local/bin/ + - sudo chown root:root /usr/local/bin/etcd* + - rm -r /tmp/etcd* diff --git a/test/e2e_node/jenkins/jenkins-docker-validation.properties b/test/e2e_node/jenkins/jenkins-docker-validation.properties new file mode 100644 index 00000000000..837ddbf3692 --- /dev/null +++ b/test/e2e_node/jenkins/jenkins-docker-validation.properties @@ -0,0 +1,18 @@ +GCI_IMAGE_PROJECT=container-vm-image-staging +GCI_IMAGE_FAMILY=gci-preview-test +GCI_IMAGE=$(gcloud compute images describe-from-family ${GCI_IMAGE_FAMILY} --project=${GCI_IMAGE_PROJECT} --format="value(name)") +DOCKER_VERSION=$(curl -fsSL --retry 3 https://api.github.com/repos/docker/docker/releases | tac | tac | grep -m 1 "\"tag_name\"\:" | grep -Eo "[0-9\.rc-]+") +GCI_CLOUD_INIT=test/e2e_node/jenkins/gci-init.yaml + +GCE_HOSTS= +GCE_IMAGES=${GCI_IMAGE} +GCE_IMAGE_PROJECT=${GCI_IMAGE_PROJECT} +GCE_ZONE=us-central1-f +GCE_PROJECT=kubernetes-jenkins +# kubernetes-jenkins +# user-data is the GCI cloud init config file. +# gci-docker-version specifies docker version in GCI image. +GCE_INSTANCE_METADATA="user-data<${GCI_CLOUD_INIT},gci-docker-version=${DOCKER_VERSION}" +CLEANUP=true +GINKGO_FLAGS=--skip=FLAKY +SETUP_NODE=false diff --git a/test/e2e_node/runner/run_e2e.go b/test/e2e_node/runner/run_e2e.go index 0dca4e2126d..ce365e74b1f 100644 --- a/test/e2e_node/runner/run_e2e.go +++ b/test/e2e_node/runner/run_e2e.go @@ -23,6 +23,7 @@ package main import ( "flag" "fmt" + "io/ioutil" "math/rand" "net/http" "os" @@ -49,6 +50,7 @@ var cleanup = flag.Bool("cleanup", true, "If true remove files from remote hosts var deleteInstances = flag.Bool("delete-instances", true, "If true, delete any instances created") var buildOnly = flag.Bool("build-only", false, "If true, build e2e_node_test.tar.gz and exit.") var setupNode = flag.Bool("setup-node", false, "When true, current user will be added to docker group on the test machine") +var instanceMetadata = flag.String("instance-metadata", "", "key/value metadata for instances separated by '=' or '<', 'k=v' means the key is 'k' and the value is 'v'; 'k