diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 56c45605..f73264cf 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -14,7 +14,9 @@ jobs: env: source_dir: "cloud_awsops" outputs: - test_targets: ${{ steps.display.outputs.test_targets }} + 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 @@ -25,68 +27,46 @@ jobs: - name: List changes for pull request id: splitter - uses: ansible-network/github_actions/.github/actions/ansible_test_splitter@main + uses: abikouo/github_actions/.github/actions/ansible_test_splitter@test_splitter_07202023 with: collections_to_test: ${{ env.source_dir }} total_jobs: 4 - - name: display targets - id: display - run: echo "test_targets=${{ steps.splitter.outputs.test_targets }}" >> $GITHUB_OUTPUT - shell: bash - build_matrix: - runs-on: ubuntu-latest - if: ${{ needs.splitter.outputs.test_targets != '' }} - needs: - - splitter - outputs: - test_matrix: ${{ steps.generate-workflow.outputs.targets }} - test_targets: ${{ needs.splitter.outputs.test_targets }} - steps: - - name: Generate workflow id - id: generate-workflow + - name: Display splitter output run: | - import os, json - targets=[d.split(':', maxsplit=1)[0] for d in os.environ.get('TEST_TARGETS').split(";")] - output_path = os.environ.get('GITHUB_OUTPUT') - with open(output_path, "a", encoding="utf-8") as fw: - fw.write(f'targets={json.dumps(targets)}\n') - shell: python - env: - TEST_TARGETS: ${{ needs.splitter.outputs.test_targets }} - - - name: Display matrix elements - run: echo "Workflow list => ${{ steps.generate-workflow.outputs.targets }}" + 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: - - build_matrix + - splitter + if: ${{ needs.splitter.outputs.test_targets != '' }} env: source: "./source" ansible_version: "stable-2.14" python_version: "3.9" - SPLITTER_TARGETS: ${{ needs.build_matrix.outputs.test_targets }} strategy: fail-fast: false matrix: - workflow-id: ${{ fromJson(needs.build_matrix.outputs.test_matrix) }} + workflow-id: ${{ fromJson(needs.splitter.outputs.test_jobs) }} name: "integration-${{ matrix.workflow-id }}" steps: - - name: Read ansible-test targets + - name: setup python + uses: actions/setup-python@v4 + with: + python-version: "3.9" + + - name: Read target id: read-targets run: | - import os - workflow_id = os.environ.get('TEST_WORKFLOW_ID') - all_targets = os.environ.get('SPLITTER_TARGETS') - workflow_targets={d.split(':', maxsplit=1)[0]: d.split(':', maxsplit=1)[1] for d in all_targets.split(";")}[workflow_id] - targets = " ".join(workflow_targets.split(",")) - output_path = os.environ.get('GITHUB_OUTPUT') - with open(output_path, "a", encoding="utf-8") as fw: - fw.write(f"ansible_test_targets={targets}\n") - shell: python + pip install -U jq + TARGETS=$(echo '$SPLITTER_TEST_TARGETS' | jq '.${{ matrix.workflow-id }}') + echo "ansible_test_targets=${TARGETS}" >> $GITHUB_OUTPUT + shell: bash env: - TEST_WORKFLOW_ID: "${{ matrix.workflow-id }}" + SPLITTER_TEST_TARGETS: ${{ needs.test_splitter.outputs.test_targets_json }} - name: Checkout collection uses: actions/checkout@v3