mirror of
https://github.com/ansible/awx.git
synced 2026-03-11 14:39:30 -02:30
Enable collection integration tests on GHA
There are a number of changes here: - Abstract out a GHA composite action for running the dev environment - Update the e2e tests to use that new abstracted action - Introduce a new (matrixed) job for running collection integration tests. This splits the jobs up based on filename. - Collect coverage info and generate an html report that people can download easily to see collection coverage info. - Do some hacks to delete the intermediary coverage file artifacts which aren't needed after the job finishes. Signed-off-by: Rick Elrod <rick@elrod.me>
This commit is contained in:
89
.github/actions/run_awx_devel/action.yml
vendored
Normal file
89
.github/actions/run_awx_devel/action.yml
vendored
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
# This currently *always* uses the "warm build cache" image
|
||||||
|
# We should do something to allow forcing a rebuild, probably by looking for
|
||||||
|
# some string in the commit message or something.
|
||||||
|
|
||||||
|
name: Run AWX (devel environment)
|
||||||
|
description: Runs AWX with `make docker-compose`
|
||||||
|
inputs:
|
||||||
|
github-token:
|
||||||
|
description: GitHub Token for registry access
|
||||||
|
required: true
|
||||||
|
build-ui:
|
||||||
|
description: Should the UI be built?
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
outputs:
|
||||||
|
ip:
|
||||||
|
description: The IP of the tools_awx_1 container
|
||||||
|
value: ${{ steps.data.outputs.ip }}
|
||||||
|
admin-token:
|
||||||
|
description: OAuth token for admin user
|
||||||
|
value: ${{ steps.data.outputs.admin_token }}
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
- name: Get python version from Makefile
|
||||||
|
shell: bash
|
||||||
|
run: echo py_version=`make PYTHON_VERSION` >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Upgrade ansible-core
|
||||||
|
shell: bash
|
||||||
|
run: python3 -m pip install --upgrade ansible-core
|
||||||
|
|
||||||
|
- name: Install system deps
|
||||||
|
shell: bash
|
||||||
|
run: sudo apt-get install -y gettext
|
||||||
|
|
||||||
|
- name: Log in to registry
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "${{ inputs.github-token }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
|
||||||
|
|
||||||
|
- name: Pre-pull latest available devel image and build HEAD on top of it
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
docker pull ghcr.io/${{ github.repository_owner }}/awx_devel:${{ github.base_ref }}
|
||||||
|
DEV_DOCKER_TAG_BASE=ghcr.io/${{ github.repository_owner }} \
|
||||||
|
COMPOSE_TAG=${{ github.base_ref }} \
|
||||||
|
make docker-compose-build
|
||||||
|
|
||||||
|
- name: Start AWX
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
DEV_DOCKER_TAG_BASE=ghcr.io/${{ github.repository_owner }} \
|
||||||
|
COMPOSE_TAG=${{ github.base_ref }} \
|
||||||
|
COMPOSE_UP_OPTS="-d" \
|
||||||
|
make docker-compose
|
||||||
|
|
||||||
|
- name: Update default AWX password
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' -k https://localhost:8043/api/v2/ping/)" != "200" ]]
|
||||||
|
do
|
||||||
|
echo "Waiting for AWX..."
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
echo "AWX is up, updating the password..."
|
||||||
|
docker exec -i tools_awx_1 sh <<-EOSH
|
||||||
|
awx-manage update_password --username=admin --password=password
|
||||||
|
EOSH
|
||||||
|
|
||||||
|
- name: Build UI
|
||||||
|
# This must be a string comparison in composite actions:
|
||||||
|
# https://github.com/actions/runner/issues/2238
|
||||||
|
if: ${{ inputs.build-ui == 'true' }}
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
docker exec -i tools_awx_1 sh <<-EOSH
|
||||||
|
make ui-devel
|
||||||
|
EOSH
|
||||||
|
|
||||||
|
- name: Get instance data
|
||||||
|
id: data
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
AWX_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' tools_awx_1)
|
||||||
|
ADMIN_TOKEN=$(docker exec -i tools_awx_1 awx-manage create_oauth2_token --user admin)
|
||||||
|
echo "ip=$AWX_IP" >> $GITHUB_OUTPUT
|
||||||
|
echo "admin_token=$ADMIN_TOKEN" >> $GITHUB_OUTPUT
|
||||||
19
.github/actions/upload_awx_devel_logs/action.yml
vendored
Normal file
19
.github/actions/upload_awx_devel_logs/action.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
name: Upload logs
|
||||||
|
description: Upload logs from `make docker-compose` devel environment to GitHub as an artifact
|
||||||
|
inputs:
|
||||||
|
log-filename:
|
||||||
|
description: "*Unique* name of the log file"
|
||||||
|
required: true
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
- name: Get AWX logs
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
docker logs tools_awx_1 > ${{ inputs.log-filename }}
|
||||||
|
|
||||||
|
- name: Upload AWX logs as artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: docker-compose-logs
|
||||||
|
path: ${{ inputs.log-filename }}
|
||||||
132
.github/workflows/ci.yml
vendored
132
.github/workflows/ci.yml
vendored
@@ -117,3 +117,135 @@ jobs:
|
|||||||
# needed due to cgroupsv2. This is fixed, but a stable release
|
# needed due to cgroupsv2. This is fixed, but a stable release
|
||||||
# with the fix has not been made yet.
|
# with the fix has not been made yet.
|
||||||
ANSIBLE_TEST_PREFER_PODMAN: 1
|
ANSIBLE_TEST_PREFER_PODMAN: 1
|
||||||
|
|
||||||
|
collection-integration:
|
||||||
|
name: awx_collection integration
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
target-regex:
|
||||||
|
- name: a-h
|
||||||
|
regex: ^[a-h]
|
||||||
|
- name: i-p
|
||||||
|
regex: ^[i-p]
|
||||||
|
- name: r-z0-9
|
||||||
|
regex: ^[r-z0-9]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- uses: ./.github/actions/run_awx_devel
|
||||||
|
id: awx
|
||||||
|
with:
|
||||||
|
build-ui: false
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Install dependencies for running tests
|
||||||
|
run: |
|
||||||
|
python3 -m pip install -e ./awxkit/
|
||||||
|
python3 -m pip install -r awx_collection/requirements.txt
|
||||||
|
|
||||||
|
- name: Run integration tests
|
||||||
|
run: |
|
||||||
|
echo "::remove-matcher owner=python::" # Disable annoying annotations from setup-python
|
||||||
|
echo '[general]' > ~/.tower_cli.cfg
|
||||||
|
echo 'host = https://${{ steps.awx.outputs.ip }}:8043' >> ~/.tower_cli.cfg
|
||||||
|
echo 'oauth_token = ${{ steps.awx.outputs.admin-token }}' >> ~/.tower_cli.cfg
|
||||||
|
echo 'verify_ssl = false' >> ~/.tower_cli.cfg
|
||||||
|
TARGETS="$(ls awx_collection/tests/integration/targets | grep '${{ matrix.target-regex.regex }}' | tr '\n' ' ')"
|
||||||
|
make COLLECTION_VERSION=100.100.100-git COLLECTION_TEST_TARGET="--coverage --requirements $TARGETS" test_collection_integration
|
||||||
|
env:
|
||||||
|
ANSIBLE_TEST_PREFER_PODMAN: 1
|
||||||
|
|
||||||
|
# Upload coverage report as artifact
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: coverage-${{ matrix.target-regex.name }}
|
||||||
|
path: ~/.ansible/collections/ansible_collections/awx/awx/tests/output/coverage/
|
||||||
|
|
||||||
|
- uses: ./.github/actions/upload_awx_devel_logs
|
||||||
|
with:
|
||||||
|
log-filename: collection-integration-${{ matrix.target-regex.name }}.log
|
||||||
|
|
||||||
|
collection-integration-coverage-combine:
|
||||||
|
name: combine awx_collection integration coverage
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- collection-integration
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Upgrade ansible-core
|
||||||
|
run: python3 -m pip install --upgrade ansible-core
|
||||||
|
|
||||||
|
- name: Download coverage artifacts
|
||||||
|
uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
path: coverage
|
||||||
|
|
||||||
|
- name: Combine coverage
|
||||||
|
run: |
|
||||||
|
make COLLECTION_VERSION=100.100.100-git install_collection
|
||||||
|
mkdir -p ~/.ansible/collections/ansible_collections/awx/awx/tests/output/coverage
|
||||||
|
cd coverage
|
||||||
|
for i in coverage-*; do
|
||||||
|
cp -rv $i/* ~/.ansible/collections/ansible_collections/awx/awx/tests/output/coverage/
|
||||||
|
done
|
||||||
|
cd ~/.ansible/collections/ansible_collections/awx/awx
|
||||||
|
ansible-test coverage combine --requirements
|
||||||
|
ansible-test coverage html
|
||||||
|
echo '## AWX Collection Integration Coverage' >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo '```' >> $GITHUB_STEP_SUMMARY
|
||||||
|
ansible-test coverage report >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo '```' >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo '## AWX Collection Integration Coverage HTML' >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo 'Download the HTML artifacts to view the coverage report.' >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
|
# This is a huge hack, there's no official action for removing artifacts currently.
|
||||||
|
# Also ACTIONS_RUNTIME_URL and ACTIONS_RUNTIME_TOKEN aren't available in normal run
|
||||||
|
# steps, so we have to use github-script to get them.
|
||||||
|
#
|
||||||
|
# The advantage of doing this, though, is that we save on artifact storage space.
|
||||||
|
|
||||||
|
- name: Get secret artifact runtime URL
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
id: get-runtime-url
|
||||||
|
with:
|
||||||
|
result-encoding: string
|
||||||
|
script: |
|
||||||
|
const { ACTIONS_RUNTIME_URL } = process.env;
|
||||||
|
return ACTIONS_RUNTIME_URL;
|
||||||
|
|
||||||
|
- name: Get secret artifact runtime token
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
id: get-runtime-token
|
||||||
|
with:
|
||||||
|
result-encoding: string
|
||||||
|
script: |
|
||||||
|
const { ACTIONS_RUNTIME_TOKEN } = process.env;
|
||||||
|
return ACTIONS_RUNTIME_TOKEN;
|
||||||
|
|
||||||
|
- name: Remove intermediary artifacts
|
||||||
|
env:
|
||||||
|
ACTIONS_RUNTIME_URL: ${{ steps.get-runtime-url.outputs.result }}
|
||||||
|
ACTIONS_RUNTIME_TOKEN: ${{ steps.get-runtime-token.outputs.result }}
|
||||||
|
run: |
|
||||||
|
echo "::add-mask::${ACTIONS_RUNTIME_TOKEN}"
|
||||||
|
artifacts=$(
|
||||||
|
curl -H "Authorization: Bearer $ACTIONS_RUNTIME_TOKEN" \
|
||||||
|
${ACTIONS_RUNTIME_URL}_apis/pipelines/workflows/${{ github.run_id }}/artifacts?api-version=6.0-preview \
|
||||||
|
| jq -r '.value | .[] | select(.name | startswith("coverage-")) | .url'
|
||||||
|
)
|
||||||
|
|
||||||
|
for artifact in $artifacts; do
|
||||||
|
curl -i -X DELETE -H "Accept: application/json;api-version=6.0-preview" -H "Authorization: Bearer $ACTIONS_RUNTIME_TOKEN" "$artifact"
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Upload coverage report as artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: awx-collection-integration-coverage-html
|
||||||
|
path: ~/.ansible/collections/ansible_collections/awx/awx/tests/output/reports/coverage
|
||||||
|
|||||||
50
.github/workflows/e2e_test.yml
vendored
50
.github/workflows/e2e_test.yml
vendored
@@ -21,32 +21,12 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Get python version from Makefile
|
- uses: ./.github/actions/run_awx_devel
|
||||||
run: echo py_version=`make PYTHON_VERSION` >> $GITHUB_ENV
|
id: awx
|
||||||
|
|
||||||
- name: Install python ${{ env.py_version }}
|
|
||||||
uses: actions/setup-python@v4
|
|
||||||
with:
|
with:
|
||||||
python-version: ${{ env.py_version }}
|
build-ui: true
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Install system deps
|
log-filename: e2e-${{ matrix.job }}.log
|
||||||
run: sudo apt-get install -y gettext
|
|
||||||
|
|
||||||
- name: Log in to registry
|
|
||||||
run: |
|
|
||||||
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
|
|
||||||
|
|
||||||
- name: Pre-pull image to warm build cache
|
|
||||||
run: |
|
|
||||||
docker pull ghcr.io/${{ github.repository_owner }}/awx_devel:${{ github.base_ref }}
|
|
||||||
|
|
||||||
- name: Build UI
|
|
||||||
run: |
|
|
||||||
DEV_DOCKER_TAG_BASE=ghcr.io/${{ github.repository_owner }} COMPOSE_TAG=${{ github.base_ref }} make ui-devel
|
|
||||||
|
|
||||||
- name: Start AWX
|
|
||||||
run: |
|
|
||||||
DEV_DOCKER_TAG_BASE=ghcr.io/${{ github.repository_owner }} COMPOSE_TAG=${{ github.base_ref }} make docker-compose &> make-docker-compose-output.log &
|
|
||||||
|
|
||||||
- name: Pull awx_cypress_base image
|
- name: Pull awx_cypress_base image
|
||||||
run: |
|
run: |
|
||||||
@@ -65,18 +45,6 @@ jobs:
|
|||||||
cd ${{ secrets.E2E_PROJECT }}/ui-tests/awx-pf-tests
|
cd ${{ secrets.E2E_PROJECT }}/ui-tests/awx-pf-tests
|
||||||
docker build -t awx-pf-tests .
|
docker build -t awx-pf-tests .
|
||||||
|
|
||||||
- name: Update default AWX password
|
|
||||||
run: |
|
|
||||||
while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' -k https://localhost:8043/api/v2/ping/)" != "200" ]]
|
|
||||||
do
|
|
||||||
echo "Waiting for AWX..."
|
|
||||||
sleep 5;
|
|
||||||
done
|
|
||||||
echo "AWX is up, updating the password..."
|
|
||||||
docker exec -i tools_awx_1 sh <<-EOSH
|
|
||||||
awx-manage update_password --username=admin --password=password
|
|
||||||
EOSH
|
|
||||||
|
|
||||||
- name: Run E2E tests
|
- name: Run E2E tests
|
||||||
env:
|
env:
|
||||||
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
|
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
|
||||||
@@ -86,7 +54,7 @@ jobs:
|
|||||||
export COMMIT_INFO_SHA=$GITHUB_SHA
|
export COMMIT_INFO_SHA=$GITHUB_SHA
|
||||||
export COMMIT_INFO_REMOTE=$GITHUB_REPOSITORY_OWNER
|
export COMMIT_INFO_REMOTE=$GITHUB_REPOSITORY_OWNER
|
||||||
cd ${{ secrets.E2E_PROJECT }}/ui-tests/awx-pf-tests
|
cd ${{ secrets.E2E_PROJECT }}/ui-tests/awx-pf-tests
|
||||||
AWX_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' tools_awx_1)
|
AWX_IP=${{ steps.awx.outputs.ip }}
|
||||||
printenv > .env
|
printenv > .env
|
||||||
echo "Executing tests:"
|
echo "Executing tests:"
|
||||||
docker run \
|
docker run \
|
||||||
@@ -102,8 +70,6 @@ jobs:
|
|||||||
-w /e2e \
|
-w /e2e \
|
||||||
awx-pf-tests run --project .
|
awx-pf-tests run --project .
|
||||||
|
|
||||||
- name: Save AWX logs
|
- uses: ./.github/actions/upload_awx_devel_logs
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
with:
|
||||||
name: AWX-logs-${{ matrix.job }}
|
log-filename: e2e-${{ matrix.job }}.log
|
||||||
path: make-docker-compose-output.log
|
|
||||||
|
|||||||
2
Makefile
2
Makefile
@@ -383,7 +383,7 @@ test_collection_sanity:
|
|||||||
cd $(COLLECTION_INSTALL) && ansible-test sanity $(COLLECTION_SANITY_ARGS)
|
cd $(COLLECTION_INSTALL) && ansible-test sanity $(COLLECTION_SANITY_ARGS)
|
||||||
|
|
||||||
test_collection_integration: install_collection
|
test_collection_integration: install_collection
|
||||||
cd $(COLLECTION_INSTALL) && ansible-test integration $(COLLECTION_TEST_TARGET)
|
cd $(COLLECTION_INSTALL) && ansible-test integration -vvv $(COLLECTION_TEST_TARGET)
|
||||||
|
|
||||||
test_unit:
|
test_unit:
|
||||||
@if [ "$(VENV_BASE)" ]; then \
|
@if [ "$(VENV_BASE)" ]; then \
|
||||||
|
|||||||
@@ -49,8 +49,8 @@
|
|||||||
- name: Cancel the command
|
- name: Cancel the command
|
||||||
ad_hoc_command_cancel:
|
ad_hoc_command_cancel:
|
||||||
command_id: "{{ command.id }}"
|
command_id: "{{ command.id }}"
|
||||||
|
request_timeout: 60
|
||||||
register: results
|
register: results
|
||||||
ignore_errors: true
|
|
||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
that:
|
that:
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
name: "localhost"
|
name: "localhost"
|
||||||
inventory: "Demo Inventory"
|
inventory: "Demo Inventory"
|
||||||
state: present
|
state: present
|
||||||
|
enabled: true
|
||||||
variables:
|
variables:
|
||||||
ansible_connection: local
|
ansible_connection: local
|
||||||
register: result
|
register: result
|
||||||
|
|||||||
@@ -21,14 +21,14 @@
|
|||||||
name: "{{ inv_name }}"
|
name: "{{ inv_name }}"
|
||||||
organization: Default
|
organization: Default
|
||||||
state: present
|
state: present
|
||||||
register: result
|
register: inv_result
|
||||||
|
|
||||||
- name: Create a Host
|
- name: Create a Host
|
||||||
host:
|
host:
|
||||||
name: "{{ host_name4 }}"
|
name: "{{ host_name4 }}"
|
||||||
inventory: "{{ inv_name }}"
|
inventory: "{{ inv_name }}"
|
||||||
state: present
|
state: present
|
||||||
register: result
|
register: host_result
|
||||||
|
|
||||||
- name: Add Host to Group
|
- name: Add Host to Group
|
||||||
group:
|
group:
|
||||||
@@ -37,16 +37,18 @@
|
|||||||
hosts:
|
hosts:
|
||||||
- "{{ host_name4 }}"
|
- "{{ host_name4 }}"
|
||||||
preserve_existing_hosts: true
|
preserve_existing_hosts: true
|
||||||
register: result
|
register: group_result
|
||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
that:
|
that:
|
||||||
- "result is changed"
|
- inv_result is changed
|
||||||
|
- host_result is changed
|
||||||
|
- group_result is changed
|
||||||
|
|
||||||
- name: Create Group 1
|
- name: Create Group 1
|
||||||
group:
|
group:
|
||||||
name: "{{ group_name1 }}"
|
name: "{{ group_name1 }}"
|
||||||
inventory: "{{ result.id }}"
|
inventory: "{{ inv_result.id }}"
|
||||||
state: present
|
state: present
|
||||||
variables:
|
variables:
|
||||||
foo: bar
|
foo: bar
|
||||||
@@ -165,18 +167,6 @@
|
|||||||
that:
|
that:
|
||||||
- group1_host_count == "3"
|
- group1_host_count == "3"
|
||||||
|
|
||||||
- name: Delete Group 2
|
|
||||||
group:
|
|
||||||
name: "{{ group_name2 }}"
|
|
||||||
inventory: "{{ inv_name }}"
|
|
||||||
state: absent
|
|
||||||
register: result
|
|
||||||
|
|
||||||
# In this case, group 2 was last a child of group1 so deleting group1 deleted group2
|
|
||||||
- assert:
|
|
||||||
that:
|
|
||||||
- "result is not changed"
|
|
||||||
|
|
||||||
- name: Delete Group 3
|
- name: Delete Group 3
|
||||||
group:
|
group:
|
||||||
name: "{{ group_name3 }}"
|
name: "{{ group_name3 }}"
|
||||||
@@ -200,6 +190,18 @@
|
|||||||
that:
|
that:
|
||||||
- "result is changed"
|
- "result is changed"
|
||||||
|
|
||||||
|
- name: Delete Group 2
|
||||||
|
group:
|
||||||
|
name: "{{ group_name2 }}"
|
||||||
|
inventory: "{{ inv_name }}"
|
||||||
|
state: absent
|
||||||
|
register: result
|
||||||
|
|
||||||
|
# In this case, group 2 was last a child of group1 so deleting group1 deleted group2
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- "result is not changed"
|
||||||
|
|
||||||
- name: Check module fails with correct msg
|
- name: Check module fails with correct msg
|
||||||
group:
|
group:
|
||||||
name: test-group
|
name: test-group
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
- name: Cancel the job
|
- name: Cancel the job
|
||||||
job_cancel:
|
job_cancel:
|
||||||
job_id: "{{ job.id }}"
|
job_id: "{{ job.id }}"
|
||||||
|
request_timeout: 60
|
||||||
register: results
|
register: results
|
||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
@@ -23,10 +24,10 @@
|
|||||||
fail_if_not_running: true
|
fail_if_not_running: true
|
||||||
register: results
|
register: results
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
# This test can be flaky, so we retry it a few times
|
||||||
- assert:
|
until: results is failed and results.msg == 'Job is not running'
|
||||||
that:
|
retries: 6
|
||||||
- results is failed
|
delay: 5
|
||||||
|
|
||||||
- name: Check module fails with correct msg
|
- name: Check module fails with correct msg
|
||||||
job_cancel:
|
job_cancel:
|
||||||
|
|||||||
@@ -61,6 +61,10 @@
|
|||||||
organization: Default
|
organization: Default
|
||||||
state: absent
|
state: absent
|
||||||
register: result
|
register: result
|
||||||
|
until: result is changed # wait for the project update to settle
|
||||||
|
retries: 6
|
||||||
|
delay: 5
|
||||||
|
|
||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
that:
|
that:
|
||||||
|
|||||||
@@ -220,6 +220,7 @@
|
|||||||
user:
|
user:
|
||||||
controller_username: "{{ username }}-orgadmin"
|
controller_username: "{{ username }}-orgadmin"
|
||||||
controller_password: "{{ username }}-orgadmin"
|
controller_password: "{{ username }}-orgadmin"
|
||||||
|
controller_oauthtoken: false # Hack for CI where we use oauth in config file
|
||||||
username: "{{ username }}"
|
username: "{{ username }}"
|
||||||
first_name: Joe
|
first_name: Joe
|
||||||
password: "{{ 65535 | random | to_uuid }}"
|
password: "{{ 65535 | random | to_uuid }}"
|
||||||
|
|||||||
Reference in New Issue
Block a user