From cae701e08c5d4441a4de3fe7bf677883407d7769 Mon Sep 17 00:00:00 2001 From: Chris Evich Date: Mon, 6 Nov 2017 16:16:04 -0500 Subject: [PATCH] DO NOT MERGE: TEST SEPARATION OF BUILD VS INSTALL Stab in the dark, I have no idea what/if there are any dependencies between build tasks and prior install tasks. Assuming not, the order is preserved,by separating build from install/configure, the ``setup`` AMI-cache state is guaranteed to be uniform, no matter what repos were cloned for the build vs install steps. Maybe. Signed-off-by: Chris Evich --- contrib/test/integration/build/cri-o.yml | 64 ------------------ contrib/test/integration/build/kubernetes.yml | 48 +------------- contrib/test/integration/build/plugins.yml | 38 +---------- contrib/test/integration/build/runc.yml | 11 ---- .../integration/{build => install}/bats.yml | 0 contrib/test/integration/install/cri-o.yml | 65 +++++++++++++++++++ .../{build => install}/cri-tools.yml | 0 .../test/integration/install/kubernetes.yml | 48 ++++++++++++++ contrib/test/integration/install/plugins.yml | 28 ++++++++ contrib/test/integration/install/runc.yml | 12 ++++ contrib/test/integration/main.yml | 42 +++++++++--- contrib/test/integration/test.yml | 3 - contrib/test/integration/vars.yml | 5 ++ 13 files changed, 195 insertions(+), 169 deletions(-) rename contrib/test/integration/{build => install}/bats.yml (100%) create mode 100644 contrib/test/integration/install/cri-o.yml rename contrib/test/integration/{build => install}/cri-tools.yml (100%) create mode 100644 contrib/test/integration/install/kubernetes.yml create mode 100644 contrib/test/integration/install/plugins.yml create mode 100644 contrib/test/integration/install/runc.yml diff --git a/contrib/test/integration/build/cri-o.yml b/contrib/test/integration/build/cri-o.yml index fa025035..52aec5a6 100644 --- a/contrib/test/integration/build/cri-o.yml +++ b/contrib/test/integration/build/cri-o.yml @@ -10,70 +10,6 @@ msg: "Expected cri-o to be cloned at {{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o but it wasn't!" when: not dir_stat.stat.exists -- name: install cri-o tools - make: - target: install.tools - chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o" - - name: build cri-o make: chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o" - -- name: install cri-o - make: - target: install - chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o" - -- name: install cri-o systemd files - make: - target: install.systemd - chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o" - -- name: install cri-o config - make: - target: install.config - chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o" - -- name: install configs - copy: - src: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o/{{ item.src }}" - dest: "{{ item.dest }}" - remote_src: yes - with_items: - - src: contrib/cni/10-crio-bridge.conf - dest: /etc/cni/net.d/10-crio-bridge.conf - - src: contrib/cni/99-loopback.conf - dest: /etc/cni/net.d/99-loopback.conf - - src: test/redhat_sigstore.yaml - dest: /etc/containers/registries.d/registry.access.redhat.com.yaml - -- name: run with overlay - replace: - regexp: 'storage_driver = ""' - replace: 'storage_driver = "overlay"' - name: /etc/crio/crio.conf - backup: yes - -- name: run with systemd cgroup manager - replace: - regexp: 'cgroup_manager = "cgroupfs"' - replace: 'cgroup_manager = "systemd"' - name: /etc/crio/crio.conf - backup: yes - -- name: add docker.io default registry - lineinfile: - dest: /etc/crio/crio.conf - line: '"docker.io"' - insertafter: 'registries = \[' - regexp: 'docker\.io' - state: present - -- name: add overlay storage opts on RHEL/CentOS - lineinfile: - dest: /etc/crio/crio.conf - line: '"overlay.override_kernel_check=1"' - insertafter: 'storage_option = \[' - regexp: 'overlay\.override_kernel_check=1' - state: present - when: ansible_distribution == 'RedHat' or ansible_distribution == 'CentOS' diff --git a/contrib/test/integration/build/kubernetes.yml b/contrib/test/integration/build/kubernetes.yml index 07d22f8d..fc4febcd 100644 --- a/contrib/test/integration/build/kubernetes.yml +++ b/contrib/test/integration/build/kubernetes.yml @@ -1,5 +1,6 @@ --- +# TODO: Is this required for building kube, or can it happen after? - name: install etcd command: "hack/install-etcd.sh" args: @@ -8,50 +9,3 @@ - name: build kubernetes make: chdir: "{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes" - -- name: Add custom cluster service file for the e2e testing - copy: - dest: /etc/systemd/system/customcluster.service - content: | - [Unit] - After=network-online.target - Wants=network-online.target - [Service] - WorkingDirectory={{ ansible_env.GOPATH }}/src/k8s.io/kubernetes - ExecStart=/usr/local/bin/createcluster.sh - User=root - [Install] - WantedBy=multi-user.target - -- name: Add create cluster background script for e2e testing - copy: - dest: /usr/local/bin/createcluster.sh - content: | - #!/bin/bash - - export PATH=/usr/local/go/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/root/bin:{{ ansible_env.GOPATH }}/bin:{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes/third_party/etcd:{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes/_output/local/bin/linux/amd64/ - export CONTAINER_RUNTIME=remote - export CGROUP_DRIVER=systemd - export CONTAINER_RUNTIME_ENDPOINT='/var/run/crio.sock --runtime-request-timeout=5m' - export ALLOW_SECURITY_CONTEXT="," - export ALLOW_PRIVILEGED=1 - export DNS_SERVER_IP={{ ansible_eth0.ipv4.address }} - export API_HOST={{ ansible_eth0.ipv4.address }} - export API_HOST_IP={{ ansible_eth0.ipv4.address }} - export KUBE_ENABLE_CLUSTER_DNS=true - ./hack/local-up-cluster.sh - mode: "u=rwx,g=rwx,o=x" - -- name: Set kubernetes_provider to be local - lineinfile: - dest: /etc/environment - line: 'KUBERNETES_PROVIDER=local' - regexp: 'KUBERNETES_PROVIDER=' - state: present - -- name: Set KUBECONFIG - lineinfile: - dest: /etc/environment - line: 'KUBECONFIG=/var/run/kubernetes/admin.kubeconfig' - regexp: 'KUBECONFIG=' - state: present diff --git a/contrib/test/integration/build/plugins.yml b/contrib/test/integration/build/plugins.yml index fc4f7bd1..259aab8b 100644 --- a/contrib/test/integration/build/plugins.yml +++ b/contrib/test/integration/build/plugins.yml @@ -5,40 +5,8 @@ args: chdir: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins" -- name: install plugins - copy: - src: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins/bin/{{ item }}" - dest: "/opt/cni/bin" - mode: "o=rwx,g=rx,o=rx" - remote_src: yes - with_items: - - bridge - - dhcp - - flannel - - host-local - - ipvlan - - loopback - - macvlan - - ptp - - sample - - tuning - - vlan - -- name: clone runcom plugins source repo - git: - repo: "https://github.com/runcom/plugins.git" - dest: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins" - version: "custom-bridge" - force: yes - -- name: build plugins +# TODO: Okay to rename this plugins -> custom-bridge-plugins? +- name: build custom-bridge-plugins command: "./build.sh" args: - chdir: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins" - -- name: install custom bridge - copy: - src: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins/bin/bridge" - dest: "/opt/cni/bin/bridge-custom" - mode: "o=rwx,g=rx,o=rx" - remote_src: yes + chdir: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/custom-bridge-plugins" diff --git a/contrib/test/integration/build/runc.yml b/contrib/test/integration/build/runc.yml index c6cc8c94..02a5ffe4 100644 --- a/contrib/test/integration/build/runc.yml +++ b/contrib/test/integration/build/runc.yml @@ -4,14 +4,3 @@ make: params: BUILDTAGS="seccomp selinux" chdir: "{{ ansible_env.GOPATH }}/src/github.com/opencontainers/runc" - -- name: install runc - make: - target: "install" - chdir: "{{ ansible_env.GOPATH }}/src/github.com/opencontainers/runc" - -- name: link runc - file: - src: /usr/local/sbin/runc - dest: /usr/bin/runc - state: link diff --git a/contrib/test/integration/build/bats.yml b/contrib/test/integration/install/bats.yml similarity index 100% rename from contrib/test/integration/build/bats.yml rename to contrib/test/integration/install/bats.yml diff --git a/contrib/test/integration/install/cri-o.yml b/contrib/test/integration/install/cri-o.yml new file mode 100644 index 00000000..ef221f78 --- /dev/null +++ b/contrib/test/integration/install/cri-o.yml @@ -0,0 +1,65 @@ +--- + +- name: install cri-o tools + make: + target: install.tools + chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o" + +- name: install cri-o + make: + target: install + chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o" + +- name: install cri-o systemd files + make: + target: install.systemd + chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o" + +- name: install cri-o config + make: + target: install.config + chdir: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o" + +- name: install configs + copy: + src: "{{ ansible_env.GOPATH }}/src/github.com/kubernetes-incubator/cri-o/{{ item.src }}" + dest: "{{ item.dest }}" + remote_src: yes + with_items: + - src: contrib/cni/10-crio-bridge.conf + dest: /etc/cni/net.d/10-crio-bridge.conf + - src: contrib/cni/99-loopback.conf + dest: /etc/cni/net.d/99-loopback.conf + - src: test/redhat_sigstore.yaml + dest: /etc/containers/registries.d/registry.access.redhat.com.yaml + +- name: run with overlay + replace: + regexp: 'storage_driver = ""' + replace: 'storage_driver = "overlay"' + name: /etc/crio/crio.conf + backup: yes + +- name: run with systemd cgroup manager + replace: + regexp: 'cgroup_manager = "cgroupfs"' + replace: 'cgroup_manager = "systemd"' + name: /etc/crio/crio.conf + backup: yes + +- name: add docker.io default registry + lineinfile: + dest: /etc/crio/crio.conf + line: '"docker.io"' + insertafter: 'registries = \[' + regexp: 'docker\.io' + state: present + +- name: add overlay storage opts on RHEL/CentOS + lineinfile: + dest: /etc/crio/crio.conf + line: '"overlay.override_kernel_check=1"' + insertafter: 'storage_option = \[' + regexp: 'overlay\.override_kernel_check=1' + state: present + when: ansible_distribution == 'RedHat' or ansible_distribution == 'CentOS' diff --git a/contrib/test/integration/build/cri-tools.yml b/contrib/test/integration/install/cri-tools.yml similarity index 100% rename from contrib/test/integration/build/cri-tools.yml rename to contrib/test/integration/install/cri-tools.yml diff --git a/contrib/test/integration/install/kubernetes.yml b/contrib/test/integration/install/kubernetes.yml new file mode 100644 index 00000000..b2c32ec9 --- /dev/null +++ b/contrib/test/integration/install/kubernetes.yml @@ -0,0 +1,48 @@ +--- + +- name: Add custom cluster service file for the e2e testing + copy: + dest: /etc/systemd/system/customcluster.service + content: | + [Unit] + After=network-online.target + Wants=network-online.target + [Service] + WorkingDirectory={{ ansible_env.GOPATH }}/src/k8s.io/kubernetes + ExecStart=/usr/local/bin/createcluster.sh + User=root + [Install] + WantedBy=multi-user.target + +- name: Add create cluster background script for e2e testing + copy: + dest: /usr/local/bin/createcluster.sh + content: | + #!/bin/bash + + export PATH=/usr/local/go/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/root/bin:{{ ansible_env.GOPATH }}/bin:{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes/third_party/etcd:{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes/_output/local/bin/linux/amd64/ + export CONTAINER_RUNTIME=remote + export CGROUP_DRIVER=systemd + export CONTAINER_RUNTIME_ENDPOINT='/var/run/crio.sock --runtime-request-timeout=5m' + export ALLOW_SECURITY_CONTEXT="," + export ALLOW_PRIVILEGED=1 + export DNS_SERVER_IP={{ ansible_eth0.ipv4.address }} + export API_HOST={{ ansible_eth0.ipv4.address }} + export API_HOST_IP={{ ansible_eth0.ipv4.address }} + export KUBE_ENABLE_CLUSTER_DNS=true + ./hack/local-up-cluster.sh + mode: "u=rwx,g=rwx,o=x" + +- name: Set kubernetes_provider to be local + lineinfile: + dest: /etc/environment + line: 'KUBERNETES_PROVIDER=local' + regexp: 'KUBERNETES_PROVIDER=' + state: present + +- name: Set KUBECONFIG + lineinfile: + dest: /etc/environment + line: 'KUBECONFIG=/var/run/kubernetes/admin.kubeconfig' + regexp: 'KUBECONFIG=' + state: present diff --git a/contrib/test/integration/install/plugins.yml b/contrib/test/integration/install/plugins.yml new file mode 100644 index 00000000..f05fed5f --- /dev/null +++ b/contrib/test/integration/install/plugins.yml @@ -0,0 +1,28 @@ +--- + +- name: install plugins + copy: + src: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins/bin/{{ item }}" + dest: "/opt/cni/bin" + mode: "o=rwx,g=rx,o=rx" + remote_src: yes + with_items: + - bridge + - dhcp + - flannel + - host-local + - ipvlan + - loopback + - macvlan + - ptp + - sample + - tuning + - vlan + +- name: install custom bridge + copy: + # TODO: Okay to rename this plugins -> custom-bridge-plugins? + src: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/custom-bridge-plugins/bin/bridge" + dest: "/opt/cni/bin/bridge-custom" + mode: "o=rwx,g=rx,o=rx" + remote_src: yes diff --git a/contrib/test/integration/install/runc.yml b/contrib/test/integration/install/runc.yml new file mode 100644 index 00000000..1556eb03 --- /dev/null +++ b/contrib/test/integration/install/runc.yml @@ -0,0 +1,12 @@ +--- + +- name: install runc + make: + target: "install" + chdir: "{{ ansible_env.GOPATH }}/src/github.com/opencontainers/runc" + +- name: link runc + file: + src: /usr/local/sbin/runc + dest: /usr/bin/runc + state: link diff --git a/contrib/test/integration/main.yml b/contrib/test/integration/main.yml index 4d26baa0..a21644f5 100644 --- a/contrib/test/integration/main.yml +++ b/contrib/test/integration/main.yml @@ -17,21 +17,17 @@ always_force: False post_tasks: - - name: clone build and install bats - include: "build/bats.yml" - - name: clone build and install cri-tools - include: "build/cri-tools.yml" - - - name: clone build and install kubernetes + - name: Install ETCD and Build Kubernetes include: "build/kubernetes.yml" - - name: clone build and install runc + - name: Build runc include: "build/runc.yml" - - name: clone build and install networking plugins + - name: Build networking plugins include: "build/plugins.yml" + - hosts: all remote_user: root vars_files: @@ -45,9 +41,37 @@ always_force: True post_tasks: - - name: clone build and install cri-o + - name: Install BATS + include: "install/bats.yml" + + - name: Install cri-tools + include: "install/cri-tools.yml" + + - name: Re-Install ETCD and Re-Build Kubernetes + include: "build/kubernetes.yml" + + - name: Re-Install kubernetes + include: "install/kubernetes.yml" + + - name: Build runc + include: "build/runc.yml" + + - name: install runc + include: "install/runc.yml" + + - name: Build networking plugins + include: "build/plugins.yml" + + - name: Install networking plugins + include: "install/plugins.yml" + + - name: Build CRI-O include: "build/cri-o.yml" + - name: Install CRI-O + include: "install/cri-o.yml" + + - hosts: all remote_user: root vars_files: diff --git a/contrib/test/integration/test.yml b/contrib/test/integration/test.yml index 593e8a1c..418ceff7 100644 --- a/contrib/test/integration/test.yml +++ b/contrib/test/integration/test.yml @@ -1,8 +1,5 @@ --- -- name: clone build and install cri-tools - include: "build/cri-tools.yml" - - name: Make testing output verbose so it can be converted to xunit lineinfile: dest: "{{ ansible_env.GOPATH }}/src/k8s.io/kubernetes/hack/make-rules/test.sh" diff --git a/contrib/test/integration/vars.yml b/contrib/test/integration/vars.yml index 5578adca..0a0ba4a0 100644 --- a/contrib/test/integration/vars.yml +++ b/contrib/test/integration/vars.yml @@ -18,6 +18,11 @@ git_operations: dest: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/plugins" version: "dcf7368eeab15e2affc6256f0bb1e84dd46a34de" + # TODO: Okay to rename this plugins -> custom-bridge-plugins and drop force: yes? + - repo: "https://github.com/runcom/plugins.git" + dest: "{{ ansible_env.GOPATH }}/src/github.com/containernetworking/custom-bridge-plugins" + version: "custom-bridge" + - repo: "https://github.com/opencontainers/runc.git" dest: "{{ ansible_env.GOPATH }}/src/github.com/opencontainers/runc" version: "84a082bfef6f932de921437815355186db37aeb1"