Skip to content

Commit

Permalink
add first integration CI test to run on eco vcenter
Browse files Browse the repository at this point in the history
  • Loading branch information
shellymiron committed May 28, 2024
1 parent 75cad2a commit 372fc12
Show file tree
Hide file tree
Showing 13 changed files with 152 additions and 10 deletions.
44 changes: 44 additions & 0 deletions .github/workflows/eco-vcenter-ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
name: Ansible Eco vCenter Integration Test
on:
pull_request:
branches:
- '**'
push:
branches:
- main
- 'release-\d.\d\d'
permissions:
contents: read
jobs:
ansible_integration_test:
runs-on: ["self-hosted", linux, X64]
steps:
- name: Update pip, git
if: runner.os == 'Linux' && startsWith(runner.name, 'ubuntu')
run: |
set -euxo pipefail
sudo apt-get update
sudo apt-get install podman
- name: Checkout repo
uses: actions/checkout@v4
with:
path: ansible_collections/cloud/vmware_ops

- name: Generate integration config
working-directory: ansible_collections/cloud/vmware_ops/scripts
run: |
chmod +x generate_integration_config.sh
./generate_integration_config.sh
env:
VCENTER_HOSTNAME: ${{ secrets.VCENTER_HOSTNAME }}
VCENTER_USERNAME: ${{ secrets.VCENTER_USERNAME }}
VCENTER_PASSWORD: ${{ secrets.VCENTER_PASSWORD }}

- name: Run integration tests
working-directory: ansible_collections/cloud/vmware_ops
run: |
python3 -m venv .venv
source .venv/bin/activate
make eco-vcenter-ci
5 changes: 4 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: Ansible Integration Test
on: # yamllint disable-line rule:truthy
on: # yamllint disable-line rule:truthy
pull_request:
merge_group:
branches:
Expand All @@ -27,5 +27,8 @@ jobs:

- name: Run
run: |
python3 -m venv .venv
source .venv/bin/activate
env
make integration
working-directory: ansible_collections/cloud/vmware_ops
14 changes: 11 additions & 3 deletions CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
* @bardielle
* @machacekondra
* @mikemorency
# Default code owners for all files and directories
* @bardielle @machacekondra @mikemorency

# Integration tests permissions
/tests/integration/ @shellymiron @elsapassaro

# Specific workflow file permissions
.github/workflows/eco-vcenter-ci.yaml @shellymiron @elsapassaro

# Scripts directory permissions
/scripts/ @shellymiron @elsapassaro
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,16 @@ install-python-packages:

.PHONY: install-ansible-collections
install-ansible-collections:
ansible-galaxy collection install -r tests/integration/requirements.yml
ansible-galaxy collection install -r tests/integration/requirements.yml --force

.PHONY: integration
integration: install-python-packages install-ansible-collections
ansible-test integration --no-temp-workdir

.PHONY: eco-vcenter-ci
eco-vcenter-ci: install-python-packages install-ansible-collections
ansible-test integration --no-temp-workdir info_test

.PHONY: ee-clean
ee-clean:
rm -rf context/
Expand Down
14 changes: 14 additions & 0 deletions scripts/generate_integration_config.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash
# shellcheck disable=SC2155,SC2086

# Resolve the script's directory reliably
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd)"
cd "$SCRIPT_DIR" || exit 1

# Truncate the output file
truncate -s 0 integration_config.yml

# Read the template and substitute environment variables
while read -r line; do
eval 'echo "'"$line"'"' >> integration_config.yml
done < "integration_config.yml.tpl"
5 changes: 5 additions & 0 deletions scripts/integration_config.yml.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
vcenter_hostname: ${VCENTER_HOSTNAME}
vcenter_username: ${VCENTER_USERNAME}
vcenter_password: ${VCENTER_PASSWORD}
ansible_tags: eco-vcenter-ci
1 change: 1 addition & 0 deletions tests/integration/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ pyVmomi>=6.7
podman
requests
pycdlib
git+https://github.com/vmware/vsphere-automation-sdk-python.git
30 changes: 26 additions & 4 deletions tests/integration/targets/info_test/run.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,41 @@
- hosts: localhost
gather_facts: no
- name: Run Info Test Tasks
hosts: localhost
gather_facts: false
collections:
- community.general
vars_files:
- vars.yml

tasks:
- name: Vcsim

# - name: Import eco-vcenter credentials
# ansible.builtin.include_vars:
# file: ../../../../scripts/integration_config.yml
# tags: eco-vcenter-ci

# - name: Import vars for testing on eco-vcenter env
# ansible.builtin.include_vars:
# file: ../vars/main.yml
# tags: eco-vcenter-ci

# - name: Import simulator vars
# ansible.builtin.include_vars:
# file: vars.yml
# tags: integration-ci

- name: Prepare Soap (vcsim)
ansible.builtin.import_role:
name: prepare_soap
# tags: integration-ci

- name: Vcsim
- name: Prepare Rest
ansible.builtin.import_role:
name: prepare_rest
# tags: integration-ci

- name: Import info role
ansible.builtin.import_role:
name: info_test
# tags:
# - eco-vcenter-ci
# - integration-ci
11 changes: 11 additions & 0 deletions tests/integration/targets/info_test/runme.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
#!/usr/bin/env bash
source ../init.sh
exec ansible-playbook run.yml
# Extract the ansible_tags from integration_config.yml
# ANSIBLE_TAGS=$(awk '/ansible_tags/ {print $2}' ../../../../scripts/integration_config.yml)

# # Check if the ANSIBLE_TAGS variable is set
# if [[ -n "$ANSIBLE_TAGS" ]]; then
# echo "ANSIBLE_TAGS is set to: $ANSIBLE_TAGS"
# exec ansible-playbook run.yml --tags "$ANSIBLE_TAGS"
# else
# echo "ANSIBLE_TAGS is not set for Eco vCenter. Running on simulator."
# exec ansible-playbook run.yml --tags integration-ci
# fi
13 changes: 13 additions & 0 deletions tests/integration/targets/info_test/vars/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
info_hostname: "{{ vcenter_hostname }}"
info_username: "{{ vcenter_username }}"
info_password: "{{ vcenter_password }}"
info_validate_certs: false
info_appliance_file: "/tmp/info_appliance_file"
info_license_file: "/tmp/info_license_file"
info_storage_file: "/tmp/info_storage_file"
info_guest_file: "/tmp/guest_info_file"
info_license: true
info_storage: true
info_cluster: true
info_guest: true
info_appliance: true
16 changes: 16 additions & 0 deletions tests/integration/targets/init.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
#!/usr/bin/env bash
# shellcheck disable=SC2155,SC2086

# Extract the ansible_tags from integration_config.yml
# ANSIBLE_TAGS=$(awk '/ansible_tags/ {print $2}' ../../../../scripts/integration_config.yml)

# # Check if the ANSIBLE_TAGS variable is set, and if so, change the collection paths
# if [[ -n "$ANSIBLE_TAGS" ]]; then
# export VALIDATED_COLLECTIONS_PATH="/home/kni/actions-runner/eco-vcenter/cloud.vmware_ops/cloud.vmware_ops/ansible_collections"
# export ALL_COLLECTIONS_PATH="$HOME/.ansible/collections/ansible_collections"

# # Export the collections path
# export ANSIBLE_COLLECTIONS_PATH=${VALIDATED_COLLECTIONS_PATH}:${ALL_COLLECTIONS_PATH}

# echo "ANSIBLE_COLLECTIONS_PATH: $ANSIBLE_COLLECTIONS_PATH"
# BASE_DIR=$(dirname "$(realpath "${BASH_SOURCE[0]}")")
# export ANSIBLE_ROLES_PATH=${BASE_DIR}:${ANSIBLE_COLLECTIONS_PATH}
# else
BASE_DIR=$(dirname "${BASH_SOURCE[0]}")
export ANSIBLE_ROLES_PATH=${BASE_DIR}
# fi
1 change: 1 addition & 0 deletions tests/integration/targets/prepare_rest/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
name:
- requests
- aiohttp
- git+https://github.com/vmware/vsphere-automation-sdk-python.git

- name: Run rest
containers.podman.podman_container:
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/targets/prepare_soap/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
name:
- requests
- pyVmomi
- git+https://github.com/vmware/vsphere-automation-sdk-python.git

- name: Run soap vcSim
containers.podman.podman_container:
name: vmwaresoap

image: docker.io/vmware/vcsim:latest
state: started
recreate: yes
Expand Down

0 comments on commit 372fc12

Please sign in to comment.