From a0fcd3386594d357f67bdb148583ffd24af26fef Mon Sep 17 00:00:00 2001 From: Mark Mercado Date: Sat, 30 Dec 2023 17:10:28 -0500 Subject: [PATCH 01/11] Iterate refactor integration tests --- .github/workflows/ansible-test-integration.yml | 5 +++-- .github/workflows/pull-request-integration.yml | 5 +++-- changelogs/fragments/338-refactor-integration-tests.yml | 2 ++ 3 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 changelogs/fragments/338-refactor-integration-tests.yml diff --git a/.github/workflows/ansible-test-integration.yml b/.github/workflows/ansible-test-integration.yml index d2e84dbd..4cea6327 100644 --- a/.github/workflows/ansible-test-integration.yml +++ b/.github/workflows/ansible-test-integration.yml @@ -16,6 +16,7 @@ jobs: name: Integration (Ⓐ${{ matrix.versions.ansible }} on ${{ matrix.versions.python }} / ${{ matrix.module }}) strategy: fail-fast: false + max-parallel: 5 matrix: # https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html versions: @@ -33,7 +34,7 @@ jobs: - digital_ocean_database_info - digital_ocean_domain - digital_ocean_domain_info - - digital_ocean_domain_record + # - digital_ocean_domain_record # No test - digital_ocean_domain_record_info - digital_ocean_droplet - digital_ocean_droplet_info @@ -47,7 +48,7 @@ jobs: - digital_ocean_load_balancer - digital_ocean_load_balancer_info - digital_ocean_monitoring_alerts - - digital_ocean_monitoring_alerts_info + # - digital_ocean_monitoring_alerts_info # No test - digital_ocean_project - digital_ocean_project_info - digital_ocean_project_resource_info diff --git a/.github/workflows/pull-request-integration.yml b/.github/workflows/pull-request-integration.yml index 227658cf..d11c7853 100644 --- a/.github/workflows/pull-request-integration.yml +++ b/.github/workflows/pull-request-integration.yml @@ -23,6 +23,7 @@ jobs: timeout-minutes: 60 strategy: fail-fast: false + max-parallel: 5 matrix: versions: - ansible: stable-2.14 @@ -39,7 +40,7 @@ jobs: - digital_ocean_database_info - digital_ocean_domain - digital_ocean_domain_info - - digital_ocean_domain_record + # - digital_ocean_domain_record # No test - digital_ocean_domain_record_info - digital_ocean_droplet - digital_ocean_droplet_info @@ -53,7 +54,7 @@ jobs: - digital_ocean_load_balancer - digital_ocean_load_balancer_info - digital_ocean_monitoring_alerts - - digital_ocean_monitoring_alerts_info + # - digital_ocean_monitoring_alerts_info # No test - digital_ocean_project - digital_ocean_project_info - digital_ocean_project_resource_info diff --git a/changelogs/fragments/338-refactor-integration-tests.yml b/changelogs/fragments/338-refactor-integration-tests.yml new file mode 100644 index 00000000..c76d538a --- /dev/null +++ b/changelogs/fragments/338-refactor-integration-tests.yml @@ -0,0 +1,2 @@ +trivial: + - ci - refactor integration test workflows (https://github.com/ansible-collections/community.digitalocean/pull/338). From eff69c0ee2e8db4ca0d5d6aaee3ccf3b066ae4f9 Mon Sep 17 00:00:00 2001 From: Mark Mercado Date: Sat, 30 Dec 2023 18:23:52 -0500 Subject: [PATCH 02/11] Name Droplets uniquely --- .github/workflows/ansible-test-integration.yml | 5 +++++ .github/workflows/pull-request-integration.yml | 3 +++ tests/integration/integration_config.yml.template | 1 + .../targets/digital_ocean_droplet/defaults/main.yml | 2 +- .../targets/digital_ocean_floating_ip/defaults/main.yml | 2 +- .../targets/digital_ocean_load_balancer/defaults/main.yml | 2 +- .../digital_ocean_monitoring_alerts/defaults/main.yml | 2 +- .../targets/digital_ocean_snapshot/defaults/main.yml | 2 +- 8 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ansible-test-integration.yml b/.github/workflows/ansible-test-integration.yml index 4cea6327..282616f8 100644 --- a/.github/workflows/ansible-test-integration.yml +++ b/.github/workflows/ansible-test-integration.yml @@ -8,6 +8,11 @@ concurrency: group: ${{ github.workflow }} cancel-in-progress: false +env: + # NOTE: Yes, the origination is not from a PR :smile: but we do have + # integration tests on PR and we want the cloud resources uniquely named + PR_NUMBER: 0 + jobs: integration: runs-on: ubuntu-22.04 diff --git a/.github/workflows/pull-request-integration.yml b/.github/workflows/pull-request-integration.yml index d11c7853..194906a0 100644 --- a/.github/workflows/pull-request-integration.yml +++ b/.github/workflows/pull-request-integration.yml @@ -15,6 +15,9 @@ concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number }} cancel-in-progress: true +env: + PR_NUMBER: ${{ github.event.pull_request.number }} + jobs: test-integration: runs-on: ubuntu-22.04 diff --git a/tests/integration/integration_config.yml.template b/tests/integration/integration_config.yml.template index d742bfd2..9803b403 100644 --- a/tests/integration/integration_config.yml.template +++ b/tests/integration/integration_config.yml.template @@ -2,3 +2,4 @@ do_api_key: ${DO_API_KEY} aws_access_key_id: ${AWS_ACCESS_KEY_ID} aws_secret_access_key: ${AWS_SECRET_ACCESS_KEY} +pr_number: ${PR_NUMBER} diff --git a/tests/integration/targets/digital_ocean_droplet/defaults/main.yml b/tests/integration/targets/digital_ocean_droplet/defaults/main.yml index fda49c13..9ab0fe9e 100644 --- a/tests/integration/targets/digital_ocean_droplet/defaults/main.yml +++ b/tests/integration/targets/digital_ocean_droplet/defaults/main.yml @@ -1,5 +1,5 @@ do_region: nyc1 -droplet_name: gh-ci-droplet +droplet_name: gh-ci-droplet-0-{{ pr_number }} droplet_image: ubuntu-22-04-x64 droplet_size: s-1vcpu-1gb droplet_new_size: s-1vcpu-2gb diff --git a/tests/integration/targets/digital_ocean_floating_ip/defaults/main.yml b/tests/integration/targets/digital_ocean_floating_ip/defaults/main.yml index 4236cb4b..f80c4eed 100644 --- a/tests/integration/targets/digital_ocean_floating_ip/defaults/main.yml +++ b/tests/integration/targets/digital_ocean_floating_ip/defaults/main.yml @@ -1,5 +1,5 @@ do_region: nyc1 -droplet_name: gh-ci-droplet +droplet_name: gh-ci-droplet-1-{{ pr_number }} droplet_image: ubuntu-22-04-x64 droplet_size: s-1vcpu-1gb project_name: gh-ci-project diff --git a/tests/integration/targets/digital_ocean_load_balancer/defaults/main.yml b/tests/integration/targets/digital_ocean_load_balancer/defaults/main.yml index 333f8714..d1649b1d 100644 --- a/tests/integration/targets/digital_ocean_load_balancer/defaults/main.yml +++ b/tests/integration/targets/digital_ocean_load_balancer/defaults/main.yml @@ -1,5 +1,5 @@ do_region: nyc1 -droplet_name: gh-ci-droplet +droplet_name: gh-ci-droplet-2-{{ pr_number }} droplet_image: ubuntu-22-04-x64 droplet_size: s-1vcpu-1gb lb_name: gh-ci-loadbalancer diff --git a/tests/integration/targets/digital_ocean_monitoring_alerts/defaults/main.yml b/tests/integration/targets/digital_ocean_monitoring_alerts/defaults/main.yml index a1d90ea4..f3267faa 100644 --- a/tests/integration/targets/digital_ocean_monitoring_alerts/defaults/main.yml +++ b/tests/integration/targets/digital_ocean_monitoring_alerts/defaults/main.yml @@ -1,5 +1,5 @@ do_region: nyc1 -droplet_name: gh-ci-droplet +droplet_name: gh-ci-droplet-3-{{ pr_number }} droplet_image: ubuntu-22-04-x64 droplet_size: s-1vcpu-1gb alert_email: mamercad@gmail.com diff --git a/tests/integration/targets/digital_ocean_snapshot/defaults/main.yml b/tests/integration/targets/digital_ocean_snapshot/defaults/main.yml index 98e6f9fb..093f4606 100644 --- a/tests/integration/targets/digital_ocean_snapshot/defaults/main.yml +++ b/tests/integration/targets/digital_ocean_snapshot/defaults/main.yml @@ -1,5 +1,5 @@ do_region: nyc1 -droplet_name: gh-ci-droplet +droplet_name: gh-ci-droplet-4-{{ pr_number }} droplet_image: ubuntu-22-04-x64 droplet_size: s-1vcpu-1gb snapshot_name: gh-ci-snapshot From ab3e8d12a521dcda5867f4d7cf929e816639acc6 Mon Sep 17 00:00:00 2001 From: Mark Mercado Date: Sat, 30 Dec 2023 18:53:24 -0500 Subject: [PATCH 03/11] Just ensure not changed --- .../targets/digital_ocean_kubernetes_info/tasks/main.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/integration/targets/digital_ocean_kubernetes_info/tasks/main.yml b/tests/integration/targets/digital_ocean_kubernetes_info/tasks/main.yml index a0787f33..4648e40b 100644 --- a/tests/integration/targets/digital_ocean_kubernetes_info/tasks/main.yml +++ b/tests/integration/targets/digital_ocean_kubernetes_info/tasks/main.yml @@ -16,8 +16,7 @@ register: result ignore_errors: true # expected to fail - - name: Verify Kubernetes cluster information is not found + - name: Verify Kubernetes cluster information is not changed ansible.builtin.assert: that: - not result.changed - - not result.data.name is defined From 64eeaa4e5c97020437ed9db2c340a3f85f8cb4d3 Mon Sep 17 00:00:00 2001 From: Mark Mercado Date: Sat, 30 Dec 2023 18:53:37 -0500 Subject: [PATCH 04/11] Disable this broken test --- .../targets/digital_ocean_project_resource_info/aliases | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/integration/targets/digital_ocean_project_resource_info/aliases b/tests/integration/targets/digital_ocean_project_resource_info/aliases index e69de29b..ad7ccf7a 100644 --- a/tests/integration/targets/digital_ocean_project_resource_info/aliases +++ b/tests/integration/targets/digital_ocean_project_resource_info/aliases @@ -0,0 +1 @@ +unsupported From 98ff6f28923a7f793d335a0213cbadc80aa1da91 Mon Sep 17 00:00:00 2001 From: Mark Mercado Date: Sat, 30 Dec 2023 18:55:40 -0500 Subject: [PATCH 05/11] Uniquely name K8s resources --- .../targets/digital_ocean_kubernetes/defaults/main.yml | 8 ++++---- .../digital_ocean_kubernetes_info/defaults/main.yml | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/integration/targets/digital_ocean_kubernetes/defaults/main.yml b/tests/integration/targets/digital_ocean_kubernetes/defaults/main.yml index 6dd5f742..3281135d 100644 --- a/tests/integration/targets/digital_ocean_kubernetes/defaults/main.yml +++ b/tests/integration/targets/digital_ocean_kubernetes/defaults/main.yml @@ -1,15 +1,15 @@ do_region: nyc1 -cluster_name: gh-ci-k8s +cluster_name: gh-ci-k8s-0-{{ pr_number }} cluster_version: latest cluster_node_pools: - - name: gh-ci-k8s-workers + - name: gh-ci-k8s-workers-0-{{ pr_number }} size: s-1vcpu-2gb count: 1 -cluster_ha_name: gh-ci-ha-k8s +cluster_ha_name: gh-ci-ha-k8s-1-{{ pr_number }} cluster_ha_version: latest cluster_ha_node_pools: - - name: gh-ci-k8s-ha-workers + - name: gh-ci-k8s-ha-workers-1-{{ pr_number }} size: s-1vcpu-2gb count: 3 diff --git a/tests/integration/targets/digital_ocean_kubernetes_info/defaults/main.yml b/tests/integration/targets/digital_ocean_kubernetes_info/defaults/main.yml index c1f5ba32..905687a3 100644 --- a/tests/integration/targets/digital_ocean_kubernetes_info/defaults/main.yml +++ b/tests/integration/targets/digital_ocean_kubernetes_info/defaults/main.yml @@ -1,8 +1,8 @@ do_region: nyc1 -cluster_name: gh-ci-k8s +cluster_name: gh-ci-k8s-2-{{ pr_number }} cluster_version: latest cluster_node_pools: - - name: gh-ci-k8s-workers + - name: gh-ci-k8s-workers-2-{{ pr_number }} size: s-1vcpu-2gb count: 1 From dd536c48a6c8e527e7217d59ce79c2e0837a4b84 Mon Sep 17 00:00:00 2001 From: Mark Mercado Date: Sat, 30 Dec 2023 18:59:04 -0500 Subject: [PATCH 06/11] Uniquely name volumes and projects --- .../targets/digital_ocean_block_storage/defaults/main.yml | 4 ++-- .../targets/digital_ocean_snapshot/defaults/main.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/integration/targets/digital_ocean_block_storage/defaults/main.yml b/tests/integration/targets/digital_ocean_block_storage/defaults/main.yml index 0e52c2cb..265b5a21 100644 --- a/tests/integration/targets/digital_ocean_block_storage/defaults/main.yml +++ b/tests/integration/targets/digital_ocean_block_storage/defaults/main.yml @@ -1,7 +1,7 @@ do_region: nyc1 -volume_name: gh-ci-volume +volume_name: gh-ci-volume-0-{{ pr_number }} volume_size: 15 volume_down_size: 10 volume_up_size: 20 timeout: 900 -project_name: gh-ci-project +project_name: gh-ci-project-0-{{ pr_number }} diff --git a/tests/integration/targets/digital_ocean_snapshot/defaults/main.yml b/tests/integration/targets/digital_ocean_snapshot/defaults/main.yml index 093f4606..ad696e88 100644 --- a/tests/integration/targets/digital_ocean_snapshot/defaults/main.yml +++ b/tests/integration/targets/digital_ocean_snapshot/defaults/main.yml @@ -3,7 +3,7 @@ droplet_name: gh-ci-droplet-4-{{ pr_number }} droplet_image: ubuntu-22-04-x64 droplet_size: s-1vcpu-1gb snapshot_name: gh-ci-snapshot -volume_name: gh-ci-volume +volume_name: gh-ci-volume-4-{{ pr_number }} volume_size: 15 volume_down_size: 10 volume_up_size: 20 From 3cc8c83ce8b8293a6473ae81c6172b03a99e48df Mon Sep 17 00:00:00 2001 From: Mark Mercado Date: Sat, 30 Dec 2023 19:10:56 -0500 Subject: [PATCH 07/11] Just use the same project --- .../targets/digital_ocean_block_storage/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/targets/digital_ocean_block_storage/defaults/main.yml b/tests/integration/targets/digital_ocean_block_storage/defaults/main.yml index 265b5a21..b9c97fa8 100644 --- a/tests/integration/targets/digital_ocean_block_storage/defaults/main.yml +++ b/tests/integration/targets/digital_ocean_block_storage/defaults/main.yml @@ -4,4 +4,4 @@ volume_size: 15 volume_down_size: 10 volume_up_size: 20 timeout: 900 -project_name: gh-ci-project-0-{{ pr_number }} +project_name: gh-ci-project From bc4fd32ca86e9a482cb70fed0c8bc00fdaa10061 Mon Sep 17 00:00:00 2001 From: Mark Mercado Date: Sat, 30 Dec 2023 19:12:12 -0500 Subject: [PATCH 08/11] Back to as many as possible --- .github/workflows/ansible-test-integration.yml | 1 - .github/workflows/pull-request-integration.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/ansible-test-integration.yml b/.github/workflows/ansible-test-integration.yml index 282616f8..c43ee4cb 100644 --- a/.github/workflows/ansible-test-integration.yml +++ b/.github/workflows/ansible-test-integration.yml @@ -21,7 +21,6 @@ jobs: name: Integration (Ⓐ${{ matrix.versions.ansible }} on ${{ matrix.versions.python }} / ${{ matrix.module }}) strategy: fail-fast: false - max-parallel: 5 matrix: # https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html versions: diff --git a/.github/workflows/pull-request-integration.yml b/.github/workflows/pull-request-integration.yml index 194906a0..4ec1cf58 100644 --- a/.github/workflows/pull-request-integration.yml +++ b/.github/workflows/pull-request-integration.yml @@ -26,7 +26,6 @@ jobs: timeout-minutes: 60 strategy: fail-fast: false - max-parallel: 5 matrix: versions: - ansible: stable-2.14 From 6e288bdbb4de111bf14fc477fdd83e2b46e78e02 Mon Sep 17 00:00:00 2001 From: Mark Mercado Date: Sun, 31 Dec 2023 11:18:54 -0500 Subject: [PATCH 09/11] Disabled is more appropriate --- tests/integration/targets/digital_ocean_cdn_endpoints/aliases | 2 +- .../targets/digital_ocean_domain_record_info/aliases | 2 +- .../integration/targets/digital_ocean_monitoring_alerts/aliases | 2 +- .../targets/digital_ocean_project_resource_info/aliases | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/integration/targets/digital_ocean_cdn_endpoints/aliases b/tests/integration/targets/digital_ocean_cdn_endpoints/aliases index ad7ccf7a..7a68b11d 100644 --- a/tests/integration/targets/digital_ocean_cdn_endpoints/aliases +++ b/tests/integration/targets/digital_ocean_cdn_endpoints/aliases @@ -1 +1 @@ -unsupported +disabled diff --git a/tests/integration/targets/digital_ocean_domain_record_info/aliases b/tests/integration/targets/digital_ocean_domain_record_info/aliases index ad7ccf7a..7a68b11d 100644 --- a/tests/integration/targets/digital_ocean_domain_record_info/aliases +++ b/tests/integration/targets/digital_ocean_domain_record_info/aliases @@ -1 +1 @@ -unsupported +disabled diff --git a/tests/integration/targets/digital_ocean_monitoring_alerts/aliases b/tests/integration/targets/digital_ocean_monitoring_alerts/aliases index ad7ccf7a..7a68b11d 100644 --- a/tests/integration/targets/digital_ocean_monitoring_alerts/aliases +++ b/tests/integration/targets/digital_ocean_monitoring_alerts/aliases @@ -1 +1 @@ -unsupported +disabled diff --git a/tests/integration/targets/digital_ocean_project_resource_info/aliases b/tests/integration/targets/digital_ocean_project_resource_info/aliases index ad7ccf7a..7a68b11d 100644 --- a/tests/integration/targets/digital_ocean_project_resource_info/aliases +++ b/tests/integration/targets/digital_ocean_project_resource_info/aliases @@ -1 +1 @@ -unsupported +disabled From 0517730b46cee683e2b98c6ff04099e65ac907cd Mon Sep 17 00:00:00 2001 From: Mark Mercado Date: Sun, 31 Dec 2023 13:07:11 -0500 Subject: [PATCH 10/11] Drop the parallelism --- .github/workflows/ansible-test-integration.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ansible-test-integration.yml b/.github/workflows/ansible-test-integration.yml index c43ee4cb..f0729fd6 100644 --- a/.github/workflows/ansible-test-integration.yml +++ b/.github/workflows/ansible-test-integration.yml @@ -21,6 +21,7 @@ jobs: name: Integration (Ⓐ${{ matrix.versions.ansible }} on ${{ matrix.versions.python }} / ${{ matrix.module }}) strategy: fail-fast: false + max-parallel: 1 matrix: # https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html versions: From 530681b1cda85bcafe1766d9f2bb3a6797623de8 Mon Sep 17 00:00:00 2001 From: Mark Mercado Date: Sun, 31 Dec 2023 19:05:37 -0500 Subject: [PATCH 11/11] Run serially --- .github/workflows/pull-request-integration.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pull-request-integration.yml b/.github/workflows/pull-request-integration.yml index 4ec1cf58..92514296 100644 --- a/.github/workflows/pull-request-integration.yml +++ b/.github/workflows/pull-request-integration.yml @@ -26,6 +26,7 @@ jobs: timeout-minutes: 60 strategy: fail-fast: false + max-parallel: 1 matrix: versions: - ansible: stable-2.14