From 9a54ae293741cff695579834c86f3b4d17c43d36 Mon Sep 17 00:00:00 2001 From: Shane McDonald Date: Tue, 22 Jun 2021 14:35:39 -0400 Subject: [PATCH] Delete test-local, run test-minikube in CI bsycorp/kind is broken. See https://github.com/bsycorp/kind/issues/44 --- .github/workflows/ci.yaml | 13 ++- molecule/default/molecule.yml | 5 -- molecule/test-local/ansible.cfg | 2 - molecule/test-local/converge.yml | 133 ---------------------------- molecule/test-local/molecule.yml | 46 ---------- molecule/test-local/prepare.yml | 38 -------- molecule/test-minikube/converge.yml | 2 - 7 files changed, 10 insertions(+), 229 deletions(-) delete mode 100644 molecule/test-local/ansible.cfg delete mode 100644 molecule/test-local/converge.yml delete mode 100644 molecule/test-local/molecule.yml delete mode 100644 molecule/test-local/prepare.yml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f378b5d2..7f61a28d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -31,14 +31,21 @@ jobs: ansible-lint \ openshift \ jmespath \ - ansible + ansible-core - name: Install Collections run: | - ansible-galaxy collection install community.kubernetes operator_sdk.util + ansible-galaxy collection install community.general kubernetes.core:1.2.1 operator_sdk.util + + - name: Setup Minikube + uses: manusa/actions-setup-minikube@v2.4.2 + with: + minikube version: 'v1.16.0' + kubernetes version: 'v1.19.2' + github token: ${{ secrets.GITHUB_TOKEN }} - name: Run Molecule env: MOLECULE_VERBOSITY: 3 run: | - molecule test -s test-local + molecule test -s test-minikube diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index e4b1cb14..206e24ac 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -27,8 +27,3 @@ provisioner: group_vars: all: operator_namespace: ${TEST_NAMESPACE:-default} - env: - K8S_AUTH_KUBECONFIG: /tmp/molecule/kind-default/kubeconfig - KUBECONFIG: /tmp/molecule/kind-default/kubeconfig - ANSIBLE_ROLES_PATH: ${MOLECULE_PROJECT_DIRECTORY}/roles - KIND_PORT: '${TEST_CLUSTER_PORT:-9443}' diff --git a/molecule/test-local/ansible.cfg b/molecule/test-local/ansible.cfg deleted file mode 100644 index 3efd4c38..00000000 --- a/molecule/test-local/ansible.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[defaults] -stdout_callback = yaml diff --git a/molecule/test-local/converge.yml b/molecule/test-local/converge.yml deleted file mode 100644 index 9ad1d895..00000000 --- a/molecule/test-local/converge.yml +++ /dev/null @@ -1,133 +0,0 @@ ---- -- name: Build Operator in Kind container - hosts: k8s - - vars: - image_name: awx.ansible.com/awx-operator:testing - - tasks: - # using command so we don't need to install any dependencies - - name: Get existing image hash - command: docker images -q {{ image_name }} - register: prev_hash - changed_when: false - - - name: Build Operator Image - command: docker build -f /build/build/Dockerfile -t {{ image_name }} /build - register: build_cmd - changed_when: not prev_hash.stdout or (prev_hash.stdout and prev_hash.stdout not in ''.join(build_cmd.stdout_lines[-2:])) - -- name: Converge - hosts: localhost - connection: local - - vars: - ansible_python_interpreter: '{{ ansible_playbook_python }}' - deploy_dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/deploy" - templates_dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/ansible/templates" - pull_policy: Never - operator_image: awx.ansible.com/awx-operator - operator_version: testing - ansible_debug_logs: "true" - custom_resource: "{{ lookup('file', '/'.join([deploy_dir, 'crds/awx_v1beta1_molecule.yaml'])) | from_yaml }}" - - tasks: - - block: - - name: Delete the Operator Deployment - k8s: - state: absent - namespace: '{{ operator_namespace }}' - definition: "{{ lookup('template', '/'.join([templates_dir, 'operator.yml.j2'])) }}" - register: delete_deployment - when: hostvars[groups.k8s.0].build_cmd.changed - - - name: Wait 30s for Operator Deployment to terminate - k8s_info: - api_version: '{{ definition.apiVersion }}' - kind: '{{ definition.kind }}' - namespace: '{{ operator_namespace }}' - name: '{{ definition.metadata.name }}' - vars: - definition: "{{ lookup('template', '/'.join([templates_dir, 'operator.yml.j2'])) | from_yaml }}" - register: deployment - until: not deployment.resources - delay: 3 - retries: 10 - when: delete_deployment.changed - - - name: Create the Operator Deployment - k8s: - namespace: '{{ operator_namespace }}' - definition: "{{ lookup('template', '/'.join([templates_dir, 'operator.yml.j2'])) }}" - - - name: Ensure the AWX custom_resource namespace exists - k8s: - state: present - name: '{{ custom_resource.metadata.namespace }}' - kind: Namespace - api_version: v1 - - - name: Create the AWX Custom Resource - k8s: - state: present - namespace: '{{ custom_resource.metadata.namespace }}' - definition: '{{ custom_resource }}' - - - name: Wait 15m for reconciliation to run - k8s_info: - api_version: '{{ custom_resource.apiVersion }}' - kind: '{{ custom_resource.kind }}' - namespace: '{{ custom_resource.metadata.namespace }}' - name: '{{ custom_resource.metadata.name }}' - register: cr - until: - - "'Successful' in (cr | json_query('resources[].status.conditions[].reason'))" - delay: 6 - retries: 150 - - rescue: - - - name: debug cr - ignore_errors: yes - failed_when: false - debug: - var: debug_cr - vars: - debug_cr: '{{ lookup("k8s", - kind=custom_resource.kind, - api_version=custom_resource.apiVersion, - namespace=custom_resource.metadata.namespace, - resource_name=custom_resource.metadata.name) - }}' - - - name: debug awx deployment - ignore_errors: yes - failed_when: false - debug: - var: deploy - vars: - deploy: '{{ lookup("k8s", - kind="Deployment", - api_version="apps/v1", - namespace=custom_resource.metadata.namespace, - label_selector="app.kubernetes.io/name=example-awx") - }}' - - - name: get operator logs - ignore_errors: yes - failed_when: false - command: kubectl logs deployment/{{ definition.metadata.name }} -n {{ operator_namespace }} - environment: - KUBECONFIG: '{{ lookup("env", "KUBECONFIG") }}' - vars: - definition: "{{ lookup('template', '/'.join([templates_dir, 'operator.yml.j2'])) | from_yaml }}" - register: log - - - name: print debug output - debug: var=log.stdout_lines - - - name: fail if converge didn't succeed - fail: - msg: "Failed on action: converge" - -- import_playbook: '{{ playbook_dir }}/../default/asserts.yml' diff --git a/molecule/test-local/molecule.yml b/molecule/test-local/molecule.yml deleted file mode 100644 index f534ed46..00000000 --- a/molecule/test-local/molecule.yml +++ /dev/null @@ -1,46 +0,0 @@ ---- -dependency: - name: galaxy -driver: - name: docker -lint: | - set -e - yamllint . - ansible-lint -platforms: - - name: kind-test-local - groups: - - k8s - image: bsycorp/kind:v1.17.9 - privileged: True - override_command: no - exposed_ports: - - 8443/tcp - - 10080/tcp - published_ports: - - 0.0.0.0:${TEST_CLUSTER_PORT:-10443}:8443/tcp - pre_build_image: yes - volumes: - - ${MOLECULE_PROJECT_DIRECTORY}:/build:Z -provisioner: - name: ansible - log: True - inventory: - group_vars: - all: - operator_namespace: ${TEST_NAMESPACE:-default} - env: - K8S_AUTH_KUBECONFIG: /tmp/molecule/kind-test-local/kubeconfig - KUBECONFIG: /tmp/molecule/kind-test-local/kubeconfig - ANSIBLE_ROLES_PATH: ${MOLECULE_PROJECT_DIRECTORY}/roles - KIND_PORT: '${TEST_CLUSTER_PORT:-10443}' -scenario: - test_sequence: - - lint - - destroy - - dependency - - syntax - - create - - prepare - - converge - - destroy diff --git a/molecule/test-local/prepare.yml b/molecule/test-local/prepare.yml deleted file mode 100644 index 7f7d1f7b..00000000 --- a/molecule/test-local/prepare.yml +++ /dev/null @@ -1,38 +0,0 @@ ---- -- name: Prepare kubernetes environment - hosts: k8s - gather_facts: no - vars: - kubeconfig: "{{ lookup('env', 'KUBECONFIG') }}" - tasks: - - name: delete the kubeconfig if present - file: - path: '{{ kubeconfig }}' - state: absent - delegate_to: localhost - - - name: Fetch the kubeconfig - fetch: - dest: '{{ kubeconfig }}' - flat: yes - src: /root/.kube/config - - - name: Change the kubeconfig port to the proper value - replace: - regexp: 8443 - replace: "{{ lookup('env', 'KIND_PORT') }}" - path: '{{ kubeconfig }}' - mode: 0644 - delegate_to: localhost - - - name: Wait for the Kubernetes API to become available (this could take a minute) - uri: - url: "http://localhost:10080/kubernetes-ready" - status_code: 200 - validate_certs: no - register: result - until: (result.status|default(-1)) == 200 - retries: 60 - delay: 5 - -- import_playbook: ../default/prepare.yml diff --git a/molecule/test-minikube/converge.yml b/molecule/test-minikube/converge.yml index a1adbeb3..a44d8cda 100644 --- a/molecule/test-minikube/converge.yml +++ b/molecule/test-minikube/converge.yml @@ -126,8 +126,6 @@ ignore_errors: yes failed_when: false command: kubectl logs deployment/{{ definition.metadata.name }} -n {{ operator_namespace }} -c operator - environment: - KUBECONFIG: '{{ lookup("env", "KUBECONFIG") }}' vars: definition: "{{ lookup('template', '/'.join([templates_dir, 'operator.yml.j2'])) | from_yaml }}" register: log