Skip to content
43 changes: 43 additions & 0 deletions .github/actions/make-integ-config/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
name: 'Create ansible-test integration_config.yml'
description: 'Create ansible-test integration_config.yml'
inputs:
ci_config_all:
description: 'CI config for all HyperCore hosts'
required: true
sc_host: # id of input
description: 'SC_HOST environ variable'
required: true
# default: 'World'
sc_username:
description: 'sc_username variable'
required: true
sc_password:
description: 'sc_password variable'
required: true
smb_password:
description: 'smb_password variable'
required: true
sc_replication_dest_password:
description: 'sc_replication_dest_password variable'
required: true
working_directory:
description: 'Path to working directory'
required: true
runs:
using: "composite"
steps:
- run: echo Creating integration-config.yml for sc_host=${{ inputs.sc_host }}.
shell: bash
- run: |
cd ${{ inputs.working_directory }}
echo "${{ inputs.ci_config_all }}" > tests/integration/integration_config.yml
cat tests/integration/integration_config.yml
echo "sc_host: ${{ inputs.sc_host }}" >> tests/integration/integration_config.yml
echo "sc_username: ${{ inputs.sc_username }}" >> tests/integration/integration_config.yml
echo "sc_password: ${{ inputs.sc_password }}" >> tests/integration/integration_config.yml
echo "smb_password: ${{ inputs.smb_password }}" >> tests/integration/integration_config.yml
echo "sc_replication_dest_password: ${{ inputs.sc_replication_dest_password }}" >> tests/integration/integration_config.yml
pwd
ls -al tests/integration/integration_config.yml
shell: bash
105 changes: 66 additions & 39 deletions .github/workflows/integ-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@ on:
Use "*" to run all tests.
Use regex like 'node|^git_issue' to run only a subset.
default: ""
# vm_import|vm_export - they need SMB server
# dns_config|time_server - NTP cannot be reconfigured if DNS is invalid
# git_issues - slow, do not run on each push. TODO - run them only once a day
# oidc_config - during reconfiguration API returns 500/502 errors for other requests
# smtp - email_alert test requires a configured SMTP
# role_ - role cluster_config reconfigures DNS, SMTP, OIDC.
# role_cluster_config - role cluster_config reconfigures DNS, SMTP, OIDC. And it is slow.
# version_update_single_node - role would change version, VSNS system cannot be updated.
integ_tests_exclude:
type: string
description: |-
List integration tests to exclude.
Use "*" to exclude all tests.
Use regex like 'node|^git_issue|^dns_config$' to exclude only a subset.
default: "^dns_config$|^cluster_shutdown$|^version_update$|^oidc_config$|^smtp$|^role_"
default: "^dns_config$|^cluster_shutdown$|^version_update$|^oidc_config$|^smtp$|^role_cluster_config$|^version_update_single_node$"
env:
INTEG_TESTS_INCLUDE_SCHEDULE: "*"
INTEG_TESTS_EXCLUDE_SCHEDULE: "^dns_config$|^cluster_shutdown$|^version_update$|^oidc_config$|^smtp$|^role_"
INTEG_TESTS_EXCLUDE_SCHEDULE: "^dns_config$|^cluster_shutdown$|^version_update$|^oidc_config$|^smtp$|^role_cluster_config$|^version_update_single_node$"
# ansible-test needs special directory structure.
# WORKDIR is a subdir of GITHUB_WORKSPACE
WORKDIR: work-dir/ansible_collections/scale_computing/hypercore
Expand All @@ -47,20 +47,28 @@ jobs:
defaults:
run:
working-directory: ${{ env.WORKDIR }}
strategy:
fail-fast: false
matrix:
sc_host:
- https://10.5.11.200
- https://10.5.11.201
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: ${{ env.WORKDIR }}
- run: ansible-galaxy collection install community.crypto community.general
- run: ansible-galaxy collection list
- run: |
echo "${{ vars.CI_CONFIG_HC_IP50 }}" > tests/integration/integration_config.yml
cat tests/integration/integration_config.yml
echo "sc_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_PASSWORD }}" >> tests/integration/integration_config.yml
echo "smb_password: ${{ secrets.CI_CONFIG_HC_IP50_SMB_PASSWORD }}" >> tests/integration/integration_config.yml
echo "sc_replication_dest_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_REPLICATION_DEST_PASSWORD }}" >> tests/integration/integration_config.yml
ls -al tests/integration/integration_config.yml
- uses: ./work-dir/ansible_collections/scale_computing/hypercore/.github/actions/make-integ-config
with:
ci_config_all: ${{ vars.CI_CONFIG_HC_IP50 }}
sc_host: ${{ matrix.sc_host }}
sc_username: admin
sc_password: ${{ secrets.CI_CONFIG_HC_IP200_SC_PASSWORD }}
smb_password: ${{ secrets.CI_CONFIG_HC_IP50_SMB_PASSWORD }}
sc_replication_dest_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_REPLICATION_DEST_PASSWORD }}
working_directory: ${{ env.WORKDIR }}
- run: ansible-playbook tests/integration/prepare/prepare_iso.yml
- run: ansible-playbook tests/integration/prepare/prepare_vm.yml
- run: ansible-playbook tests/integration/prepare/prepare_examples.yml
Expand Down Expand Up @@ -145,13 +153,22 @@ jobs:
- run: pip install ansible-core~=${{ matrix.ansible }}
- run: ansible-galaxy collection install community.crypto community.general
- run: ansible-galaxy collection list

# ${{ env.WORKDIR }} cannot be used
- uses: ./work-dir/ansible_collections/scale_computing/hypercore/.github/actions/make-integ-config
with:
ci_config_all: ${{ vars.CI_CONFIG_HC_IP50 }}
sc_host: https://10.5.11.200
sc_username: admin
sc_password: ${{ secrets.CI_CONFIG_HC_IP200_SC_PASSWORD }}
smb_password: ${{ secrets.CI_CONFIG_HC_IP50_SMB_PASSWORD }}
sc_replication_dest_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_REPLICATION_DEST_PASSWORD }}
working_directory: ${{ env.WORKDIR }}
- run: |
echo "${{ vars.CI_CONFIG_HC_IP50 }}" > tests/integration/integration_config.yml
cat tests/integration/integration_config.yml
echo "sc_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_PASSWORD }}" >> tests/integration/integration_config.yml
echo "smb_password: ${{ secrets.CI_CONFIG_HC_IP50_SMB_PASSWORD }}" >> tests/integration/integration_config.yml
echo "sc_replication_dest_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_REPLICATION_DEST_PASSWORD }}" >> tests/integration/integration_config.yml
pwd
ls -al tests/integration/integration_config.yml
head tests/integration/integration_config.yml

- run: |
eval export SC_HOST=$(cat tests/integration/integration_config.yml | yq '.sc_host')
eval export SC_USERNAME=$(cat tests/integration/integration_config.yml | yq '.sc_username')
Expand All @@ -177,6 +194,9 @@ jobs:
# python: [3.11]
# test_name: [user_info]
test_name: ${{ fromJson(needs.integ-matrix.outputs.matrix) }}
sc_host:
- https://10.5.11.200
- https://10.5.11.201
steps:
- name: Checkout
uses: actions/checkout@v3
Expand All @@ -188,14 +208,16 @@ jobs:
# But it does affect ansible-galaxy and ansible-test commands.
- run: ansible-galaxy collection install community.crypto
- run: ansible-galaxy collection list
# TODO - make integration_config.yml a reusable artifact/output of integration-prepare-env
- run: |
echo "${{ vars.CI_CONFIG_HC_IP50 }}" > tests/integration/integration_config.yml
cat tests/integration/integration_config.yml
echo "sc_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_PASSWORD }}" >> tests/integration/integration_config.yml
echo "smb_password: ${{ secrets.CI_CONFIG_HC_IP50_SMB_PASSWORD }}" >> tests/integration/integration_config.yml
echo "sc_replication_dest_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_REPLICATION_DEST_PASSWORD }}" >> tests/integration/integration_config.yml
ls -al tests/integration/integration_config.yml
# ${{ env.WORKDIR }} cannot be used
- uses: ./work-dir/ansible_collections/scale_computing/hypercore/.github/actions/make-integ-config
with:
ci_config_all: ${{ vars.CI_CONFIG_HC_IP50 }}
sc_host: ${{ matrix.sc_host }}
sc_username: admin
sc_password: ${{ secrets.CI_CONFIG_HC_IP200_SC_PASSWORD }}
smb_password: ${{ secrets.CI_CONFIG_HC_IP50_SMB_PASSWORD }}
sc_replication_dest_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_REPLICATION_DEST_PASSWORD }}
working_directory: ${{ env.WORKDIR }}
- run: ansible-test integration --local ${{ matrix.test_name }}


Expand All @@ -215,14 +237,16 @@ jobs:
with:
path: ${{ env.WORKDIR }}
- run: pip install ansible-core~=2.13.0
# ansible-test needs special directory structure.
- run: |
echo "${{ vars.CI_CONFIG_HC_IP50 }}" > tests/integration/integration_config.yml
cat tests/integration/integration_config.yml
echo "sc_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_PASSWORD }}" >> tests/integration/integration_config.yml
echo "smb_password: ${{ secrets.CI_CONFIG_HC_IP50_SMB_PASSWORD }}" >> tests/integration/integration_config.yml
echo "sc_replication_dest_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_REPLICATION_DEST_PASSWORD }}" >> tests/integration/integration_config.yml
ls -al tests/integration/integration_config.yml
# ${{ env.WORKDIR }} cannot be used
- uses: ./work-dir/ansible_collections/scale_computing/hypercore/.github/actions/make-integ-config
with:
ci_config_all: ${{ vars.CI_CONFIG_HC_IP50 }}
sc_host: https://10.5.11.200
sc_username: admin
sc_password: ${{ secrets.CI_CONFIG_HC_IP200_SC_PASSWORD }}
smb_password: ${{ secrets.CI_CONFIG_HC_IP50_SMB_PASSWORD }}
sc_replication_dest_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_REPLICATION_DEST_PASSWORD }}
working_directory: ${{ env.WORKDIR }}
- run: ansible-galaxy collection install community.general
- run: ansible-playbook tests/integration/cleanup/ci_replica_cleanup.yml

Expand All @@ -239,13 +263,16 @@ jobs:
uses: actions/checkout@v3
with:
path: ${{ env.WORKDIR }}
- run: |
echo "${{ vars.CI_CONFIG_HC_IP50 }}" > tests/integration/integration_config.yml
cat tests/integration/integration_config.yml
echo "sc_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_PASSWORD }}" >> tests/integration/integration_config.yml
echo "smb_password: ${{ secrets.CI_CONFIG_HC_IP50_SMB_PASSWORD }}" >> tests/integration/integration_config.yml
echo "sc_replication_dest_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_REPLICATION_DEST_PASSWORD }}" >> tests/integration/integration_config.yml
ls -al tests/integration/integration_config.yml
# ${{ env.WORKDIR }} cannot be used
- uses: ./work-dir/ansible_collections/scale_computing/hypercore/.github/actions/make-integ-config
with:
ci_config_all: ${{ vars.CI_CONFIG_HC_IP50 }}
sc_host: https://10.5.11.200
sc_username: admin
sc_password: ${{ secrets.CI_CONFIG_HC_IP200_SC_PASSWORD }}
smb_password: ${{ secrets.CI_CONFIG_HC_IP50_SMB_PASSWORD }}
sc_replication_dest_password: ${{ secrets.CI_CONFIG_HC_IP50_SC_REPLICATION_DEST_PASSWORD }}
working_directory: ${{ env.WORKDIR }}
- run: |
cd tests/integration/cleanup && ./smb_cleanup.sh \
"$(cat ../integration_config.yml | yq '.smb_server' | sed -e 's/^"//' -e 's/"$//')" \
Expand Down