mirror of
https://github.com/ansible/awx.git
synced 2026-01-09 23:12:08 -03:30
Use upload artifact v4 (#6807)
unique-ify name psh, who needs loops Folder management Extracts into current path Co-authored-by: Alan Rominger <arominge@redhat.com>
This commit is contained in:
parent
99b67f1e37
commit
18ea5cc561
@ -13,7 +13,7 @@ runs:
|
|||||||
docker logs tools_awx_1 > ${{ inputs.log-filename }}
|
docker logs tools_awx_1 > ${{ inputs.log-filename }}
|
||||||
|
|
||||||
- name: Upload AWX logs as artifact
|
- name: Upload AWX logs as artifact
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: docker-compose-logs
|
name: docker-compose-logs-${{ inputs.log-filename }}
|
||||||
path: ${{ inputs.log-filename }}
|
path: ${{ inputs.log-filename }}
|
||||||
|
|||||||
28
.github/workflows/ci.yml
vendored
28
.github/workflows/ci.yml
vendored
@ -128,7 +128,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload debug output
|
- name: Upload debug output
|
||||||
if: failure()
|
if: failure()
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: awx-operator-debug-output
|
name: awx-operator-debug-output
|
||||||
path: ${{ env.DEBUG_OUTPUT_DIR }}
|
path: ${{ env.DEBUG_OUTPUT_DIR }}
|
||||||
@ -227,7 +227,7 @@ jobs:
|
|||||||
ANSIBLE_TEST_PREFER_PODMAN: 1
|
ANSIBLE_TEST_PREFER_PODMAN: 1
|
||||||
|
|
||||||
# Upload coverage report as artifact
|
# Upload coverage report as artifact
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v4
|
||||||
if: always()
|
if: always()
|
||||||
with:
|
with:
|
||||||
name: coverage-${{ matrix.target-regex.name }}
|
name: coverage-${{ matrix.target-regex.name }}
|
||||||
@ -258,19 +258,29 @@ jobs:
|
|||||||
- name: Upgrade ansible-core
|
- name: Upgrade ansible-core
|
||||||
run: python3 -m pip install --upgrade ansible-core
|
run: python3 -m pip install --upgrade ansible-core
|
||||||
|
|
||||||
- name: Download coverage artifacts
|
- name: Download coverage artifacts A to H
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
name: coverage-a-h
|
||||||
|
path: coverage
|
||||||
|
|
||||||
|
- name: Download coverage artifacts I to P
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: coverage-i-p
|
||||||
|
path: coverage
|
||||||
|
|
||||||
|
- name: Download coverage artifacts Z to Z
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: coverage-r-z0-9
|
||||||
path: coverage
|
path: coverage
|
||||||
|
|
||||||
- name: Combine coverage
|
- name: Combine coverage
|
||||||
run: |
|
run: |
|
||||||
make COLLECTION_VERSION=100.100.100-git install_collection
|
make COLLECTION_VERSION=100.100.100-git install_collection
|
||||||
mkdir -p ~/.ansible/collections/ansible_collections/awx/awx/tests/output/coverage
|
mkdir -p ~/.ansible/collections/ansible_collections/awx/awx/tests/output/coverage
|
||||||
cd coverage
|
cp -rv coverage/* ~/.ansible/collections/ansible_collections/awx/awx/tests/output/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
|
cd ~/.ansible/collections/ansible_collections/awx/awx
|
||||||
ansible-test coverage combine --requirements
|
ansible-test coverage combine --requirements
|
||||||
ansible-test coverage html
|
ansible-test coverage html
|
||||||
@ -323,7 +333,7 @@ jobs:
|
|||||||
done
|
done
|
||||||
|
|
||||||
- name: Upload coverage report as artifact
|
- name: Upload coverage report as artifact
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: awx-collection-integration-coverage-html
|
name: awx-collection-integration-coverage-html
|
||||||
path: ~/.ansible/collections/ansible_collections/awx/awx/tests/output/reports/coverage
|
path: ~/.ansible/collections/ansible_collections/awx/awx/tests/output/reports/coverage
|
||||||
|
|||||||
@ -832,7 +832,7 @@ class CredentialTypeInjectorField(JSONSchemaField):
|
|||||||
'type': 'string',
|
'type': 'string',
|
||||||
# The environment variable _value_ can be any ascii,
|
# The environment variable _value_ can be any ascii,
|
||||||
# but pexpect will choke on any unicode
|
# but pexpect will choke on any unicode
|
||||||
'pattern': '^[\x00-\x7F]*$',
|
'pattern': '^[\x00-\x7f]*$',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'additionalProperties': False,
|
'additionalProperties': False,
|
||||||
|
|||||||
@ -17,8 +17,8 @@ tables_to_drop = [
|
|||||||
'djkombu_message',
|
'djkombu_message',
|
||||||
'djkombu_queue',
|
'djkombu_queue',
|
||||||
]
|
]
|
||||||
postgres_sql = ([("DROP TABLE IF EXISTS {} CASCADE;".format(table))] for table in tables_to_drop)
|
postgres_sql = (["DROP TABLE IF EXISTS {} CASCADE;".format(table)] for table in tables_to_drop)
|
||||||
sqlite_sql = ([("DROP TABLE IF EXISTS {};".format(table))] for table in tables_to_drop)
|
sqlite_sql = (["DROP TABLE IF EXISTS {};".format(table)] for table in tables_to_drop)
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|||||||
@ -83,7 +83,7 @@ def test_ansi_stdout_filtering(sqlite_copy, Parent, Child, relation, view, downl
|
|||||||
job = Parent()
|
job = Parent()
|
||||||
job.save()
|
job.save()
|
||||||
for i in range(3):
|
for i in range(3):
|
||||||
Child(**{relation: job, 'stdout': '\x1B[0;36mTesting {}\x1B[0m\n'.format(i), 'start_line': i}).save()
|
Child(**{relation: job, 'stdout': '\x1b[0;36mTesting {}\x1b[0m\n'.format(i), 'start_line': i}).save()
|
||||||
url = reverse(view, kwargs={'pk': job.pk})
|
url = reverse(view, kwargs={'pk': job.pk})
|
||||||
|
|
||||||
# ansi codes in ?format=txt should get filtered
|
# ansi codes in ?format=txt should get filtered
|
||||||
@ -96,7 +96,7 @@ def test_ansi_stdout_filtering(sqlite_copy, Parent, Child, relation, view, downl
|
|||||||
# ask for ansi and you'll get it
|
# ask for ansi and you'll get it
|
||||||
fmt = "?format={}".format("ansi_download" if download else "ansi")
|
fmt = "?format={}".format("ansi_download" if download else "ansi")
|
||||||
response = get(url + fmt, user=admin, expect=200)
|
response = get(url + fmt, user=admin, expect=200)
|
||||||
assert smart_str(response.content).splitlines() == ['\x1B[0;36mTesting %d\x1B[0m' % i for i in range(3)]
|
assert smart_str(response.content).splitlines() == ['\x1b[0;36mTesting %d\x1b[0m' % i for i in range(3)]
|
||||||
has_download_header = response.has_header('Content-Disposition')
|
has_download_header = response.has_header('Content-Disposition')
|
||||||
assert has_download_header if download else not has_download_header
|
assert has_download_header if download else not has_download_header
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ def test_colorized_html_stdout(sqlite_copy, Parent, Child, relation, view, get,
|
|||||||
job = Parent()
|
job = Parent()
|
||||||
job.save()
|
job.save()
|
||||||
for i in range(3):
|
for i in range(3):
|
||||||
Child(**{relation: job, 'stdout': '\x1B[0;36mTesting {}\x1B[0m\n'.format(i), 'start_line': i}).save()
|
Child(**{relation: job, 'stdout': '\x1b[0;36mTesting {}\x1b[0m\n'.format(i), 'start_line': i}).save()
|
||||||
url = reverse(view, kwargs={'pk': job.pk}) + '?format=html'
|
url = reverse(view, kwargs={'pk': job.pk}) + '?format=html'
|
||||||
|
|
||||||
response = get(url, user=admin, expect=200)
|
response = get(url, user=admin, expect=200)
|
||||||
|
|||||||
@ -118,8 +118,8 @@ class TestSmartFilterQueryFromString:
|
|||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"filter_string,q_expected",
|
"filter_string,q_expected",
|
||||||
[
|
[
|
||||||
(u'(a=abc\u1F5E3def)', Q(**{u"a": u"abc\u1F5E3def"})),
|
(u'(a=abc\u1f5e3def)', Q(**{u"a": u"abc\u1f5e3def"})),
|
||||||
(u'(ansible_facts__a=abc\u1F5E3def)', Q(**{u"ansible_facts__contains": {u"a": u"abc\u1F5E3def"}})),
|
(u'(ansible_facts__a=abc\u1f5e3def)', Q(**{u"ansible_facts__contains": {u"a": u"abc\u1f5e3def"}})),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_unicode(self, mock_get_host_model, filter_string, q_expected):
|
def test_unicode(self, mock_get_host_model, filter_string, q_expected):
|
||||||
|
|||||||
@ -266,9 +266,9 @@ def random_utf8(*args, **kwargs):
|
|||||||
exception when a character outside of the BMP is sent to `send_keys`.
|
exception when a character outside of the BMP is sent to `send_keys`.
|
||||||
Code pulled from http://stackoverflow.com/a/3220210.
|
Code pulled from http://stackoverflow.com/a/3220210.
|
||||||
"""
|
"""
|
||||||
pattern = re.compile('[^\u0000-\uD7FF\uE000-\uFFFF]', re.UNICODE)
|
pattern = re.compile('[^\u0000-\ud7ff\ue000-\uffff]', re.UNICODE)
|
||||||
length = args[0] if len(args) else kwargs.get('length', 10)
|
length = args[0] if len(args) else kwargs.get('length', 10)
|
||||||
scrubbed = pattern.sub('\uFFFD', ''.join([gen_utf_char() for _ in range(length)]))
|
scrubbed = pattern.sub('\ufffd', ''.join([gen_utf_char() for _ in range(length)]))
|
||||||
|
|
||||||
return scrubbed
|
return scrubbed
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user