Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI - Integration tests updates #58

Merged
merged 3 commits into from
Jul 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 66 additions & 34 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,63 +13,94 @@ on:

jobs:
safe-to-test:
if: ${{ github.event.label.name == 'safe to test' }} || ${{ github.event.action != 'labeled' }}
uses: ansible-network/github_actions/.github/workflows/safe-to-test.yml@main
test:
splitter:
needs:
- safe-to-test
runs-on: ubuntu-latest
env:
source: "./source"
aws_dir: "./amazon_aws"
crypto_dir: "./community.crypto"
ansible_version: "stable-2.14"
python_version: "3.9"
source_dir: "cloud_awsops"
outputs:
test_targets: ${{ steps.splitter.outputs.test_targets }}
test_targets_json: ${{ steps.splitter.outputs.test_targets_json }}
test_jobs: ${{ steps.splitter.outputs.test_jobs }}
steps:
- name: Checkout collection
uses: actions/checkout@v3
with:
path: ${{ env.source }}
path: ${{ env.source_dir }}
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: "0"

- name: Build and install collection
id: install-collection
uses: ansible-network/github_actions/.github/actions/build_install_collection@main
- name: List changes for pull request
id: splitter
uses: ansible-network/github_actions/.github/actions/ansible_test_splitter@main
with:
install_python_dependencies: false
source_path: ${{ env.source }}
collections_to_test: ${{ env.source_dir }}
total_jobs: 2

# checkout and install 'amazon.aws'
- name: checkout ansible-collections/amazon.aws
uses: ansible-network/github_actions/.github/actions/checkout_dependency@main
with:
repository: ansible-collections/amazon.aws
path: ${{ env.amazon_aws }}
ref: main
- name: Display splitter output
run: |
echo "test_targets=${{ steps.splitter.outputs.test_targets }}"
echo "test_targets_json=${{ steps.splitter.outputs.test_targets_json }}"
echo "test_jobs=${{ steps.splitter.outputs.test_jobs }}"
shell: bash
test:
runs-on: ubuntu-latest
needs:
- splitter
if: ${{ needs.splitter.outputs.test_targets != '' }}
env:
source: "./source"
ansible_version: "stable-2.14"
python_version: "3.9"
strategy:
fail-fast: false
matrix:
workflow-id: ${{ fromJson(needs.splitter.outputs.test_jobs) }}
name: "integration-${{ matrix.workflow-id }}"
steps:
- name: Read target
id: read-targets
run: |
import json, os
with open(os.environ.get('GITHUB_OUTPUT'), "a", encoding="utf-8") as fh:
fh.write(f'ansible_test_targets={json.loads(os.environ.get("ALL_TEST_TARGETS")).get(os.environ.get("WORKFLOW_ID"))}\n')
shell: python
env:
ALL_TEST_TARGETS: ${{ needs.splitter.outputs.test_targets_json }}
WORKFLOW_ID: ${{ matrix.workflow-id }}

- name: install amazon.aws collection
uses: ansible-network/github_actions/.github/actions/build_install_collection@main
with:
install_python_dependencies: true
source_path: ${{ env.amazon_aws }}
- name: Display ansible test targets
run: |
echo "ansible_test_targets -> ${{ steps.read-targets.outputs.ansible_test_targets }}"
shell: bash

# checkout and install 'community.crypto'
- name: checkout ansible-collections/community.crypto
uses: ansible-network/github_actions/.github/actions/checkout_dependency@main
- name: Checkout collection
uses: actions/checkout@v3
with:
repository: ansible-collections/community.crypto
path: ${{ env.crypto_dir }}
ref: main
path: ${{ env.source }}
ref: ${{ github.event.pull_request.head.sha }}

- name: install community.crypto collection
- name: Pre install collections dependencies first so the collection install does not
run: >-
ansible-galaxy collection install
--pre "-r${{ env.source }}/tests/integration/requirements.yml"
-p /home/runner/collections/
shell: bash

- name: Build and install collection
id: install
uses: ansible-network/github_actions/.github/actions/build_install_collection@main
with:
install_python_dependencies: false
source_path: ${{ env.crypto_dir }}
source_path: ${{ env.source }}

- name: Create AWS/sts session credentials
uses: ansible-network/github_actions/.github/actions/ansible_aws_test_provider@main
with:
collection_path: ${{ steps.install-collection.outputs.collection_path }}
collection_path: ${{ steps.install.outputs.collection_path }}
ansible_core_ci_key: ${{ secrets.ANSIBLE_CORE_CI_KEY }}

# we use raw git to create a repository in the tests
Expand All @@ -83,7 +114,8 @@ jobs:
- name: Run integration tests
uses: ansible-network/github_actions/.github/actions/ansible_test_integration@main
with:
collection_path: ${{ steps.install-collection.outputs.collection_path }}
collection_path: ${{ steps.install.outputs.collection_path }}
python_version: ${{ env.python_version }}
ansible_version: ${{ env.ansible_version }}
ansible_test_requirement_files: 'test-requirements.txt'
ansible_test_targets: ${{ steps.read-targets.outputs.ansible_test_targets }}
2 changes: 2 additions & 0 deletions test-requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
cryptography
botocore>=1.25.0
boto3>=1.22.0
10 changes: 10 additions & 0 deletions tests/integration/requirements.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
collections:
- name: https://github.com/ansible-collections/amazon.aws.git
type: git
version: main
- name: https://github.com/ansible-collections/community.aws.git
type: git
version: main
- community.crypto
- community.general
Loading